前言
Java中的方法属于一种特殊的语法,在我们编码中是必不可少的一部分,它分为四种不同的形式,每一种形式都是重点,而且Java语言为了减轻开发人员对起名字的操作,设计了一种特殊的语法:方法的重构,减轻了开发人员负担,提高了开发效率
一、Java的方法结构
概述:Java里的方法是一种结构,里面存储着多次复用的代码,封装成一个功能,能多次调用
作用:提高了代码的复用性,使编码更加的灵活
1.1 无参无返回值
格式:
修饰符 void 方法名(){ 方法体 }
调用方式:直接调用 方法名();
public class Demo {
public static void main(String[] args) {
printInfo();
}
public static void printInfo(){
System.out.println("我是无参无返回值的方法");
}
}
1.2 无参有返回值
格式:
修饰符 返回值类型 方法名(){ 方法体 return 返回值类型数据 }
调用方式:返回值数据类型 变量 = 方法名();
注意:直接调用却不用变量接收没有意义,但是合法
public class Demo {
public static void main(String[] args) {
int number = printInfo();
}
public static int printInfo(){
System.out.println("我是无参有返回值的方法");
return 10;
}
}
1.3 有参无返回值
格式:
修饰符 void 方法名(参数列表){ 方法体 }
调用方式:传递参数直接调用 方法名(参数);
public class Demo {
public static void main(String[] args) {
String name = "小明";
printInfo(name);
}
public static void printInfo(String name){
System.out.println("我是有参无返回值的方法");
System.out.println(name+"今晚要上课");
}
}
1.4 有参有返回值
格式:
修饰符 返回值类型 方法名(参数列表){ 方法体 return 返回类型的数据 }
调用方式:返回值数据类型 变量 = 方法名(参数);
注意:直接调用却不用变量接收没有意义,但是合法
public class Demo {
public static void main(String[] args) {
//传入一个整数n,求1-n之间的和并返回输出
int sum = getSum(5);
System.out.println("sum = " + sum);
}
public static int getSum(int n){
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
}
二、方法的重载
方法的重载就是在一个类中,允许有同名的方法,但仅凭返回值类型的不同不能够实现方法的重载,需要参数的个数、参数的类型、参数的顺序不同才能实现方法的重载
参数的类型不同
//方法的重载
public static int getSum(int a,int b){
return 10;
}
public static void getSum(byte a,double b){
return;
}
参数个数不同
//方法的重载
public static void printInfo(int a,int b){
return;
}
public static void printInfo(int a,int b,int c){
return;
}
参数的顺序不同
//方法的重载
public static void divide(int a,double b){
System.out.println(a+b);
}
public static void divide(double b,int a){
System.out.println(a+b);
}
三、拓展
return 数据(只能在有返回值的方法使用)
1、结束本次调用的方法
2、把数据返回到调用方法的地方
return;(只能在无返回值的方法中使用)
Java里参数的传递机制
不管是基本数据类型还是引用类型,归根结底都是值的传递,只不过基本数据类型传递的是其里面保存的值(字面量),而引用数据类型传递的是其保存的地址
基本数据类型的参数传递机制,number调用方法后的结果没有改变,说明调用方法时只是将number变量里面的值10传递给了形参
public class Demo {
public static void main(String[] args) {
int number = 10;
System.out.println("main方法里面的number值是:"+number);//10
test(number);
System.out.println("调用方法后的number值是:"+number);//10
}
public static void test(int number){
System.out.println("test方法里面的number值是:"+number);//10
number = 20;
System.out.println("改变后的test方法里面的number值是:"+number);//20
}
}
引用类型的数组arr将自己保存的地址[I@2f7a2457作为实参传递给同样为数组的list,这个时候arr和list都同时指向堆内存里面的一个数组对象,所以当list数组对索引为1的元素改变时,arr数组中索引为1的元素也同样改变,所以引用数据类型本质上也是值传递,只不过传递的是地址值
public class Demo {
public static void main(String[] args) {
int arr[] = {10,20,30};
System.out.println("这是数组arr的地址:"+arr);//[I@2f7a2457
System.out.println("调用方法前的 arr[1] = "+arr[1]);//20
test(arr);
System.out.println("调用方法后的 arr[1] = "+arr[1]);//99
}
public static void test(int list[]){
System.out.println("改变数组前 list[1] = "+list[1]);//20
list[1] = 99;
}
}
四、总结
通过本文,我们学到了定义方法的四种不同形式,通过有无参数和有无返回值构建了不同类型的方法,把频繁用到的功能封装成一个个的方法,随调随用,实现了代码的复用性,减轻了开发的负担,提高了代码的灵活度,而且Java设计的方法的重载,让我们对方法的命名有了更简便的方式,防止命名空间被污染,还拓展了Java参数间的传递机制,不论是基本数据类型还是引用数据类型,都是值传递。好了,骚话吐到嘴边却说不出来,还是那句话,虚心接受,如果你觉得对你有帮助的话,希望给个点赞,十分感谢