【Java开发指南 | 第十九篇】Java方法

简介: 【Java开发指南 | 第十九篇】Java方法

Java方法

方法的定义

在Java中,方法是一段代码块,用于执行特定的任务或操作。方法包含了一系列语句,可以被其他代码多次调用。方法通常用于组织代码,提高代码的重用性和可读性。


方法的语法

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

}


修饰符(Modifiers):


修饰符是可选的,用于控制方法的访问权限和其他特性。常见的修饰符包括:

public:表示该方法可以被任何类访问。

private:表示该方法只能被同一个类内部的其他方法访问。

protected:表示该方法可以被同一包内的类及其子类访问。

static:表示该方法属于类而不是实例,可以通过类名直接调用。

final:表示该方法不能被子类重写。

abstract:表示该方法没有实现,必须在子类中被实现。

等等…

返回值类型(Return Type):


返回值类型指定了方法执行后的返回结果的数据类型。如果方法不返回任何值,则返回类型为 void。

如果方法有返回值,则必须在方法体中使用 return 语句返回相应的值。

如果方法声明了返回值类型但是没有在方法体中使用 return 返回值,则编译器会报错。

方法名(Method Name):


方法名是用来标识方法的名称,其他代码可以通过方法名来调用该方法。

方法名应该符合Java的命名规范,通常采用驼峰命名法。

参数类型(Parameter Types):


方法可以接受零个或多个参数,参数类型指定了每个参数的数据类型。

参数列表是包含在圆括号内的,多个参数之间使用逗号分隔。

方法体(Method Body):


方法体是方法的实际实现,包含了一系列语句,用于执行特定的任务或操作。

方法体位于花括号 {} 内,其中的语句会按顺序执行。

方法的类型

1、静态方法(Static Method):使用 static 关键字修饰的方法,可以直接通过类名调用,无需实例化对象。


public class Ice{
  public static void a()
  {
  System.out.println("ice");
  }
  public static void main(String[] args)
  {
  //调用静态方法,无需实例化对象
  Ice.a();
  }
}



2、实例方法(Instance Method):没有使用 static 关键字修饰的方法,必须通过类的实例对象调用。


public class Ice{
  public void a()
  {
  System.out.println("ice");
  }
  public static void main(String[] args)
  {
  //创建实例对象
  Ice b = new Ice();
  //调用实例方法,需要使用实例对象
  b.a();
  }
}


方法的调用

当方法返回一个值的时候,方法调用通常被当做一个值。


public class Ice{
  public static int a()
  {
  return 1;
  }//方法返回一个值
  public static void main(String[] args)
  {
  int b = Ice.a();
  System.out.println(b);
  }
}



如果方法返回值是void,方法调用一定是一条语句。


public class Ice{
  public static void a()
  {
  System.out.println("ice ice");
  }//方法返回void
  public static void main(String[] args)
  {
  Ice b = new Ice();
  b.a();
  }
}



方法的重载

先看该例:


public class Ice{
  public static int max(int num1,int num2)
  {
  if(num1>num2)
    return num1;
  else
    return num2;
  }
  public static void main(String[] args)
  {
  int b=Ice.max(5, 1);
  System.out.println(b);
  }
}



上面代码使用的max方法仅仅适用于int型数据。但如果我们想得到两个浮点类型数据的最大值呢?


解决方法是创建另一个有相同名字但参数不同的方法(一个类的两个方法拥有相同的名字,但是有不同的参数列表),如下面代码所示:


public class Ice {
    public static int max(int num1, int num2) {
        if (num1 > num2)
            return num1;
        else
            return num2;
    }
   
    // 方法重载,接受 double 类型的参数
    public static double max(double num1, double num2) {
        if (num1 > num2)
            return num1;
        else
            return num2;
    }
    public static void main(String[] args) {
        int b1 = Ice.max(5, 1); // 调用第一个 max 方法
        System.out.println(b1);
        double b2 = Ice.max(3.5, 4.2); // 调用第二个 max 方法
        System.out.println(b2);
    }
}


如果我们调用max方法时传递的是int型参数,则int型参数的max方法就会被调用;如果传递的是double型参数,则double类型的max方法体会被调用,这就是方法重载。


构造方法

构造方法是一种特殊类型的方法,用于在创建对象时进行初始化操作。它与类同名,没有返回类型(甚至不是 void),并且在创建对象时由 Java 虚拟机自动调用。


语法结构:
public class ClassName {//类名
        // 构造方法定义
    public ClassName(/* 参数列表 */) {
        // 构造方法体
    }
    // 其他成员方法和属性
}


构造方法的语法结构包括:


访问修饰符:通常为 public,用于控制该构造方法的访问权限。

方法名:与类名相同。

参数列表:可以有零个或多个参数,用于在创建对象时传递初始化信息。

构造方法体:包含在大括号 {} 内的代码块,用于执行初始化操作。

示例如下:


