Java 语言基础(JSD BASICS DAY06)

day06

目录

目录

day06

方法

方法的定义

方法的调用

方法的重载

方法的签名

重载

到今天为止java语言基础到此结束,如有问题欢迎指正,欢迎大家多提意见。


方法

什么是方法

在Java中,方法是一段可重复使用的代码段,它用于执行特定的任务或操作。方法包含一组语句,可以接收参数,并且可以返回一个值。

使用方法有以下几个原因:

  1. 减少重用代码:定义一个方法后,可以在程序的任何地方多次调用它,避免了重复编写相同的代码有利于代码的维护。

  2. 简化代码:方法可以将较长的代码块分割成较小的可读性和可维护性更强的部分。这有助于简化程序的结构和设计,并使其更易于理解。

  3. 提高代码的可维护性:使用方法可以将代码模块化,使其更易于修改和调试。如果需要对某个功能进行更改,只需修改方法的定义即可,而不需要在整个程序中找到并修改多个相同的代码段。

  4. 提高代码的可读性:使用方法可以将代码分割成逻辑上相关的部分,使其更易于理解。方法名和参数的命名应该清晰明了,能够反映出方法所执行的操作。

方法的定义

Java方法的定义是指在Java程序中定义一个可被调用的功能函数。Java方法由修饰词,返回值类型,方法名,参数列表,方法体 组成

[修饰符] 返回值类型 方法名(参数列表) {
    // 方法体
}

  • 修饰词可选,用于控制方法的访问权限和其他属性。常见的修饰符有public、private、protected等目前只需掌握public static。
  • 返回值类型是指方法执行完毕后返回的结果的数据类型。可以是基本数据类型或引用类型,也可以是void类型表示无返回值。
  •         直接调用方法不需要用到被调用方法里的内容为无返回值

            例如:

            System.out.println("hello");

            System.arrycopy(a,2,b0,4);

            Arrays.sort(arr);

            需要接收被调用方法里的内容为有返回值

            例如:

            int a= scan.nextlnt();

            int[] b=Arrays.coopy of(a,6);

  • 方法名是指方法在程序中的唯一标识符,用于调用方法时使用,方法名是自定义的标识符,需要符合Java的命名规范,不能与其他方法或变量重名,最好做到见名知意。
  • 参数列表是指方法接受的输入参数的列表。每个参数由参数类型和参数名组成,多个参数之间用逗号分隔。可以有零个或多个参数(有参,或者无参,有参可以是方法更加灵活)。

无参:

public class Example {
    public static void main(String[] args) {
        greet(); // 调用greet方法
    }
    
    public static void greet() {
        System.out.println("Hello, world!"); // 打印一条问候语
    }
}
 

多参数:

        在Java中,

        形参(formal parameter)是方法或构造函数中声明的变量,用于接收传递给方法或构造函数的实参(实际参数)。

        形参在方法或构造函数的声明中定义,它们的值由传递给方法或构造函数的实参确定。

        实参(actual parameter)是调用方法或构造函数时提供的值。

        实参是用于传递给方法或构造函数的具体值,它们的值将赋给方法或构造函数中的相应形参。简而言之,形参是方法或构造函数中定义的变量,用于接收传递给它们的实参的值。

        实参是方法或构造函数调用时提供的具体值,将被赋给相应的形参。

  • 方法体是指方法中具体的执行代码块。方法体被包含在一对大括号{}中,其中可以包含任意数量的Java语句。

Java方法的定义格式如下:

示例:

public static int add(int a, int b) {
    return a + b;
}

以上示例定义了一个名为add的方法,接受两个整型参数a和b,返回值类型为int。方法体中的代码实现了将a和b相加的功能,并将结果返回。

方法的调用

方法调用可以分为无返回值和有返回值两种情况。

无返回值的方法调用是指在调用方法时,方法执行完后不返回任何值给调用者。在Java中,使用void关键字来声明一个无返回值的方法。例如:

public class MyClass {
    public static void printHello() {
        System.out.println("Hello");
    }

    public static void main(String[] args) {
        printHello(); // 调用printHello方法
    }
}

在上面的例子中,printHello方法没有返回任何值,只是打印了一行"Hello"。在main方法中,我们调用了printHello方法。

有返回值的方法调用是指在调用方法时,方法会返回一个值给调用者。在Java中,可以使用任何合法的数据类型作为方法的返回类型。例如:

public class MyClass {
    public static int getSum(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        int sum = getSum(2, 3); // 调用getSum方法并将返回值保存在sum变量中
        System.out.println("Sum: " + sum);
    }
}

在上面的例子中,getSum方法接收两个参数并返回它们的和。在main方法中,我们调用了getSum方法并将返回值保存在sum变量中,并打印出来。

需要注意的是,有返回值的方法调用可以在表达式中使用,也可以将其结果赋值给一个变量。而无返回值的方法调用只能在语句中使用。

上述有返回值的代码中有return语句其在方法中有两个主要的作用:

