Java

Java 知识量:11 - 45 - 220

2.6 方法><

定义方法- 2.6.1 -

在Java中,方法的定义遵循以下格式:

modifier returnType methodName(parameters) {  
  // method body  
}

其中:

  • modifier:定义方法的访问类型。主要有public, private, protected, default(如果没有写任何修饰符,则默认为此)。

  • returnType:定义方法返回的值的数据类型。如果方法不返回任何值,则使用关键字void。

  • methodName:是你定义的这个方法的名称。

  • parameters:放在括号内,中间用逗号分隔。参数是可选的,方法可以没有参数。

例如,一个简单的方法,用于返回两个整数的和,可以这样定义:

public int add(int num1, int num2) {  
  int sum = num1 + num2;   
  return sum;   
}

在这个例子中,public是修饰符,int是返回类型,add是方法名,(int num1, int num2)是参数列表。

方法修饰符- 2.6.2 -

方法修饰符是用来改变方法的行为或者指定方法的访问权限的关键字。以下是一些常见的方法修饰符:

  • public: 表示这个方法可以被任何其他类访问。

  • protected: 表示这个方法可以被其所在类、同一包中的其他类、以及所有子类访问。

  • private: 表示这个方法只能被其所在类访问。

  • default (或者没有修饰符): 如果没有明确指定访问修饰符,那么方法就是包级别的,意味着它可以被同一包中的任何类访问。

  • static: 这个修饰符表示这个方法属于类本身,而不是类的实例。你可以通过类名直接调用静态方法,而无需创建类的实例。

  • final: 这个修饰符表示这个方法不能被重写(override)。

  • abstract: 这个修饰符表示这个方法是抽象的,它只有声明没有实现。抽象方法只能存在于抽象类中。

  • synchronized: 这个修饰符表示这个方法在多线程环境中是线程安全的,每次只允许一个线程进入这个方法。

  • native: 这个修饰符表示这个方法使用了Java无法理解的本地代码(如C或C++)。

  • strictfp: 这个修饰符用于浮点计算,可以确保在不同平台上的结果一致。

注意:并不是所有的修饰符都可以同时使用。例如,一个方法不能同时是abstract和final,因为abstract意味着有声明无实现,而final意味着不能被重写。同时,一个方法也不能同时是native和synchronized,因为native表示使用的是本地代码,而synchronized则是Java的多线程控制关键字。

已检异常和未检异常- 2.6.3 -

在Java编程语言中,异常是程序在执行过程中出现的问题或意外情况,它会中断正常的执行流程。Java提供了异常处理机制,帮助开发者处理程序中可能出现的各种异常。

在Java中,异常可以分为两种类型:已检异常(Checked Exceptions)和未检异常(Unchecked Exceptions)。

1、已检异常(Checked Exceptions):已检异常是那些编译器要求必须处理的异常。对于已检异常,编程时必须使用try-catch块或者在方法签名中使用throws关键字进行处理。已检异常通常是可以预见的,而且它们通常是可以被恢复的。例如,尝试打开一个不存在的文件时会抛出一个FileNotFoundException。

例如:

try {  
    File file = new File("non_existent_file.txt");  
    FileReader fr = new FileReader(file);  
} catch (FileNotFoundException e) {  
    e.printStackTrace();  
}

或者在方法签名中使用throws关键字:

public void readFile(String fileName) throws FileNotFoundException {  
    File file = new File(fileName);  
    FileReader fr = new FileReader(file);  
}

2、未检异常(Unchecked Exceptions):未检异常是那些运行时异常的子类,编译器不会强制要求处理这些异常。未检异常通常是由程序错误导致的,如空指针访问、数组越界等。这些异常通常是不能被恢复的,因此处理它们的最好方式通常是让程序终止。

例如:

public void someMethod() {  
    int[] arr = new int[5];  
    System.out.println(arr[10]); // ArrayIndexOutOfBoundsException  
}

在上面的例子中,程序将抛出一个ArrayIndexOutOfBoundsException,这是一个未检异常。如果程序员没有处理这个异常,程序将会终止,并打印出异常的堆栈跟踪信息。

变长参数列表- 2.6.4 -

可以使用变长参数列表来定义方法,以允许方法接受任意数量的参数。变长参数列表可以使用三个点(...)表示,放在方法的参数列表后面。

以下是一个使用变长参数列表的示例方法:

public static void printValues(int... values) {  
    for (int i : values) {  
        System.out.println(i);  
    }  
}

在这个方法中,参数 values 是一个变长参数列表,可以接受任意数量的整数作为参数。在方法内部,可以将参数当作一个数组来处理。

使用变长参数列表的方法可以像普通方法一样被调用,但是传递给它的参数数量可以是任意的。例如,可以像下面这样调用 printValues 方法:

printValues(1, 2, 3);  
printValues(4);  
printValues(5, 6, 7, 8);

这些调用都是有效的,因为 printValues 方法接受任意数量的整数参数。