方法

方法简介

    方法, 一听这个词我们能想到什么呢? 解决问题的方法, 方案. 
    聪明的你应该已经发现了. 同样的代码写了两遍. 作为一名合格的懒惰程序员, 这是绝对不允许的. 怎么办呢? 还记得刚开始的时候说的那个叫方法的东西么? 对了. 我们可以把”约”的功能单独设置成一个方法, 方案. 在我需要约的时候. 把这个方案拿出来用一下就OK了.
 
方法: 对功能或者动作的封装.  类似函数
目的: 把一个功能或者动作写好. 然后等待后面的程序来使用. 可以大大的简化我们的代码.
 

方法的定义

上节课说了方法是什么. 本小结跟大家说一说怎么写方法.
 
语法:
public static void 方法名(){
方法体
}
 
方法名() // 这里是调用方法
其中: public static void先照着写. 不用管. 你只需要给自己的方法起一个名字就可以了.
方法体: 这件事儿到底应该怎么做.
public static void work() {
    System.out.println("1.打开电脑");
    System.out.println("2.插上网线,联网");
    System.out.println("3.登录微信");
    System.out.println("4.开始干活");
    System.out.println("5.中途休息");
}
public static void count100(){
    for (int i = 0; i <= 100; i++) {
        System.out.println(i);
    }
}

public static void main(String[] args) {
    work();
    System.out.println("中午了,吃饭,午休");
    work();
    count100();
}

 

 

带参数的方法

参数: 调用方法的时候给方法传递的信息.
语法:
public static void 方法名(参数){
方法体
}
 
方法名(参数)
参数两类:
    在方法声明的位置的括号里写的内容被称为形参. 形式上. 你在调用该方法的时候需要给一个数据. 那接收数据的话, 咱么说过, 变量是用来保存数据的. 所以, 所谓的形参, 实际上就是声明一个变量
    在方法被调用的地方给方法传递的具体的信息, 这个叫实参.
形参就是一个变量声明就可以了. 表示可以接受xxx类型的数据
实参必须是具体的数据, 可以是变量, 也可以直接是值.
 
 
 
注意: 一个方法可以有多个参数
 
 
public static void work(String place, String kind) {
    System.out.println("1.打开电脑:" + place);
    System.out.println("2.插上网线,联网");
    System.out.println("3.登录微信");
    System.out.println("4.开始干活:" + kind);
    System.out.println("5.中途休息");
}
 
public static void main(String[] args) {
    work("公司", "学业务");
    work("家", "学代码");

}
实参传递给形参时, 是按照位置进行传递的.
形参和实参的个数必须要匹配, 否则报错.
 

方法的返回值

 
带有返回值的方法:
 
public static 返回值类型 方法(参数){
方法体
}
 
    public static String invest() {
        System.out.println("开户投资");
        return "赚取收益";
    }

    public static void main(String[] args) {
        invest();// 返回值也可以不接收. 不会报错
        String ret = invest();// 接收返回值. 变量的数据类型必须和方法的返回值类型一致
        System.out.println(ret);
//        System.out.println(invest());
    }

 

  
注意:
  1. 如果方法没有返回值, 那么在方法声明的地方必须要写void. 不可以空着.
  2. 如果方法有返回值. 那么在方法声明的地方必须写出方法的返回值类型.
  3. 如果方法有返回值. 在方法内部必须使用return语句来返回数据.
  4. 方法的返回值必须和返回值类型一致.
  5. return语句执行之后, 方法就结束了. 后面不能执行任何代码.
以上5点必须遵守. 否则报错.
 
同时存在参数和返回值
 
给方法传递a和b计算a+b的结果并返回
public static int add(int a, int b) {
    return a + b;
}

public static void main(String[] args) {
    int c = add(10, 20);
    System.out.println(c);
}

 

注意, 方法的返回值和参数之间并没有任何关系. 需要给方法传递信息就写参数. 需要返回数据就写返回值.
 
 

