方法:
代码重复度高,使用方法,复用性提高
具有独立功能的代码块,不调用就不执行
方法定义:
格式:
public static void 方法名(){
//方法体
}
方法调用:
格式:
方法名();
范例:
public class Demo1Method {
public static void main(String[] args) {
eat();
}
public static void eat() {
System.out.println("吃饭");
}
}
方法与方法之间是平级关系,不能嵌套定义
方法定义不局限于主方法里面的
方法没有被调用的时候,都在方法区中的字节码文件(.class)中存储
方法被调用的时候,需要进入到占内存中运行
参数:
在定义方法时,变量
定义方法时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错
方法定义是,多个参数之间用,分隔
public class Demo2Method {
public static void main(String[] args) {
method(20);
}
public static void method(int num){
if(num % 2==0){
System.out.println("偶数");
}else{
System.out.println("奇数");
}
}
}
形参:
定义方法时的参数(int num)
实参:
方法调用中的参数(20)
带返回值方法的定义和调用:
方法的返回值通常会使用变量接收,否则该返回值将无意义
区分带返回值的方法,直接输出内容与返回内容的区别:
输出调用与赋值调用:
public class Demo1Method {
public static void main(String[] args) {
System.out.println(max(10,30));//输出调用
int result = max(10,20);//赋值调用
System.out.println(result);
for (int i = 9; i <=result ; i++) {
System.out.println("oooo");
}
}
public static int max(int num1,int num2){
if(num1<num2){
return num2;
}else{
return num1;
}
}
}
方法通用格式:
方法注意事项:
1.方法不能嵌套定义
2.方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写
如果要编写return,后面不能跟具体的数据
2.return语句下面,不能编写代码,因为永远执行不到
方法重载:
方法名一样,参数不一样,就不会发生冲突,因为调用参数的时候,会有明显用哪个方法
同一个类中,方法名相同,参数不同的方法
参数不同:个数不同,类型不同,顺序不同(不同数据类型),跟返回值无关
好处:不用记忆过多繁琐的名字
例子:
public class Demo2Method {
public static void main(String[] args) {
System.out.println(compare(10, 20));
System.out.println(compare((byte) 10, (byte) 20));
System.out.println(compare((short) 10, (short) 20));
System.out.println(compare(10L, 10L));
}
public static boolean compare(int num1,int num2){
System.out.print("int:");
return num1 == num2;
}
public static boolean compare(byte num1,byte num2){
System.out.print("byte:");
return num1 == num2;
}
public static boolean compare(short num1,short num2){
System.out.print("short:");
return num1 == num2;
}
public static boolean compare(long num1,long num2){
System.out.print("long:");
return num1 == num2;
}
}
运行结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e6CNOnDC-1596446590606)(C:\Users\文慧洋\AppData\Roaming\Typora\typora-user-images\image-20200803163134902.png)]
方法的参数传递:
基本数据类型进行传递:
public class Demo1 {
public static void main(String[] args) {
int number = 100;
System.out.println("前:"+number);
change(number);//将main方法中的number的值赋值一份,交给change方法中的number,
System.out.println("后:"+number);
}
public static void change(int number){
number = 200;//修改change方法中的number的值为200,main方法中的不会受任何影响
}
}
输出:传进方法中的,是具体的数据值
运行结果
100
100
方法参数传递引用类型:
public class Demo2 {
public static void main(String[] args) {
int[] arr = {10,20,30};
System.out.println("前:"+arr[1]);
change(arr);//传递内存地址,就是说传递的是数组arr的地址
//将arr变量保存的数组的地址值复制一份,交给了change方法的arr
System.out.println("后:"+arr[1]);
}
private static void change(int[] arr) {
arr[1] = 200;//通过地址值,修改数组中的1索引对应的元素为200
}
}
//注意:字符串类型比较特殊,字符串作为参数传递的时候,结果按基本数据类型走;
//在方法中对字符串进行修改,原方法中的字符串不会受到影响
运行结果:
20
rintln(“后:”+arr[1]);
}
private static void change(int[] arr) {
arr[1] = 200;//通过地址值,修改数组中的1索引对应的元素为200
}
}
//注意:字符串类型比较特殊,字符串作为参数传递的时候,结果按基本数据类型走;
//在方法中对字符串进行修改,原方法中的字符串不会受到影响
运行结果:
20
200