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();
     }
 }

栈溢出!!!!

递归能大大减少代码量

递归结构包括两个部分:

  1. 递归头:什么时候不调用自身(边界限制)

  2. 递归体:什么时候调用 (n*n-1)

 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);
     }
 }

 

posted @ 2021-02-16 22:50  825728422  阅读(55)  评论(0)    收藏  举报