JavaSE Day05
1. 什么是方法
方法是解决一类问题的步骤的有序组合
方法包含于类或对象中
方法再程序中被创建,在其他地方被引用
设计原则:原子性——一个方法只做一件事情
用static转化为类,方便调用
1 package com.learning.method; 2 3 public class Demo01 { 4 //main方法 5 public static void main(String[] args) { 6 int sum = add(1, 2); 7 System.out.println(sum); 8 } 9 10 //加法 11 public static int add(int a, int b) { 12 return a + b; 13 } 14 15 public static void test() { 16 17 } 18 }
2. 方法的定义
类似C的函数
修饰符(可选多个) 返回值类型 方法名(参数类型,参数类型)
return可以终止方法
方法的调用:对象名.方法名(实参列表)详见5
3. 方法重载
写两个重名的方法可以,参数不同(类型、个数、排列顺序)。如解决整数或者浮点数的加法问题
4. 命令行传参
package com.learning.method; public class Demo02 { public static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.println("args[" + i + "]"); } } }
main方法参数的类型是一个数组
str.length 返回数组长度
idea下方 Terminal 打开命令行窗口


需要回退到包的路径去加载!!!
5. 可变参数
在方法的声明中,在指定参数类型后加一个省略号(...)
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数
1 package com.learning.method; 2 3 public class Demo03 { 4 public static void main(String[] args) { 5 //通过对象来调用方法,new一个类,alt+enter自动补全! 6 Demo03 demo03 = new Demo03(); 7 demo03.test(1, 2, 3, 4, 5); 8 9 } 10 11 public void test(int... i) { 12 System.out.println(i);//[I@3f3afe78 13 System.out.println(i[0]);//1 14 System.out.println(i[0]);//2 15 //本质是数组i 16 } 17 }
通过对象来调用方法,new一个类,alt+enter自动补全!
1 package com.learning.method; 2 3 public class Demo04 { 4 public static void main(String[] args) { 5 //调用可变参数的方法求最大值 6 printMax(55, 77.6, 32, 11.3, 0.4); 7 printMax(new double[]{1, 2, 3});//本质就是数组,直接传入一个数组! 8 } 9 10 public static void printMax(double... number) { 11 if (number.length == 0) { 12 System.out.println("no number"); 13 return;//节省资源! 14 } 15 double result = 0; 16 for (int i = 0; i < number.length; i++) { 17 if (number[i] > result) 18 result = number[i]; 19 } 20 System.out.println("max=" + result); 21 } 22 }
6. 递归
A方法自己调用自己!能不用就不用,尤其是深度比较大,占用内存太多!
package com.learning.method; public class Demo05 { public static void main(String[] args) { Demo05 test = new Demo05(); test.test(); } public void test() { test(); } }
栈溢出!!!!
递归能大大减少代码量
递归结构包括两个部分:
-
递归头:什么时候不调用自身(边界限制)
-
package com.learning.method; public class Demo06 { public static void main(String[] args) { System.out.println(f(4)); } //阶乘 public static int f(int n) { if (n == 1) return 1; else return n * f(n - 1); } }

浙公网安备 33010602011771号