目录
带返回值的方法的定义和调用
public static 数据类型 方法名(参数){
方法体;
return 返回值;
}
带返回值的方法的调用格式
数据类型 变量名=方法名(参数);
这个数据类型必须要和方法中定义的数据类型一样 用于存储返回值
参数可以是常量可以是变量 具体情况依照方法定义时的数据类型
//int a = number(5);
//注意这个参数并非方法定义中的形参 而是方法调用中的实参
例:
public static void main(String[] args){
int max = number(5);//调用number方法 并对方法中的参数进行传参操作
System.out.println(max);
}
public static int number(int a){
a++;
return a;
}
//输出结果:6
如上代码所示,表示一个完整的带返回值的方法的定义和调用。
注意事项:
1.带返回值的方法需要在方法定义上声明数据类型,这个声明的数据类型就是return要返回的数据的数据类型,两者必须一样,否则程序报错。如上代码,我在number这个方法名下的数据类型声明为int,所以return后面的数据就必须是一个int类型的常量或者变量
2.带返回值的方法在进行方法的调用的时候,依照实际情况需求,需要有一个和return返回的数据的数据类型一样的变量进行存储,然后在方法调用完之后再进行操作。如上代码,我的number方法的返回值的类型是一个int类型,所以我在方法调用的时候使用了一个int类型的变量进行存储,然后在这个方法调用完之后进行了一个打印输出的操作
方法使用的注意事项
1.方法不能嵌套定义,即方法是按照从上往下的顺序依次定义的,一个类中可以有多个方法,但是一个方法中不能有另一个方法,也就是说方法只能定义在类中
2.在定义带返回值的方法时,如果声明数据类型为void的话,那么就可以无返回值,或者单独写return,但是后面不跟数据
public static void number(int a){
System.out.println(a);
}
public static void number(int a){
return;
}
public static void number(int a){
System.out.println(a);
return true;
}
//如上三个方法 第一个和第二个都是符合规范的,第三个就不行。
/*因为这个方法使用了void声明 所以依照void的特性 这个方法不应该存在返回值,或者存在return,但是不带任何数据 很明显第三个方法里面的return带了数据 所以不符合规范
*/
方法的通用格式
public static 数据类型 方法名(参数){
方法体;
return 要返回的数值;
}
具体的实际情况可能会导致格式的不同,但方法都可以依照该格式去实现定义
定义方法时的两个明确:
1.明确返回值类型 返回值的类型依照方法定义中声明的类型 注意void这个特殊类型
2.明确参数的类型和数量
方法重载
方法重载指的是一个类中多个方法之间的关系。满足下列关系则构成方法的重载
1.多个方法在同一个类中
2.多个方法具有相同的方法名
3.方法之间参数上的差异,同类型同数量 不同类型同变量名同数量
四字概括:同名不同参
即在一个类中,多个方法只要存在同名不同参就可以构成方法重载
同名:同一个方法名
不同参:可以是参数的类型不同 变量名不同 或者传参后的值不同
方法重载的注意事项:因为是同名不同参,参数的不同所有就会导致在方法调用上会有区别
如果一个方法的参数声明的是int类型 另一个方法的参数声明的是double类型,两个方法同名不同参构成方法重载,那么在进行方法的调用的时候,要将double类型声明的那个方法下的参数进行一个强制转换,否则它的参数会默认是int类型
public class fangfa_7 {
public static void main(String[] args){
//调用方法
int result = number(10,20);
System.out.println(result);
double result_1 =number(10.0,20.0);
System.out.println(result_1);
}
//需求1:求两个int类型的数据和的方法
public static int number(int a ,int b){
return a+b;
}
//需求2:求两个double类型数据和的方法
public static double number(double a,double b){
return a+b;
}
}
//如上代码 两个方法构成方法重载 但是类型不同,所以在传参的时候需要注意类型的区别
方法的参数传递(基本类型)
在方法中常用的基本类型包括 整数类型 浮点型 字符型
基本类型在传参的时候方法内形参的改变不会影响到外面的实参的值
总结:在方法中如果参数是基本数据类型,那么只有实参影响形参 形参无法影响实参
public class fangfa_8 {
public static void main(String[] args) {
int a =200;
System.out.println("调用number方法前"+a);
number(a);
System.out.println("调用number方法后"+a);
}
//定义方法
public static void number(int a){
a=100;
}
//输出结果:调用number方法前200
调用number方法后200
//总结:在基本类型中方法中的参数即使与外面的变量名一样 但是无论方法中的参数如何改变 外面都依旧不受影响
//也就是说 方法里面形参的值的改变无法影响到外面实参的改变
方法的参数传递(引用类型)
引用数据类型包括 数组 类 接口
引用类型在传参的时候方法内形参的改变会影响到外面的实参的值
总结:在方法中如果参数是引用数据类型,那么实参只要对形参有一个传参的操作,而形参在方法中有值的修改的行为的话,就会影响到实参的值
public class fangfa_9 {
public static void main(String[] args) {
int[] arr={10,20,30};
System.out.println("调用change方法前的arr[1]:"+arr[1]);
change(arr);
System.out.println("调用change方法后的arr[1]:"+arr[1]);
}
public static void change(int[] arr1) {
arr1[1]=200;
}
//总结 引用类型的参数的方法在进行参数的传递时会导致变量名指向同一个内存地址,所以会造成内存地址下元素共享的情况
//只要形参在它的方法体下做如何元素的改变 实参都会受到影响 当然这是在进行方法调用的前提下