1.返回值:return语句用于返回方法的结果给调用者。当方法被调用时,如果方法需要返回一个值,可以使用return语句将结果返回。返回值的类型必须与方法声明的返回类型匹配。例如:

public int getSum(int a, int b) {
    int sum = a + b;
    return sum; // 返回sum的值给调用者
}

在上面的例子中,getSum方法接收两个参数,计算它们的和并将结果返回。

2.提前结束方法的执行:return语句还可以用于在方法中提前结束方法的执行,即使方法中的代码还没有全部执行完。当程序执行到return语句时,方法会立即结束,并返回到调用者处。例如:

public void printHello(int num) {
    if (num <= 0) {
        return;
    }
    for (int i = 0; i < num; i++) {
        System.out.println("Hello");
    }
}

在上面的例子中,printHello方法接收一个参数num,如果num小于等于0,则直接返回,方法的执行就此结束。如果num大于0,会进入循环打印指定次数的"Hello"。

需要注意的是,在一个方法中可以有多个return语句,但只会执行其中一个。一旦执行到return语句,方法就会结束,后面的代码不会被执行。

方法的重载

方法的签名

方法的签名:方法名+参数列表

java规定:在同一类中,不允许出现签名完全相同的方法(与方法的返回值类型无关,如果签名相同,即时方法的返回值类型不同,也会发生编译错误)

如果在同一个类中出现了签名完全相同的方法,编译器会报错并提示"方法已经在类型中定义"。

示例:

public class MyClass {

    public void printMessage(String message) {
        System.out.println(message);
    }

    // 以下方法与上面的printMessage方法的签名完全相同,会导致编译错误
    public void printMessage(String message) {
        System.out.println("Message: " + message);
    }

    public static void main(String[] args) {
        MyClass myClass = new MyClass();
        myClass.printMessage("Hello");
    }
}

上面的代码中,定义了两个printMessage方法,它们的签名完全相同,都是方法名为printMessage,参数列表为一个String类型的参数。这样的定义会导致编译错误,提示"方法已经在类型中定义"。

为了修复这个错误,我们可以修改其中一个方法的签名,例如修改参数的个数、类型或顺序

public class MyClass {

    public void printMessage(String message) {
        System.out.println(message);
    }

    // 修改方法的签名
    public void printMessage(String message, int times) {
        for (int i = 0; i < times; i++) {
            System.out.println(message);
        }
    }

    public static void main(String[] args) {
        MyClass myClass = new MyClass();
        myClass.printMessage("Hello");
        myClass.printMessage("Hi", 3);
    }
}

在上面的代码中,我们修改了第二个printMessage方法的签名,增加了一个int类型的参数times,这样两个方法的签名就不再完全相同,编译器不会报错。

如果两个方法的签名完全相同(方法名和参数列表都相同),但返回值类型不同,也会导致编译错误。

例如:

public class MyClass {

    public int add(int a, int b) {
        return a + b;
    }

    // 编译错误:与上面的方法签名相同,返回值类型不同
    public String add(int a, int b) {
        return "Result: " + (a + b);
    }

    public static void main(String[] args) {
        MyClass myClass = new MyClass();
        int result = myClass.add(2, 3);
        System.out.println(result);
    }
}

在上面的代码中,我们定义了两个相同签名的add方法,它们接收两个int类型的参数,并且返回值类型分别是int和String。这样的定义会导致编译错误,因为Java编译器无法根据方法的返回值类型来确定调用哪个方法。编译器会提示我们“方法已经在类中定义过”。

重载

为什么使用重载:

  1. 提供了更直观和简洁的代码

  2. 避免了重复的代码

  3. 提高了代码的灵活性和可扩展性

  4. 方便了调用者

  5. 提高了代码的可维护性

  • 定义:指的是在同一个类中,可以定义多个方法名相同但参数列表不同的方法。
  • 绑定:编译器在编译时回根据方法的签名自动绑定方法。

示例:

假设我们有一个类叫做Calculator,其中定义了两个方法名相同但参数列表不同的方法add:

public class Calculator {
    public int add(int num1, int num2) {
        return num1 + num2;
    }
    
    public double add(double num1, double num2) {
        return num1 + num2;
    }
}

上面的代码中,Calculator类定义了两个add方法。第一个add方法接受两个整型参数,返回它们的和;第二个add方法接受两个双精度浮点型参数,返回它们的和。

在使用这些方法时,编译器会根据传入的参数的类型和数量选择合适的方法进行调用。例如:

Calculator calculator = new Calculator();
int result1 = calculator.add(2, 3);
double result2 = calculator.add(2.5, 3.5);

在上面的代码中,分别调用了两个不同的add方法。编译器会根据参数的类型选择适合的方法进行调用。

需要注意的是,方法的返回值类型不会影响方法的重载。即使方法的返回值类型不同,只要方法名和参数列表相同,仍然被认为是重载方法。

所以,方法的重载可以方便地定义相似功能但参数不同的方法,提高代码的可读性和灵活性。

到今天为止java语言基础到此结束,如有问题欢迎指正,欢迎大家多提意见。

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值