0基础学Java之Day09(上午完整版)
一、静态方法
理解:特定功能的代码块 好处:解决代码的冗余
语法结构: 访问修饰符 static void 方法名(参数列表){ ...代码块... } 分类: 无参数无返回值的方法 带参数的方法 带返回值的方法 知识点:无参数无返回值的方法 语法结构: public static void 方法名(){ ...代码块... } 注意: 1.方法写在类里面 2.方法与方法之间是平级关系(不能在一个方法里声明另外一个方法) 3.方法不被调用,就是个摆设 4.静态方法通过类名调用 5.同一个类中的多个静态方法调用可以不使用类名 需求1:模拟lol的功能 需求2:设计一个方法,打印三角形
public static void main(String[] args){ //调用方法 //Test01.run(); //Test01.play(); //Test01.run(); //调用方法 run(); play(); run(); printStar(); printStar(); } public static void printStar(){ for(int i = 0;i<5;i++){ for(int j = 0;j<=i;j++){ System.out.print("*"); } System.out.println(); } } public static void run(){ System.out.println("风骚的走位 -- 100行"); } public static void play(){ System.out.println("发技能 -- 1200行"); } }
二、带参数的方法
知识点: 带参数的方法 语法结构: public static void 方法名(数据类型 参数名,数据类型 参数名,...){ ...代码块... }
注意: 1.形式参数 - 形参:在方法声明时规定的参数 2.实际参数 - 实参:调用方法时传入的实际数据 3.形参必须规定类型 4.实参类型必须与形参类型兼容 5.形参和实参可以有多个,用逗号分隔 需求1:设计一个方法,打印三角形,三角形的行数由调用方指定 优化需求:设计一个方法,打印三角形,三角形的行数和内容由调用方指定 需求2:设计一个方法,传入两个int值,比较大小
public static void main(String[] args){ printStar(3,"$"); printStar(5,"%"); getMax(10,20); } public static void getMax(int a,int b){ int max = (a>b)?a:b; System.out.println(max); } public static void printStar(int num,String str){ for(int i = 0;i<num;i++){ for(int j = 0;j<=i;j++){ System.out.print(str); } System.out.println(); } }
三、带返回值的方法
语法结构: public static 返回值的数据类型 方法名([数据类型 参数名,数据类型 参数名,...]){ ...代码块... return 数据;//1.结束当前方法; 2.将数据返回给调用方 }
注意: 1.参数 - 理解:调用方法时,将数据传入到方法内部 2.返回值 - 理解:方法执行完毕时,返回给调用方数据 3.方法声明时规定返回值类型 4.return后接的数据必须和方法声明时返回值的类型兼容 5.返回值只能是一个 6.方法功能的单一性 7.局部变量:方法里的变量需求:设计一个方法,传入两个int值,比较大小 经验 - 编写一个方法: 1.考虑方法名 -- 见名知意 2.考虑参数 是否有参数? 有几个参数? 参数的类型是什么? 3.考虑返回值 是否有返回值? 返回值的类型是什么?
public static void main(String[] args){ int max=getMax(10,20); System.out.println(max); } public static int getMax(int a,int b){ int max=(a>b)?a:b; return max; }
四、扩展
扩展 - 命名法: 帕斯卡命名法 - 大驼峰命名法 理解:多个单词首字母大写 作用:类 ps:public class HelloWorld{}
小驼峰命名法: 理解:除了第一个单词,其余单词首字母大写 作用:方法、变量 ps:public static int getMax(int a,int b){}
五、方法的递归
理解:递归是一种思想,方法调用方法自身 经验: 1.找规律:方法何时调用方法自身 2.找出口:什么时候结束掉方法
需求:设计一个方法,传入int类型的n,计算出n的阶乘 分析: 5! = 1*2*3*4*5 -> 5! = 4!*5 4! = 1*2*3*4 -> 4! = 3!*4 3! = 1*2*3 -> 3! = 2!*3 2! = 1*2 -> 2! = 1!*2 1! = 1 -> 1! = 1 找规律:n! = (n-1)! * n 找出口:1! = 1public static void main(String[] args){ int num = method(5); System.out.println(num); } public static int method(int n){ if(n != 1){ return method(n-1)*n; }else{ return 1; } }需求:有一对兔子,从出生后第3个月起每个月都生一对兔子, 小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问第b个月的兔子对数为多少? 设计一个方法,传入int类型的n,返回兔子当月的对数
分析: 找规律:当月兔子对数 = 上个月 + 上上个月 找出口:1月和2月都是1对兔子
1、1、2、3、5、8、13、.... -> 斐波那契数列/黄金分割数列
public static void main(String[] args){ int num = getRabbit(5); System.out.println(num); } public static int getRabbit(int n){ if(n==1 || n==2){ return 1; }else{ return getRabbit(n-1) + getRabbit(n-2); } }