public class Ice{
  //属性
  private String size;
  private int year;
  //构造方法,用于初始化 Ice 对象的属性
  public Ice(String size,int year)
  {
  this.size=size;
  this.year=year;
  }
  //方法
  public void a()
  {
  System.out.println("size:"+size);
  System.out.println("year:"+year);
  }
  public static void main(String[] args)
  {
  //创建对象并初始化
  Ice aa=new Ice("mideum",7);
  aa.a();
  }
}



方法之可变参数

JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法。


方法的可变参数的声明如下所示:

typeName... parameterName

参数类型...参数名



public class Ice
{
    //输出数组中最大值
  public static void max(double...numbers)
  {
  double max1=numbers[0];
  for(int i=1;i
  {
    if(numbers[i]>max1)
    max1=numbers[i];
  }
  System.out.println(max1);
  }
  //调用
  public static void main(String[] args)
  {
  max(12,32,21,6.3);
  max(new double[]{1,1.2,2.2});
  }
}


由于max方法的参数类型是double,若代码改为float[],则将产生类型不匹配的错误:



**注意:**在Java中,一个方法只能有一个可变参数,并且这个可变参数必须是方法参数列表中的最后一个参数。


示例:


//正常工作的代码示例
public class Ice
{
  public static void max(int a,double...numbers)
  {
  double max1=numbers[0];
  for(int i=1;i
  {
    if(numbers[i]>max1)
    max1=numbers[i];
  }
  if(a>max1)
  //第一个数与后面最大的一个进行比较
    System.out.println(a);
  else
    System.out.println(max1);
  }
  public static void main(String[] args)
  {
  max(122,32,21,6.3);//122>32,输出122
  max(12,32,21,6.3);//12<32,输出32.0
  }
}



倘若我将代码变为:


public static void max(int a,double...numbers)


则产生如下报错



这是因为在调用方法时,可变参数可以接受任意数量的参数,包括零个参数,因此它会"吞噬"掉方法参数列表中的所有参数,导致后续参数无法被准确定位。



目录
相关文章
|
10天前
|
Java
Java——方法的引用
方法引用允许将已有方法作为函数式接口的实现。使用“::”符号,需具备函数式接口,被引用的方法须存在且参数和返回值需与抽象方法一致。其分类包括:静态方法引用(类::方法名)、成员方法引用(对象::方法名、this::方法名、super::方法名)和构造方法引用(类名::new)。方法引用提高了代码的简洁性和可读性,减少了样板代码。
27 13
Java——方法的引用
|
6天前
|
Java
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
本文介绍了Java中抽象类和抽象方法的使用,以及ArrayList的基本操作,包括添加、获取、删除元素和判断列表是否为空。
11 2
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
|
2天前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
11 4
|
4天前
|
安全 Java API
Java根据URL获取文件内容的实现方法
此示例展示了如何安全、有效地根据URL获取文件内容。它不仅展现了处理网络资源的基本技巧,还体现了良好的异常处理实践。在实际开发中,根据项目需求,你可能还需要添加额外的功能,如设置连接超时、处理HTTP响应码等。
30 4
|
10天前
|
Java API
Java方法的优缺点
Java 方法是编程的基本构建块,具有代码重用性、模块化、易于调试、增强可读性、支持重载和可变参数、封装性及静态与实例方法的灵活性等优点,但也存在性能开销、过度抽象、限制使用环境、参数传递开销、命名冲突和堆栈溢出等缺点。合理设计方法可确保代码高效且易维护。
|
5天前
|
安全 Java
java调用方法
java调用方法
18 4
|
10天前
|
Java
Java的方法详解
在 Java 中,方法是执行特定任务的代码块,包括定义、参数传递、返回值处理及重载等功能。
|
19天前
|
Java
Java的方法详解
Java的方法是类中的重要组成部分,用于定义类的行为。方法可以接收参数、执行操作并返回结果。其基本语法包括返回类型、方法名、参数列表和方法体。方法支持重载,即同名但参数不同的多个方法;静态方法则直接通过类名调用,无需实例化。此外,Java还支持可变参数,允许方法接收不定数量的参数。通过访问修饰符如`public`、`protected`、`private`,可以控制方法的可见性。方法是实现类功能的基本单元,增强了程序的灵活性和复用性。
|
26天前
|
存储 Java 程序员
优化Java多线程应用:是创建Thread对象直接调用start()方法?还是用个变量调用?
这篇文章探讨了Java中两种创建和启动线程的方法,并分析了它们的区别。作者建议直接调用 `Thread` 对象的 `start()` 方法,而非保持强引用,以避免内存泄漏、简化线程生命周期管理,并减少不必要的线程控制。文章详细解释了这种方法在使用 `ThreadLocal` 时的优势,并提供了代码示例。作者洛小豆,文章来源于稀土掘金。
|
6天前
|
Java 索引
java基础扫盲-String类常用的方法
java基础扫盲-String类常用的方法
下一篇
无影云桌面