方法练习

我们把本章内的一些知识点综合在一起. 做做小练习.
写方法, 给方法传递两个整数a, b. 返回a和b中比较大的那个数.
 //方案一
 public static int compare(int a, int b){
     if(a > b){
         return a;
     } else {
         return b;
     }
 }
 //方案二
 public static int compare(int a, int b){
     return a > b ? a : b;
 }

 

方案二中使用的是三元运算. 又叫三目运算.
语法:
x ? y: z
如果x为真, 则y, 否则z
 
 
写方法, 把传入的数组翻转并返回.
 
public static int[] reverse(int[] arr) {
    int[] result = new int[arr.length];
    int index = 0;
    for (int i = arr.length - 1; i >= 0; i--) {
        result[index] = arr[i];
        index++;
    }
    return result;
}

public static void main(String[] args) {
    int[] shu = {1, 55, 2, 17, 8, 12, 5};
    int[] res = reverse(shu);
    for (int i = 0; i < shu.length; i++) {
        System.out.println(res[i]);
    }
}
5
12
8
17
2
55
1
 

方法的重载

啥叫重载? 重新加载. No. 假设, 现在我们写一个吃饭方法. 那我可以给方法传递一个参数. 叫饭.
 
 public static void chi(String fan){
     System.out.println(fan)
 }
写完了. 也投入使用了. 很多人使用这个方法来吃饭. 突然有一天, 你灵光一闪. 不对啊. 我们不光吃饭啊. 还要吃菜啊. 那怎么办. 你肯定会想到. 简单. 加个参数就完了. 你这么想的话. 那你就太年轻了. 先不说加个参数对你有什么影响. 那些正在调用你原来吃饭方法的人怎么办…. 全都挂了. 那就再写一个方法? 可以.
 
 public static void ?????????????(String fan, String cai){
     System.out.println(fan);
     System.out.println(cai);
 }
别的都好弄. 这个名字怎么办…. 总不能叫chi2 吧. 都是吃东西. 怎么就排了个1和2. 好吧, 就算你加了2. 也会导致很多人产生这样的问题. 为什么chi传1个参数…chi2要传2个…在调用的时候就要小心翼翼. 因为参数传错了程序会崩掉的. 怎么样. 发现问题了吧. 那如果我再加个甜点呢? 再来个chi3???? NO. It’s terriable. 此时, 你需要这样一种机制. 能不能让方法的名字一样. 参数不一样呢? 可以~~
 
重载: 方法的名字相同, 参数的个数或者类型不同.
 
哇~ 有了这样一个理论基础. 这个chi就好写很多了
 public class TestMethod6 {
     public static void chi(String fan){
         System.out.println(fan);
     }
     public static void chi(String fan, String cai){
         System.out.println(fan);
         System.out.println(cai);
     }
     public static void chi(String fan, String cai , String tiandian){
         System.out.println(fan);
         System.out.println(cai);
         System.out.println(tiandian);
     }
 
     public static void main(String[] args) {
         chi("大米饭");
         chi("大米饭", "西红柿炒鸡蛋");
         chi("大米饭", "尖椒土豆丝", "哈根达斯");
     }
 }
搞定. 我们发现, 在方法调用的时候. 程序会自动根据你给的参数类型和个数选择你要执行的方法.
 
再看一个 
public static int add(int a, int b) {
    System.out.println("two int");
    return a + b;
}

public static long add(int a, long b) {
    System.out.println("one int, one long");
    return a + b;
}

public static double add(int a, double b) {
    System.out.println("one int ,one double");
    return a + b;
}

public static void main(String[] args) {
    System.out.println(add(10, 20));
    System.out.println(add(10, 20L));
    System.out.println(add(10, 1.25));
} 
 
重载: 方法的名字相同, 参数的个数或类型不同.
 
 
posted @ 2020-01-12 22:51  元贞  阅读(278)  评论(0编辑  收藏  举报