一、什么是方法?
-
引入:
System.out.printlin():是指调用System类中的out对象 的printlin()方法
-
方法的命名规则:首字母小写的驼峰命名法
-
Java方法是语句的集合,它们在一起执行一个功能。方法包含于类或对象中,方法在程序中被创建,在其他地方被引用。
-
设计方法的原则:方法的本意是功能块,设计方法时,最好保持方法的原子性——一个方法只完成一个功能,这样有利于我们后期扩展。
二、方法的定义和调用
修饰符 返回值类型 方法名(参数类型 参数名){
方法体
return 返回值;
}
-
实际参数参(调用方法时)&形式参数(定义方法时)
-
值传递(Java)&引用传递
package com.shao.Method;
public class Demo01 {
public static void main(String[] args) {
//实参:实际传递的参数
int sum = add(1,2);
System.out.println(sum);
test();
}
//形参:用来起定义作用的
public static int add(int a,int b){
return a+b;
}
private static void test() {
for (int i = 1; i < 10; i++) {//快捷键100.for+Enter
for (int j = 1; j <=i; j++) {
int result = i*j;
System.out.print(j+"*"+i+"="+result+"\t");
}
System.out.println('\n');
}
}
}
package com.shao.Method;
public class Demo02 {
public static void main(String[] args) {
int max = max(10,10);
System.out.println(max);
}
//比较大小方法
private static int max(int num1, int num2) {
if(num1 == num2){
System.out.println("num1==num2");
return 0; //返回值,同时终止方法
}else if(num1 > num2){
return num1;
}else{
return num2;
}
}
}
三、方法的重载
即在一个类中,有相同的函数名称,但是形参不同。
方法重载的规则:
-
方法的名称必须相同
-
参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)
-
方法的返回值类型可以相同也可以不同(但注意,仅仅返回值类型不同不足以成为方法的重载,会报错!)
实现原理:
方法名称相同时,编译器会根据调用的参数列表去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
package com.shao.Method;
public class Demo03 {public static void main(String[] args) {
int max = max(10,10);
System.out.println(max);
}
//比较大小方法
private static int max(int num1, int num2) {
if(num1 == num2){
System.out.println("num1==num2");
return 0; //返回值,同时终止方法
}else if(num1 > num2){
return num1;
}else{
return num2;
}
}
//比较大小方法
private static float max(float num1, float num2) {
if(num1 == num2){
System.out.println("num1==num2");
return 0; //返回值,同时终止方法
}else if(num1 > num2){
return num1;
}else{
return num2;
}
}
//比较大小方法
private static void max(int num1, int num2, int num3) {
}
}
四、可变参数
-
JDK1.5开始,Java支持传递同类型的可变参数给一个方法
-
在方法声明中,在指定参数类型后加一个省略号(...)
-
一个方法声明中只能指定一个可变参数,并且它必须是方法的最后一个参数,任何普通参数必须在它之前声明
package com.shao.Method; public class Demo05 { public static void main(String[] args) { int max = max(4,5,2); System.out.println(max); } //比较大小方法 private static int max(int num1, int... num2) { if(num1 == num2[0]){ System.out.println("num1==num2"); return 0; //返回值,同时终止方法 }else if(num1 > num2[0]){ return num1; }else{ return num2[0]; } } }
五、递归思想
递归结构包括两个部分:
-
递归头:指明什么时候不再调用自身方法,如果没有,将陷入死循环
-
递归体:指明什么时候需要调用自身方法
Java使用栈机制,会先将main()和调用的各方法先压入栈中,所以如果层数比较深的时候,不适合用递归的算法编写程序!