p.s.这是萌新自己自学总结的笔记,如果想学习得更透彻的话还是请去看大佬的讲解
目录
方法的概念
方法是程序中最小的执行单元(方法中的代码是同时进行的,不能拆开 )
因此,我们可以将一系列代码指定给某一方法,这样当以后我们想使用这些代码的时候只需要调用对应的方法就行了。
比如豌豆射手发射豌豆的代码我们便可以先写好然后”装“在方法里,等下一次发射豌豆时便可调用该方法,从而提高了效率,也减轻了敲代码的压力。不仅提高了代码的复用性,还提高了代码的可维护性。
总结:方法是程序中最小的执行单元
实际开发中,什么时候用到方法?
答:重复达到代码、具有独立功能的代码可以放入到方法中
实际开发中,方法有什么好处?
答:不仅提高了代码的复用性,还提高了代码的可维护性。
方法的定义及调用(不含参数)
把一些代码打包在一起,该过程称为方法定义
而方法定义后并不是直接运行的,需要手动调用才能执行,该过程称为方法调用
定义格式
public static void 方法名(){
方法体(就是打包起来的代码);
}
调用格式
方法名();
注意:方法要先定义后调用,否则程序就会报错
举例
public class f {
public static void main(String[] args) {
//调用方法
method();
method();
}
//定义方法
public static void method(){
System.out.println("冲刺!!");
int i = 9;
System.out.println(i);
}
}
输出结果为
冲刺!!
9
冲刺!!
9
一定要先定义好了再调用!!
方法的定义及调用(含参数)
定义格式
public static void 方法名(参数1,参数2...){
方法体(就是打包起来的代码);
}
举例
public static void cls(int a, int b){
int sum = a + b;
System.out.println(sum);
}
调用格式
方法名(参数1,参数2...)
注意!!!!!:方法调用时,参数的!!!数量与类型必须!!!与方法定义中小括号里面的变量一一对应,否则程序将报错。
形参与实参
形参:全称形式参数,是指方法定义中的参数。一般要指明形参的数据类型
实参:全称实际参数,是指方法调用中的参数
注意!!!!!:方法调用时,形参与实参必须一一对应,否则程序将报错。
方法定义的小技巧
- 我要干什么?
- 我干这件事情需要什么才能完成?
方法的定义及调用(含返回值)
返回值:因为A方法里的变量不能直接在B方法中使用,所以要想实现这一效果我们需要利用return语句将A方法里的变量返回到B方法中的调用A方法的语句(即调用处),以达到在A方法运行的结果能返回到B方法中的调用语句中进行使用
定义格式
public static 返回值类型 方法名(参数1,参数2...){
方法体(就是打包起来的代码);
return 返回值;
}
举例
public static int ceshi (){
int a = 10;
int b = 20;
int c = a + b;
return c;
}
方法的调用分为三种
- 直接调用
方法名(实参);
- 赋值调用
数据类型 变量名 = 方法名(实参);
- 输出调用
System.out.println(方法名(实参));
看下面的典例
public class f {
//定义方法,比较两个长方形的面积
public static void main(String[] args) {
double x = a1(10,20);
double y = a1(30,20);
if (x>y){
System.out.println("长方形x的面积更大");
}else if (x<y){
System.out.println("长方形y的面积更大");
}else {
System.out.println("两个长方形的面积一样大");
}
}//定义的求长方形面积的方法 ↓ ↓ ↓
public static double a1(double a,double b){
return a*b;
}
}
注意事项
- 方法不调用就不会执行
- 方法与方法之间是平级关系,不能互相嵌套定义
- 方法的编写顺序和执行顺序无关
- 若方法的返回值类型为void(译为无类型),则表示这个方法没有返回值,
没有返回值的方法可以省略return语句
如果非要编写return,则后面不能跟具体的数据。
但如果返回值类型不为void,则可以跟与返回值类型相同的数据- return语句下面不能再写任何代码。因为return语句的另一种含义就是结束方法
所以return语句下面的方法永远执行不到,属于无效的代码
6.IDEA中ctrl+alt+m可以将一段代码复制并存入一个新方法中。
return关键字
方法没有返回值时:可以省略不写。如果写了,则表示结束方法
方法有返回值时:必须写。表示结束方法和返回结果
return与break的区别
- return与循环无关,与方法有关。如果方法执行到了return,那么整个方法直接结束,里面的循环也随之结束。
- break与方法无关,是用来结束循环或switch的
方法的重载
在一个类当中,定义了多个同名的方法,这些同名的方法具有相同的功能
每个方法具有不同的参数类型和参数个数。这些同名的方法就构成了重载关系
小结:同一个类中,方法名相同,参数不同的方法就构成重载关系。重载关系的构成与返回值无关。
参数不同指的是参数的个数、类型、顺序不同
举例
public class fangfa6 {
public static void main(String[] args) {
//运用方法重载的思想,设计比较两个整数是否相同的办法
//要求:兼容全整数类型(byte,short,int,long)
byte a = 10;
byte b = 20;
compare(a,b);
compare((short)40,(short)40);
compare(20,40);
compare(50,(long)40);
}
public static void compare (byte a , byte b){
System.out.println(a==b);
}
public static void compare (short a , short b){
System.out.println(a==b);
}
public static void compare(int a , int b){
System.out.println(a==b);
}
public static void compare (long a , long b){
System.out.println(a==b);
}
}
方法的值传递
传递基本数据类型
传递基本数据类型时,传递的是真实的数据。形参的改变,不影响实际参数的值
public class f {
public static void main(String[] args) {
int num = 100;
System.out.println("调用方法前:"+num);
change(num);
System.out.println("调用方法后:"+num);
}
public static int change(int num){
num = 200;
return num;
}
}
输出结果为
100
100
原因:变量只能在所属的方法里有效
return返回的只是一个数值,并不是一个变量
传递引用数据类型
传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值
public class fangfa3 {
public static void main(String[] args) {
int[] arr = new int[]{10,20,30};
System.out.println("调用方法前:"+arr[1]);
change(arr);
System.out.println("调用方法后:"+arr[1]);
}
public static void change(int[] arr){
arr[1] = 200;
}
}
输出结果为
20
200
原因:方法里改变的是数组(引用数据类型)里的数据