【Java入门】方法及方法重载

news/2024/7/8 4:38:03

方法及方法重载

方法的定义、调用及其注意事项

方法:是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集
1、定义格式:
修饰符 返回值类型 方法名(参数){
方法体;
返回值;
}

参数的种类:形式参数和实际参数
形参:方法声明的不具有数值的参数

实参:方法体中的有实际值的参数

方法定义中的参数是形参,方法调用中的参数是实参。

2、调用
在主方法内直接调用,利用方法名调用

3、注意事项
1.方法体内不能嵌套方法即方法不能定义在另一个方法里面

 public static void main(String[] args) {
        //方法的调用
        methodName();
        //接收返回值以及输出j
        int j = methodInt();
        System.out.println(j);
        int q1 = 50, p1 = 60;//实际参数具有值
        int sum = methodInt1(q1, p1);
        System.out.println(sum);
    }


    //方法的定义
    public static void methodName() {
        //括号内为方法体
        System.out.println("这是个方法");
        return;
    }

    public static int methodInt() {
        int i;
        i = 10 + 20;
        //返回整型变量i
        return i;
    }

    //带形式参数的方法
    public static int methodInt1(int q, int p) {
        int sum = p + q;
        return sum;
    }

方法的重载:

多个方法要在同一个类中
多个方法的方法名相同,参数列表不同

参数个数不同
参数类型不同
参数类型顺序不同

无关:
返回值类型无关
参数变量名无关

public static void main(String[] args) {

        Int(1);
        Int(1, 2);
        Int(1.0, 2.0);

    }

    public static int Int(int a) {
        int sum = a;
        System.out.println("函数重载" + sum);
        return sum;
    }

    public static int Int(int a, int b) {
        int sum = a + b;
        System.out.println("函数重载" + sum);
        return sum;
    }

    public static double Int(double a, double b) {
        double sum = a + b;
        System.out.println("函数重载" + sum);
        return sum;
    }

方法参数传递(基本类型)

对于基本数据类型的参数,形参的改变不影响实参的值

public class Main {

    public static void main(String[] args) {
        int a = 10;
        System.out.println("未调用Change方法前" + a);//10
        Change(a);
        System.out.println("未调用Change方法后" + a);//10

    }

    public static void Change(int num) {
        num = 20;
    }
}

方法参数传递(引用类型)

对于引用类型的参数,形式参数的改变,影响实际参数的值。

public class Main {

    public static void main(String[] args) {
        int[] arr=new int []{1,2,3};
        System.out.println("未调用Change方法前" + arr[1]);//2
        Change(arr);
        System.out.println("未调用Change方法后" + arr[1]);//10

    }
    //其堆内存中的数组存储空间内存储单元里的内容发生改变
    public static void Change(int arr[]) {
        arr[1] = 10;
    }
}

方法参数传递是指在调用一个方法时,将数据从一个对象传递给该方法的过程。Java中的方法参数传递有两种类型:基本类型和引用类型。

  1. 基本类型:基本类型是值类型,包括byte、short、int、long、float和double等。当一个基本类型的变量作为方法的参数传递时,实际上是将该变量的值复制到方法的参数中。这意味着在方法内部对参数进行修改不会影响原始变量的值。例如:

public static void printNumber(int num) {
    System.out.println("The number is: " + num);
}

public static void main(String[] args) {
    int myNum = 10;
    printNumber(myNum); // The number is: 10
}


在这个例子中,我们定义了一个名为printNumber的方法,它接受一个整数类型的参数num。在main方法中,我们定义了一个整数类型的变量myNum,并将其传递给printNumber方法。由于num是基本类型,因此在方法内部对其进行修改不会影响原始变量的值。

  1. 引用类型:引用类型是值类型的一种特殊情况,它可以存储另一个对象的引用。当一个引用类型的变量作为方法的参数传递时,实际上是将该变量所指向的对象的引用传递给方法。这意味着在方法内部对参数所指向的对象进行修改会影响原始变量所指向的对象的值。例如:

