JAVAEE学习day04方法的定义和重载
1.方法定义的格式
方法就是完成特定功能的代码块
修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2...){
方法体;
return 返回值;
}
修饰符:
初学者只需记住public static
返回值类型:
用于限定返回值数据类型
方法名:
一个名字,方便我们调用方法
参数类型:
用于接受调用方法时传入的数据的类型
参数名:
用于接收调用方法时传入的数据的变量
方法体:
完成功能的代码
return:
结束方法,把返回值带给调用者
2.调用方法的三种方式:
a.单独调用
方法名()
b.打印调用
System.out.println(方法名())
c.赋值调用
方法名(参数1,参数2...)
3.方法的注意事项:
a.方法应该定义在类中,但是不能在方法中再定义方法
b.方法的定义顺序无所谓
c.方法定义之后不会自己执行,只有调用才会执行
d.如果方法由返回值,必须有return
f.return后边的返回值类型与方法定义的返回值类型相同
g.对于void类型,最后的return可以省略
h.一个方法中可以有多个return语句,但是必须保证只有一个能被执行到
4.break,continue和return的区别
break:只能用在switch和循环中,表示结束这个循环
continue:只能用在循环中,表示跳过此次循环,继续下一个循环
return:用在方法中,表示此方法到此结束
5.方法重载的概述和基本使用
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
方法重载特点:
a.与返回值类型无关,只看方法名和参数列表
b.在调用时,虚拟机通过参数列表的不同来区分同名方法
/* * 需求:比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型, * 并在main方法中进行测试 */ public class MethodTest { public static void main(String[] args) { // 调用 System.out.println(compare(10, 20)); System.out.println("-------------"); System.out.println(compare((byte)10, (byte)20)); System.out.println("-------------"); System.out.println(compare((short)10, (short)20)); System.out.println("-------------"); //System.out.println(compare((long)10, (long)20)); System.out.println(compare(10L, 20L)); } // 两个byte类型的 public static boolean compare(byte a, byte b) { System.out.println("byte"); // 第一种写法 // boolean flag = a==b?true:false; // return flag; // 第二种写法 // boolean flag = a == b; // return flag; // 第三种写法 return a == b; } // 两个short类型的 public static boolean compare(short a, short b) { System.out.println("short"); return a == b; } // 两个int类型的 public static boolean compare(int a, int b) { System.out.println("int"); return a == b; } // 两个long类型的 public static boolean compare(long a, long b) { System.out.println("long"); return a == b; } }
6.方法中参数传递
a.方法的形式参数为基本数据类型
形式参数的改变不影响实际参数。
形式参数:用于接收实际数据的变量
实际参数:实际参与运算的变量
b.方法的形参为引用数据类型
形式参数的改变直接影响实际参数。引用的时参数的地址
// 参数传递的经典案例 class Test{ public static void main(String[] args) { int a = 10; int b = 20; System.out.println("a:"+a+",b:"+b); //a:10,b:20 change(a,b); System.out.println("a:"+a+",b:"+b); //a:10,b:20 // a,b的值在前后并没有发生改变 int[] arr = {1,2,3,4,5}; change(arr); System.out.println(arr[1]); // 4 //数组的值发生改变 } // 参数时基本数据类型 public static void change(int a,int b) { System.out.println("a:"+a+",b:"+b); //a:10,b:20 a = b; //a=20 b = a + b; //b=40 System.out.println("a:"+a+",b:"+b); //a:20,b:40 } // 参数是引用数据类型 public static void change(int[] arr) { //arr={1,2,3,4,5}; for(int x=0; x<arr.length; x++) { if(arr[x]%2==0) { arr[x]*=2; } } //arr={1,4,3,8,5}; } }
7.打印所有的水仙花数
public class MethodTest2 { //把所有的水仙花数打印在控制台 public static void printFlower() { for(int x=100; x<1000; x++) { int ge = x%10; int shi = x/10%10; int bai = x/10/10%10; if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x){ System.out.println(x); } } } public static void main(String[] args) { printFlower(); } }