【Java编程】编程基础--方法/函数

本文介绍了Java中的方法定义,包括方法的用途、语法和示例,强调了代码重用和简化程序的重要性。文章还讨论了函数调用,参数类型匹配和值传递的问题,以及本地变量的生存期和作用域规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、方法定义

1.1 什么是方法(函数)?

1.2 为什么要使用方法?(优点)

1.3 语法

1.4.1 【举例 1】 (有无返回值)

1.4.2 【举例2】 (返回值存入变量)

1.4.3 【举例3】 (返回值直接使用)

二、函数调用

2.1 参数类型不匹配

2.2 参数的值的传递

三、本地变量

3.1 变量的生存期和作用域

3.2 本地变量的规则

参考


一、方法定义

1.1 什么是方法(函数)?

Java方法是语句的集合,它们在一起执行一个功能

  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用

在前面几个章节中我们经常使用到 System.out.println()

  • println() 是一个方法
  • System 是系统类
  • out 是标准输出对象

这句话的用法是调用系统类 System 中的 / 标准输出对象 out 中 / 的方法 println()

1.2 为什么要使用方法?(优点)

  • 1. 使程序变得更简短而清晰
  • 2. 提高了代码的重用性
  • 3. 有利于程序维护
  • 4. 可以提高程序开发的效率

1.3 语法

修饰符 返回值类型 方法名 (参数类型 参数名)
{     
方法体
return 返回值; 
}


Java的方法/函数必须定义在类的内部,成为类的成员。方法包含一个方法头和一个方法体。

下面是一个方法的所有部分:

语法

1. 修饰符

(可选)告诉编译器如何调用该方法。定义了该方法的访问类型。在这个阶段,我们要在所有的函数的访问类型后面加上关键字“static”。static表示这个函数属于这个类,而不属于这个类的任何对象,因此我们才可以不制造这个类的对象,而直接从main()函数中调用它。

2. 返回值类型

函数的返回类型在函数定义时指定,可以是任何数据类型,如整数、浮点数、布尔值、字符串等。当函数执行完毕时,它会将计算结果返回给调用者,调用者可以选择将返回值存储在变量中或者直接使用。

在编程中,一个函数通常具有返回值。它在方法体中必须使用return语句返回一个值(函数计算后返回给调用者的结果);如果一个函数没有返回值,则称其为“无返回值函数”(返回类型void),在方法体中不需要使用return语句(只打印了一段文本,返回类型也是void)。

一个函数可以出现多个return,但是保持单一出口是较好做法。

3. 方法名

第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson

4. 参数类型

参数像是一个占位符。当方法被调用时,传递值给参数。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。多个参数定义用逗号’,’分隔。

5. 方法体

方法体包含具体的语句,定义该方法的功能。

1.4.1 【举例1】 (有无返回值)

用之前【数组2】里面的素数的例子(判断其是否能被已知的,且< num的素数整除)。

将这个判断程序变成方法时需要注意的地方:

有无返回值

1. 方法头:将整个判断素数的过程从 psvm里拿出来,放到上面。并增加一个方法头,与psvm是并列。

2. 返回值:这里这个方法没有返回值,因为只是打印了一段文本。

3. 调用函数:在 psvm 下面送入参数。比如,前100个素数。

1.4.2 【举例2】 (返回值存入变量)

在Java中,可以将数组作为函数的返回值来返回数组。具体的实现方法如下:

  1. 定义函数:在函数内部创建一个数组,并将其赋值。
  2. 调用函数:在主函数中调用时,将结果存储在数组变量 result 中,最后for/ for-each 输出结果。

改变举例1

返回值是数组

因为本身这个例子就是用数组将已经判断出来的素数存储起来的,所以改变成函数的时候,调用的时候,需要将结果存储进 result 。然后再用 for-each 读取。


再例如,假设我们需要返回一个长度为n的整型数组,代码实现如下:

 public static int[] getArray(int n) {                     // 定义函数头,返回数组类型
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {                      // 赋值数组
            arr[i] = i;
        }
        return arr;

    }
    public static void main(String[] args) {
        int[] result = getArray(5);                      // 送参数,接收数组
        for (int i = 0; i < result.length; i++) {        // 读取数组
            System.out.println(result[i]);
        }
    }

在上述代码中,getArray函数返回一个长度为n的整型数组。在函数内部,首先创建一个长度为n的整型数组isPrime,然后将其赋值(),并将数组作为返回值返回。在主函数中调用时,先将结果存储在数组变量 result 中,再用 for/ for-each 输出结果。

1.4.3 【举例3】 (返回值直接使用)

m 和 n 是输入进系统的数,计算 m-n之间所有素数之和。

将判断质数的部分转成函数 isPrime(i),返回值为 boolean 类型。在 psvm 里面调用函数结果,并直接使用(3)

返回值直接使用


二、函数调用

当一个函数被调用时,程序就转到这个函数中去运行,函数体里的语句就一条一条地被调用。函数知道每一次是哪里调用它,函数结束的时候会返回到正确的地方。

接收变量 = 函数名(参数1,参数2)

括号 () 起到了函数调用的重要作用,即使没有参数也要 () 。如果有参数,则需要给出正确的数量和顺序。这些值会被按照顺序依次用来初始化函数中的参数。可以传递给函数的值是表达式的结果,这包括:[1]字面量、变量、函数的返回值、计算的结果。

public static int max(int a, int b)
    {
        int ret;
        if( a>b )
        {
            ret = a;
        }
        else
        {
            ret =b;
        }
        return ret;
    }


    public static void main(String[] args) {
        int a =5;
        int b =6;

        int c ;
        c = max(10,20);       // 字面量
        c = max(a,b);         // 变量
        c = max(max(c,a),5);  // 函数的返回值(将上一个c再传给函数)
        System.out.println(c);
        max(12,13);           // 直接丢弃
    }

2.1 参数类型不匹配

函数期望的参数类型与调用函数时给的值的类型比较

1. 期望宽:编译器可进行类型转换。

char--> int --> double(如果函数需要参数类型是int ,你传入double是可以的)

2. 期望窄:强制类型转换 int 5.0

3. 无法转换: boolean 与 int 之间

2.2 参数的值的传递

Java语言在调用函数时,永远只能传值给函数。

下面的代码可以交换 a 和 b 的值吗?

    public static void swap(int a, int b)
    {
        int t;
        t = a;
        a = b;
        b = t;
    }

    public static void main(String[] args) 
    {
        int a = 5;
        int b = 6;
        swap(a,b);
        System.out.println(a + " "+ b);      // 5 6
    }

每个函数有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系。

函数的里的叫参数,调用时,送进去的是值。


三、本地变量

函数每次运行,就产生一个独立的变量空间,在这个空间中的变量,是函数的这次运行所独有的,称作本地变量。

定义在函数内部的变量就是本地变量。

参数也是本地变量。

3.1 变量的生存期和作用域

生存期:变量什么时候出现,到什么时候消失

作用域:该变量需要在什么范围内进行访问(这个变量起作用的范围)

统一答案:大括号内(块)

3.2 本地变量的规则

A. 本地变量是定义在块内的:

1. 它可以是定义在函数的块内

2. 也可以定义在语句的块内

3. 甚至可以随便拉一对大括号来定义变量

4. 不能在一个块内定义同名的变量,也不能定义块外面定义过的变量

B. 程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了。

C. 块外面定义的变量在里面仍然有效。

D. 本地变量不会被默认初始化。

E. 参数进入函数的时候被初始化了。

参考

  1. ^字面量是编程语言中用于表示固定值的标记或符号,它们的值是不可变的,不需要计算或处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值