public static void printArray(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        System.out.println("Element at index " + i + " is: " + arr[i]);
    }
}

public static void main(String[] args) {
    int[] myArr = {10, 20, 30};
    printArray(myArr); // Element at index 0 is: 10
    arr[0] = 40; // This changes the value of myArr in main method as well!
}


在这个例子中,我们定义了一个名为printArray的方法,它接受一个整数数组类型的参数arr。在main方法中,我们定义了一个整数数组类型的变量myArr,并将其传递给printArray方法。由于arr是一个引用类型,因此在方法内部对其所指向的对象进行修改会影响原始变量所指向的对象的值。

方法重载的优点
可以提高代码的可读性和可维护性。如果一个类中有多个同名的方法,那么它们可能会被混淆,导致代码难以理解和维护。而通过方法重载,可以将不同的方法定义为不同的名称,从而使代码更加清晰易懂。

下面是一个使用方法重载的例子:

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    
    public double add(double a, double b) {
        return a + b;
    }
    
    public int add(int a, int b, int c) {
        return a + b + c;
    }
    
    public double add(double a, double b, double c) {
        return a + b + c;
    }
}

在这个例子中,我们定义了一个名为Calculator的类,其中包含了两个名为add的方法。第一个方法接受两个整数类型的参数并返回一个整数类型的结果,第二个方法接受两个双精度浮点数类型的参数并返回一个双精度浮点数类型的结果。另外,我们还定义了两个名为add的方法,它们接受三个整数或双精度浮点数类型的参数并返回一个整数或双精度浮点数类型的结果。这两个方法虽然名称相同,但是它们的参数列表不同,因此它们被视为不同的方法。

当我们调用这些方法时,根据传递的参数列表的不同,编译器会自动选择合适的方法进行调用。例如,当我们调用add(1,2)时,编译器会选择第一个名为add的方法进行调用。而当我们调用add(1.0,2.0)时,编译器会选择第二个名为add的方法进行调用。当我们调用add(1,2,3)时,编译器会选择第三个名为add的方法进行调用。当我们调用add(1.0,2.0,3.0)时,编译器会选择第四个名为add的方法进行调用。

总之,方法重载是一种非常有用的编程技巧。它可以提高代码的可读性和可维护性,并且可以让程序员更加灵活地编写代码。

注意

方法及方法重载是Java编程中非常重要的概念,它们可以提高代码的可读性和可维护性。但是在使用方法重载时,需要注意以下几点:

  1. 参数列表必须不同:方法重载要求不同的方法具有不同的参数列表。如果两个方法的参数列表相同,那么它们被视为同一个方法的重载版本。因此,在定义方法重载时,需要确保每个方法的参数列表都不同。

  2. 返回类型可以相同:虽然方法重载要求不同的方法具有不同的参数列表,但是它们的返回类型可以相同。这意味着一个方法可以有多个返回值,而另一个方法也可以有多个返回值。

  3. 访问修饰符不能相同:方法重载要求不同的方法具有不同的访问修饰符。如果两个方法的访问修饰符相同,那么它们被视为同一个方法的重载版本。因此,在定义方法重载时,需要确保每个方法的访问修饰符都不同。

  4. 名称必须唯一:虽然方法重载要求不同的方法具有不同的参数列表和访问修饰符,但是它们的名称必须唯一。如果两个方法的名称相同,那么它们被视为同一个方法的重载版本。因此,在定义方法重载时,需要确保每个方法的名称都不同。

总之,在使用方法重载时,需要注意以上几点,以确保代码的正确性和可读性。

书籍推荐

