IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java中的方法 -> 正文阅读

[Java知识库]Java中的方法

介绍Java中的方法,方法如何定义、使用、重载

一、方法是什么


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

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

二、方法的优点


  • 程序更加简短清晰。
  • 利于进行程序的维护。
  • 可以提高程序开发的效率。
  • 提高代码的重用性。

三、方法如何使用


1、命名

  • 命名采取小驼峰形式命名,如sumNumber。第一个单词首字母小写,后面的单词首字母大写,不使用连字符。
  • 下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test<MethodUnderTest>_<state>,例如 testPop_emptyStack

2、定义

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

示例: 比较两个整型数字大小的方法

public static int maxNum(int a,int b) { //方法
    if (a > b)
        return a;
    else
        return b;
}
public static void main(String[] args) {
       System.out.println( maxNum(10,5)); // 调用方法
}

注:

  1. 方法定义时不能嵌套。
  2. 方法定义时的参数是“形参”,方法调用时的参数是“实参”。
  3. 方法必须定义在类中,位置在调用位置的上方或下方都可以。
  4. 方法只有在调用的时候才会执行方法体中的代码。

2.1 形参与实参

形参是定义方法时使用的一个变量,用来接收调用方法时传递的值。形参的值是实参值得一份拷贝。用下面的例子来进行说明。

public static void main(String[] args) {
    int a = 10;
    int b = 20;
    swap(a, b);
    System.out.println("实参: a = " + a + " b = " + b);
}
public static void swap(int x, int y) {
    int tmp = x;
    x = y;
    y = tmp;
    System.out.println("形参: x = " + x + " y = " + y);
}

在这里插入图片描述
可以看到,形参的值发生了交换但实参并没有交换。因为这个调用过程是传值调用,可以使用数组解决这个问题,数组是引用类型。

public static void main(String[] args) {
    int[] arr = {10, 20};
    swap(arr);
    System.out.println("arr[0] = " + arr[0] + " arr[1] = " + arr[1]);
}
public static void swap(int[] arr) {
    int tmp = arr[0];
    arr[0] = arr[1];
    arr[1] = tmp;
}

在这里插入图片描述

3、方法的重载

一个类中的两个方法拥有相同的名字,但是有不同的参数列表,编译器通过方法的签名判断应该调用哪个方法。
示例: 对比大小方法进行重载,使其能够比较不同类型的数据的大小。

//根据参数类型进行重载
public static int maxNum(int a,int b) { // 两个int类型比较,返回int类型
    if (a > b)
        return a;
    else
        return b;
}
public static double maxNum(double a,double b) { // 两个double类型比较,返回double类型
    if (a > b)
        return a;
    else
        return b;
}
public static float maxNum(float a,float b) { // 两个float类型比较,返回float类型
    if (a > b)
        return a;
    else
        return b;
}
//根据参数数量进行重载
public static double maxNum(double a,double b,double c) {
    if(maxNum(a,b)>c)
        return maxNum(a,b);
    else
        return c;
}
public static float maxNum(float a,float b,double c) {
    if(maxNum(a,b)>c)
        return maxNum(a,b);
    else
        return c;
}

3.1 方法签名

那么编译器是如何区分这些重载的方法呢?
编译器看到的是方法签名:经过编译器修改过的方法名称。格式:全路径+参数列表+返回值类型

public static int maxNum(int a,int b) {
    if (a > b)
        return a;
    else
        return b;
}
public static double maxNum(double a,double b) {
    if (a > b)
        return a;
    else
        return b;
}
public static float maxNum(float a,float b) {
    if (a > b)
        return a;
    else
        return b;
}

public static void main(String[] args) {
    maxNum(10,20);
    maxNum(12.5f,23.1f);
    maxNum(12.3,21.2);
}

编译运行过后查看该代码的字节码文件,便能看到他们的方法签名
在这里插入图片描述
在这里插入图片描述

特殊字符数据类型
Vvoid
Zboolean
Bbyte
Cchar
Sshort
Iint
Jlong
Ffloat
Ddouble
[数组(其后加上其它特殊字符,表示对应数据类型的数组,“ [ ”数量表示几维数组)
L引用类型,L开头,“ ; ”结尾,中间为引用类型的全类名

4、构造方法

  • 当对象被创建时,构造方法用来初始化该对象。构造方法与类名相同,但是没有返回值。
  • Java中自动提供默认的构造方法,默认构造方法和类的访问修饰符相同。
  • 当定义了自己的构造方法,默认构造方法就会失效。

示例:

// 一个简单的构造函数
class MyClass {
  int x;
 
  // 以下是构造函数
  MyClass() {
    x = 10;
  }
}

使用构造方法初始化对象:

public class Test {
   public static void main(String args[]) {
      MyClass t1 = new MyClass();
      MyClass t2 = new MyClass();
      System.out.println(t1.x + " " + t2.x);
   }
}

5、可变参数

可以应用在不确定某一参数的个数的情况之下。

  • 在方法声明中,在指定参数类型后加一个省略号(…) 。
  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
  • 语法格式:typeName... parameterName

示例:

public class TestMethod {
    public static void main(String args[]) {
        // 调用可变参数的方法
        sumNum(1.5, 2.5, 3.5, 4.5, 5.5);
        sumNum(1, 2, 3);
    }

    public static void sumNum( double... numbers) {
        double sum = 0;
        for (int i = 0; i < numbers.length; i++) {
            sum += numbers[i];
        }
        System.out.println("数字和为:"+sum);
    }
}

在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:13:10  更:2021-09-02 11:14:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:10:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码