Java基础(六)—— 函数

6.1 函数的定义与调用

6.1.1 定义函数

对象的操作
  • String s = “hello”;
  • int i = s.length();
  • System.out.println(s+ “bye”);
  • 这些都是对象在执行函数
例子:求和
  • 求出1到10、20到30和35到45的三个和
package com.meteor;

public class function {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 10; i++) {
            sum += i;
        }
        System.out.println(1+"到"+10+"的和是"+sum);
        sum = 0;
        for (int i = 20; i <= 30; i++) {
            sum += i;
        }
        System.out.println(20+"到"+30+"的和是"+sum);
        sum = 0;
        for (int i = 35; i <= 45; i++) {
            sum += i;
        }
        System.out.println(35+"到"+45+"的和是"+sum);
    }
}
  • 三段循环是类似的,复制粘贴,把变量修改一下。这种“代码复制”是程序质量不良的表现,可以用函数把相同功能的代码抽出来写成一个函数。
package com.meteor;

public class function {
    public static void main(String[] args) {
        sum(1,10);
        sum(20,30);
        sum(35,45);
    }

    public static void sum(int a, int b) {
        int sum = 0;
        for (int i = a; i <= b; i++) {
            sum += i;
        }
        System.out.println(a+"到"+b+"的和是"+sum);
    }
}
  • 把相同的部分提取出来,其中有需要变化的东西——变量,把变量做成参数。
函数
  • 函数是一块代码,接收零个或多个参数,做一件事情,并返回零个或一个值
    • 函数头
      • 函数名
      • 返回类型
      • 参数表
    • 函数体

6.1.2 调用函数

  • 函数名(参数值);
  • ()起到了表示函数调用的重要作用
  • 即使没有参数也需要()
  • 如果有参数,则需要给出正确的数量和顺序
函数返回
  • 函数知道每一次是哪里调用它,函数结束的时候会返回到正确的地方
  • return停止函数的执行,并送回一个值
    • return;return表达式;
  • 一个函数里可以出现多个return语句,但是保持单一出囗是好的做法
  • 从函数中返回的值可以赋值给变量,可以再传递给函数,甚至可以丢弃
  • void 函数名(参数表),没有返回值的函数

6.2 函数的参数与本地变量

6.2.1 函数参数的传递

  • 如果函数有参数,调用函数时必须传递给它数量、类型正确的值
  • 当函数期望的参数类型比调用函数时给的值的类型宽的时候,编译器能悄悄替你把类型转换好
    • char->int->double
  • 当函数期望的参数类型比调用函数时给的值的类型窄的时候,需要你写强制类型转换
  • 当函数期望的参数类型与调用函数时给的值的类型之间无法转换的时候一>不行!
传过去的是什么
package com.meteor.function;

public class Swap {
    public static void main(String[] args) {
        int a = 5;
        int b = 6;
        swap(a, b);
    }

    private static void swap(int a, int b) {
        int t;
        t = a;
        a = b;
        b = t;
    }
}
  • 上面的程序在main函数中a和b的值没有交换
  • Java语言在调用函数时,永远只能传值给函数
传值
  • 每个函数有自己的变量空间,参数也位于这个独且的空间中,和其他函数没有关系

6.2.2 函数的本地变量

  • 函数的每次运行,就产生了一个独立的变量空间,在这个空间中的变量,是函数的这次运行所独有的,称作本地变量
  • 定义在函数内部的变量就是本地变量
  • 参数也是本地变量
变量的生存期和作用域
  • 生存期:什么时候这个变量开始出现了,到什么时候它消亡了
  • 作用域.在(代码的)什么范围内可以访问这个变量(这个变量可以起作用)
  • 对于本地变量,这两个问题的答案是统一的:大括号内——块
本地变量的规则
  • 本地变量是定义在块内的
    • 它可以是定义在函数的块内
    • 也可以定义在语句的块内
    • 甚至可以随便拉一对大括号来定义变量
  • 程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了
  • 块外面定义的变量在里面仍然有效
  • 不能在一个块内定义同名的变量,也不能定义块外面定义过的变量
  • 本地变量不会被默认初始化
  • 参数在进入函数的时候被初始化了

猜你喜欢

转载自blog.csdn.net/u011741311/article/details/79152329