Java学习笔记(三)--方法重载 数组 匿名对象
来源:互联网 发布:剑灵saber捏脸数据 编辑:程序博客网 时间:2024/05/17 01:46
Java中方法的介绍
1.方法:就是完成特定功能的代码块。
2.格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) { 方法体; return 返回值; }
-修饰符:目前就写public static
-返回值类型:用于限定返回值的数据类型
-方法名:方便我们调用方法
-参数类型:
–形式参数 接收实际参数的变量(定义时候的)
–实际参数 实际参与运算的变量(调用时候的)
-方法体:完成功能的代码。
-返回值:就是功能的返回结果。
-return 返回值:结束方法,把返回值带给调用者。
3.书写方法时做到两个明确:
-参数 参数的个数,以及类型
-返回值 有无返回值,以及结果的数据类型
4.方法的注意事项:
-方法不调用不执行
-:方法与方法是平级关系,不能嵌套定义
-方法定义的时候参数之间用逗号隔开
-方法调用的时候不用在传递数据类型
-如果方法有明确的返回值,一定要有return带回一个值
需求:写一个功能实现返回两个数的较大值。
public static int getMax(int a,int b){ int c = (a>b)?a:b; return c;}
需求:输出i行j列的星形。
public static void printStar(int row,int col){ for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { System.out.print("*"); } System.out.println(); } }
方法重载
1.方法重载:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
2.方法重载特点
-与返回值类型无关,只看方法名和参数列表
-在调用时,虚拟机通过参数列表的不同来区分同名方法
需求:比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型。
public class FunctionOverload2 { public static void main(String[] args) { int a = 10; int b = 20; System.out.println(isEquals(a, b)); } public static boolean isEquals(byte a,byte b){ System.out.println("比较两个byte类型的数据是否相等"); return a==b; } public static boolean isEquals(short a,short b){ System.out.println("比较两个short类型的数据是否相等"); return a==b; } public static boolean isEquals(int a,int b){ System.out.println("比较两个int类型的数据是否相等"); return a==b; } public static boolean isEquals(long a,long b){ System.out.println("比较两个long类型的数据是否相等"); return a==b; }}
数组
1.数组:数组是存储同一种数据类型多个元素的集合
注意:数组既可以存储基本数据类型,也可以存储引用数据类型
2.数组的定义格式
-数据类型[] 数组名;
int[] arr;
-数据类型 数组名[];
int arr[];
3.数组初始化:
-动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
初始化时只指定数组长度,由系统为数组分配初始值。
格式:
数据类型[] 数组名 = new 数据类型[数组长度];
-:静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
简化格式:
数据类型[] 数组名 = {元素1,元素2,…};
4.数组内存图
5.数组操作常见的两个小问题
-ArrayIndexOutOfBoundsException:数组索引越界异常
–产生:你访问了不存在的索引。
–解决:修改你的访问索引。
-NullPointerException:空指针异常
–产生:引用已经不再指向堆内存
–解决:一般来说,只要是引用类型的变量,我们在使用前,都要先判断是否为null。
如果不为null,才继续使用。
需求:数组遍历:依次输出数组中的每一个元素。
for(int x=0; x<数组名.length; x++) { System.out.println(数组名[x]); }
类与对象
1.类:是一组相关的属性和行为的抽象
2.对象:是该类事物的具体体现
例如: 对象:张三 类:学生
3.类的组成:
-成员变量 类中方法外的变量
-成员方法 没有static修饰的方法
需求:编写一个学生类。
public class Student { //成员变量 String name; int age; //成员方法 public void sleep(){ System.out.println("学生需要睡觉"); } public void study(){ System.out.println("学生需要学习"); }}
需求:编写一个手机类。
public class Phone{ String brand; int price; public void call(){ System.out.println("手机可以打电话"); } public void sendMessage(){ System.out.println("手机可以发短信"); } }
4.类的使用:使用一个类,其实是使用该类的成员(变量和方法)。
我们要想想用一个类的成员,就必须创建该类的对象。
格式:
类名 对象名 = new 类名();
5.对象的使用:
成员变量: 对象名.变量; 成员方法: 对象名.方法名(...);
需求:写出手机类的测试类。
public class PhoneTest { public static void main(String[] args) { Phone p = new Phone(); p.brand = "vivo"; p.price = 2000; p.color = "white"; System.out.println(p.brand); System.out.println(p.price); //调用成员方法 p.call(); p.playGame(); }}//定义一个手机类class Phone{ String brand; int price; String color; public void call(){ System.out.println("手机可以打电话"); } public void sendMessage(){ System.out.println("手机可以发短信"); } }
创建一个手机对象内存图:
成员变量和局部变量的区别
1.在类中的位置不同
成员变量 类中方法外 局部变量 方法内或者方法声明上
2.在内存中的位置不同
成员变量 堆内存 局部变量 栈内存
3.生命周期不同
成员变量 随着对象的存在而存在,随着对象的消失而消失 局部变量 随着方法的调用而存在,随着方法的调用完毕而消失
4.:初始化值
成员变量 有默认初始化值 局部变量 没有默认初始化值
形式参数
数据类型:
-基本类型:4类8种。
基本类型实际参数传递的时候传递的是这个基本类型的具体的值。
-引用类型:类,接口,数组
引用类型进行参数传递的时候,传递的是该引用类型的实例对象说白了就是这个对象的地址值。
匿名对象
1.匿名对象:就是没有名字的对象,是对象一种简写形式。
2.应用场景:
-调用方法(对象调用方法仅仅一次的时候)
-作为实际参数传递
package com.edu_01;class Student{ public void show(){ System.out.println("student的show方法"); }}class StudentDemo{ public void method(Student s){ //需要的实际参数一定是Student类的对象的的地址值 s.show(); }}public class StudentTest { public static void main(String[] args) {/* //现在需要调用StudentDemo中的method()方法 StudentDemo sd = new StudentDemo(); //需要的实际参数一定是Student类的对象的的地址值 Student s = new Student(); sd.method(s);*/ //想调用我现在需要调用StudentDemo中的method()方法 //使用匿名对象调用方法,并传递参数 new StudentDemo().method(new Student()); }}
- Java学习笔记(三)--方法重载 数组 匿名对象
- Java学习笔记----匿名对象
- 【Java学习笔记】05.数组、方法和方法重载
- 【学习笔记08】java面向对象-方法重写、重载、instanceof
- Java学习笔记(1):重载方法
- Java基础学习笔记--匿名对象
- java笔记-面向对象-重载、数组
- Java学习笔记(方法重载)
- Java学习笔记-方法重载
- java学习笔记(面向对象、类的使用、方法的重载)
- Java学习笔记(二)--函数、函数重载、数组
- thinking in java 学习笔记(三)之重载
- java学习基础篇(三)方法重载
- java学习笔记(三)—数组
- Java面向对象(重写和重载)学习笔记1
- 【学习笔记02】java面向对象-成员变量、匿名对象
- java学习笔记(十九)对象数组
- java学习笔记-面向对象(三)
- java 用redis如何处理电商平台,秒杀、抢购超卖
- 递归递推练习―H―三国佚事——巴蜀之危
- 飞翔接力等
- 剑指offer27:二叉搜索树与双向链表
- find 命令简单总结(1)
- Java学习笔记(三)--方法重载 数组 匿名对象
- git版本管理命令行整理
- 凌乱的yyy
- react-native开发踩坑之 ios上react-native-vector-icons 的error:unRecognized font family 'FontAwesome'
- 6. Java NIO系列之非阻塞式操作
- 软件工程各阶段的UML图
- C语言中几种16进制的输出格式
- input=file 上传图片
- 网易163邮箱无法使用第三方客户端登录问题解决