方法
一个可以完成独立功能的代码块
语法
返回值类型 方法名(形参){
}
class Test{
public static void main(String[] args){
int x = add(3,5);
System.out.println(x);
System.out.println(add(x,5));
}
public static int add(int a,int b){
int sum = a+b;
return sum;
}
}
返回值: 必须有
方法名字:必须有
小括号: 必须有
形式参数:根据需要设定,也可以没有形式参数
方法可以看成完成功能的代码块
大括号: 必须有: 但是功能语句可以任意写
方法的使用
- 方法有static修饰:类名.方法名+参数列表[个数,顺序,类型必须一致]
- 方法没有static修饰:对象名.方法名+参数列表[个数,顺序,类型必须一致]
- 方法在同一个类中:方法名+参数列表[个数,顺序,类型必须一致]
方法签名
方法名字+参数列表[类型,个数,顺序:必须一致]
方法重载(overload)
在同一个类中,方法名字相同,参数列表不同
//计算两个数的和
public static int add(int a,int b){
int sum = a+b;
System.out.println(sum);
return sum;
}
//计算三个数的和
public static int add(int a,int b,int c){
int sum = a+b+c;
System.out.println(sum);
return sum;
}
//计算四个数的和
public static int add(int a,int b,int c,int d){
int sum = a+b+c+d;
System.out.println(sum);
return sum;
}
return 语句
-
方式:将方法运算的结果返回给方法调用着,方法内部将运算结果使用语句:
return 值/变量/表达式;
方法返回值的位置,必须写与方法内部返回值的数据一致的数据类型
注意:返回的是数据,不是变量或者表达式
数组
一段连续的存储空间 用来存放某种类型的多个变量值
语法
//动态创建之先声明后赋值
数据类型[] 数组名;
数组名 = new 数据类型[数组长度];
//静态创建之复杂写法
//1.声明的同时赋值
数据类型[] 数组名 = new 数据类型[] {多个以英文逗号分隔的元素};
//2.先声明后赋值
数据类型[] 数组名;
数组名 = new 数据类型[] {多个以英文逗号分隔的元素};
//简写
数据类型[] 数组名 ={多个以英文逗号分隔的元素};
特点
- 创建以后 长度固定不变
- 只能存同一种类型 的多个变量值
jvm存储
- 基本数据类型 打印的时具体的值 因为它的值存放在栈中
- 引用数据类型 打印的时候是一个引用地址 因为它具体的存放区域存放堆中 String除外
数组的遍历
//数组的长度:数组名.length
int[] arr={2,4,12,124,122};
for(int i = 0;i<arr.length;i++){
return i;
}
方法的参数传递
- 值传递:方法传递的是值
- 形式参数类型是基本数据类型
- 基本类型数据传递的是值
- 值引用:方法传递的是值的引用
- 形式参数类型是引用数据类型
- 引用传递其实传的是地址,形式参数类型是引用数据类型或数组。
- 实际参数(数据)是对象(或数组),这时实际参数与形式参数指向同一个地址
- 在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被 保留了下来,所以方法执行中形式参数的改变将会影响实际参数
注意事项
方法调用时,实际参数把它的值传递给对应的形式参数,相当于拷贝了一份值给形式参数,所以方法执行中形式参数值的改变不影响实际参数的值。
- 基本数据不影响原来的值
- 引用数据不影响原来的地址值:
- 引用地址,引用的值,如果被改变,原来引用的的值所引用的值也会被改变,因为都是同一个引用