以下是一些比较经典的Java书籍推荐:

  1. 《Effective Java》:这本书是Java程序员必读的一本书,它可以帮助你写出更好的Java代码。
  2. 《Java核心技术卷 1+卷 2》:这两本书是非常适合有一定Java基础的人阅读的,它们介绍了Java的核心技术,包括语言特性、集合框架、IO流等等。
  3. 《Head First Java》:这本书是一本非常有趣的Java入门书籍,它通过图像和生动的例子来帮助读者理解Java编程的概念。
  4. 《深入理解Java虚拟机》:这本书介绍了JVM的内部结构和原理,对于想要深入了解Java的人来说是非常有用的。
  5. 《Java并发编程实战》:这本书介绍了Java中多线程编程的相关知识,对于想要开发高性能应用程序的人来说是非常有用的。

希望对你有所帮助~


http://lihuaxi.xjx100.cn/news/1280149.html

相关文章

chatgpt赋能python:Python要点:从入门到精通

Python要点&#xff1a;从入门到精通 Python是一门高级编程语言&#xff0c;是一种解释型、面向对象、动态数据类型的语言。它的设计思想是“代码易读易写”&#xff0c;在数据科学、人工智能、自动化测试、Web开发等领域广泛应用。本文将从入门到精通的角度来介绍Python的要点…

h2database BTree 设计实现与查询优化思考 | 京东云技术团队

h2database 是使用Java 编写的开源数据库&#xff0c;兼容ANSI-SQL89。既实现了常规基于 BTree 的存储引擎&#xff0c;又支持日志结构存储引擎。功能非常丰富&#xff08;死锁检测机制、事务特性、MVCC、运维工具等&#xff09;&#xff0c;数据库学习非常好的案例。 本文理论…

机器学习4:基本术语

机器学习涉及很多专业术语&#xff0c;为了避免混淆概念&#xff0c;我们在学习中&#xff0c;首先必须统一语言&#xff1a;即充分理解专业术语&#xff0c;并采用专业术语来描述机器学习相关的内容。本节将介绍几种基本的机器学习术语。 目录 1.标签 2.特征 3.示例 4.模…

树莓派4B移植5G模块驱动(RG200U-CN)

1、查看Linux内核版本 uname -r2、根据内核版本在Github上下载Linux内核源码&#xff08;最好再Github上确定一下有没有这个分支&#xff09; git clone --depth1 https://github.com/raspberrypi/linux --branch rpi-5.15.y3、下载依赖库 sudo apt-get updatesudo apt-get …

Linux磁盘分区和文件系统的关系

一、Linux磁盘相关命令及作用&#xff1a; 1. df命令&#xff1a;用于显示文件系统的磁盘空间使用情况。 2. du命令&#xff1a;用于查看文件或目录的磁盘使用情况。 3. fdisk命令&#xff1a;用于磁盘分区表的创建和管理。 4. mkfs命令&#xff1a;用于创建文件系统。 5. moun…

【css】实现单独一区域滚动,不影响整体滚动

来源&#xff1a;css实现单独一区域滚动&#xff0c;不影响整体滚动&#xff0c;两种方法 方法 第一种&#xff1a;就该区域高度固定&#xff0c;然后overflow-auto 第二种&#xff1a;使用属性overscroll-behavior: contain; .overfolw{position: absolute;width: 100%;ov…

C++ Vector操作

文章目录 1 初始化&#xff1a;2 遍历vector3删除vector指定元素 1 初始化&#xff1a; 方法1&#xff1a; vector list1; //默认初始化&#xff0c;vector 为空&#xff0c; size 为0。容器中没有元素&#xff0c;而且 capacity 也返回 0&#xff0c;意味着还没有分配内存空…

如何看待社交媒体上的滥用和侵犯版权问题??

社交媒体已成为人们日常生活中不可或缺的一部分&#xff0c;它为我们提供了分享、互动和表达自己的平台。然而&#xff0c;随着社交媒体的普及和内容的广泛传播&#xff0c;滥用和侵犯版权的问题也日益突出。本文将探讨如何管理社交媒体上的滥用和侵犯版权问题&#xff0c;以维…