目录
方法
定义
方法就是一段可以重复调用的代码。
在一些其它语言中方法指过程和函数。一个返回非void类型返回值的方法称为函数;一个返回void类型返回值的方法叫做过程。
其格式如下:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,...){
...
方法体
...
return 返回值;
}
- 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
- 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
- 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
- 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
- 方法体:方法体包含具体的语句,定义该方法的功能。
方法的重载
方法重载,就是在同一个作用域内方法名相同但参数个数或参数类型不同的方法。
public class Dome{
public static void main (String[] args){
int sum1 = add(1,2);
int sum2 = add(1,2,3);
double sum3 = add(1.1,1.2);
System.out.println("sum1 = " + sum1);
System.out.println("sum2 = " + sum2);
System.out.println("sum3 = " + sum3);
}
public static int add(int x,int y){
return x + y;
}
public static int add(int x,int y,int z){ //传入参数个数不同
return x + y + z;
}
public static double add(int x,int y){ //传入参数数据类型不同
return x + y;
}
}
注意:方法的重载与返回值类型无关。
类与对象
类的定义
类是对象的抽象,用于描述一组对象的共同特征和行为。
在面向对象编程中,通过定义类来描述对象的属性和行为的过程。类是一种抽象的数据类型,它由属性和方法组成。属性表示对象的特征或状态,而方法表示对象的行为或操作。类定义了对象的结构和行为模板,通过创建对象的实例,可以使用类中定义的属性和方法来操作对象。
类的定义通常包括类名、属性和方法。类名表示类的名称,用于区分不同的类。属性是类中的成员变量,用于表示对象的特征或状态。方法是类中的成员函数,用于定义对象的行为或操作。在类的定义中,可以对属性和方法进行访问修饰符的设置,例如public、private、protected等,用于控制属性和方法的访问权限。
类的定义是面向对象编程的基础,它将数据和行为封装在一起,提供了一种组织和管理代码的方式。通过定义类,可以创建多个对象的实例,每个对象都具有自己的属性和行为。类的定义使得代码具有可重用性,可以通过创建不同的对象来满足不同的需求,同时也方便了代码的维护和扩展。
在Java中定义类,使用关键字class完成。语法如下:
class 类名称 {
属性 (变量) ;
行为 (方法) ;
}
对象的定义
对象的定义是指在对象导向编程中,对象是指具有状态、行为和标识的实体。对象由属性(状态)和方法(行为)组成,可以通过调用方法来实现对对象的操作和交互。每个对象都有自己的唯一标识,用于区分其他对象。对象可以通过类来创建,类是对象的模板或蓝图,用于定义对象的属性和方法。对象之间可以通过消息传递来进行通信和交互,一个对象的方法可以调用其他对象的方法。对象的定义是面向对象编程的基础,它可以提供更灵活和可维护的代码结构,使程序更易于理解和扩展。
对象的产生格式如下:
(1)声明并实例化对象
类名称 对象名称 = new 类名称 () ;
(2)先声明对象,然后实例化对象:
类名称 对象名称 = null ;
对象名称 = new 类名称 () ;
当一个实例化对象产生之后,可以按照如下的方式进行类的操作:
对象.属性:表示调用类之中的属性;
对象.方法():表示调用类之中的方法。
两种不同的实例化方式区别,看这一篇写的很详细 http://t.csdnimg.cn/SYICl
类和对象的区别
类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。
异常
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。
所有的异常类是从 java.lang.Exception 类继承的子类。
Exception 类是 Throwable 类的子类。除了Exception类外,Throwable还有一个子类Error 。
Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。
Error 用来指示运行时环境发生的错误。
Error
- Error 用来指示运行时环境发生的错误。
- 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。
- Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。
- 大多数这样的错误都是异常条件。虽然 ThreadDeath 错误是一个“正规”的条件,但它也是 Error 的子类,因为大多数应用程序都不应该试图捕获它。
- 在执行该方法期间,无需在其 throws 子句中声明可能抛出但是未能捕获的 Error 的任何子类,因为这些错误可能是再也不会发生的异常条件。
Exception
-
Exception 异常主要分为两类
- 一类是 IOException(I/O 输入输出异常),其中 IOException 及其子类异常又被称作「受查异常」最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。受查异常就是指,编译器在编译期间要求必须得到处理的那些异常,你必须在编译期处理了。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
- 另一类是 RuntimeException(运行时异常),RuntimeException 被称作「非受查异常」。运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
异常方法
下面的列表是 Throwable 类的主要方法:
序号 | 方法及说明 |
---|---|
1 | public String getMessage() 返回关于发生的异常的详细信息。这个消息在Throwable 类的构造函数中初始化了。 |
2 | public Throwable getCause() 返回一个 Throwable 对象代表异常原因。 |
3 | public String toString() 返回此 Throwable 的简短描述。 |
4 | public void printStackTrace() 将此 Throwable 及其回溯打印到标准错误流。。 |
5 | public StackTraceElement [] getStackTrace() 返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。 |
6 | public Throwable fillInStackTrace() 用当前的调用栈层次填充Throwable 对象栈层次,添加到栈层次任何先前信息中。 |
捕获异常
使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。
try/catch代码块中的代码称为保护代码,使用 try/catch 的语法如下:
try { // 程序代码 }catch(ExceptionName e1) { //Catch 块 }
在try代码块中编写可能发生异常的Java语句,catch代码块中编写针对异常进行处理的代码。当try代码块中的程序发生了异常,系统会将异常的信息封装成一个异常对象,并将这个对象传递给catch代码块进行处理。catch代码块需要一个参数指明它所能够接收的异常类型,这个参数的类型必须是Exception类或其子类
- catch 不能独立于 try 存在。
- 在 try/catch 后面添加 finally 块并非强制性要求的。
- try 代码后不能既没 catch 块也没 finally 块。
- try, catch, finally 块之间不能添加任何代码。
注意:catch代码块对异常处理完毕后,程序仍会向下执行,而不会终止程序!
当希望有些语句无论程序是否发生异常都要执行,这时就可以在try…catch语句后,加一个finally代码块(finally中的代码块在有一种情况下是不会执行的,那就是在try...catch中执行了System.exit(0)语句。System.exit(0)表示退出当前的Java虚拟机,Java虚拟机停止了,任何代码都不能再执行了)
throw 关键字
throw 关键字用于在当前方法中抛出一个异常。
通常情况下,当代码执行到某个条件下无法继续正常执行时,可以使用 throw 关键字抛出异常,以告知调用者当前代码的执行状态。
eg:
public void checkNumber(int num) {
if (num < 0) {
throw new IllegalArgumentException("Number must be positive");
}
}
throws 关键字
throws 关键字用于在方法声明中指定该方法可能抛出的异常。当方法内部抛出指定类型的异常时,该异常会被传递给调用该方法的代码,并在该代码中处理异常。
eg:
public void readFile(String filePath) throws IOException,RemoteException{
//一个方法可以声明抛出多个异常,多个异常之间用逗号隔开
BufferedReader reader = new BufferedReader(new FileReader(filePath));
String line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
reader.close();
}
注意:声明异常的关键字是throws,抛出异常的关键字是throw
声明自定义异常
在 Java 中你可以自定义异常。编写自己的异常类时需要记住下面的几点。
- 所有异常都必须是 Throwable 的子类。
- 如果希望写一个检查性异常类,则需要继承 Exception 类。
- 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。
eg:
class MyException extends Exception{
}
只继承Exception 类来创建的异常类是检查性异常类。
一个异常类和其它任何类一样,包含有变量和方法。
以下是实现自定义异常的一般步骤:
- 创建一个新的类,命名为你想要的异常名称,并让它继承自Exception或RuntimeException类。通常情况下,如果你的异常是检查异常(需要在代码中明确处理),则应该让它继承自Exception类;如果你的异常是运行时异常(通常由编程错误导致),则应该让它继承自RuntimeException类。
public class CustomException extends Exception { // 或者 extends RuntimeException
// 构造方法
public CustomException() {
super();
}
public CustomException(String message) {
super(message);
}
// 可以在这里添加其他自定义方法
}
- 在自定义异常类中,你可以添加一些额外的自定义方法,以满足你的需求。
public class CustomException extends Exception {
// 构造方法
public CustomException() {
super();
}
public CustomException(String message) {
super(message);
}
// 自定义方法
public void printCustomMessage() {
System.out.println("This is a custom exception.");
}
}
- 在你的代码中使用自定义异常。可以像使用任何其他异常一样,使用
throw
关键字抛出异常,或者使用try-catch
块来捕获和处理异常。
public class MyClass {
public void myMethod() throws CustomException {
// 抛出自定义异常
throw new CustomException("An error occurred in myMethod.");
}
public static void main(String[] args) {
try {
MyClass obj = new MyClass();
obj.myMethod();
} catch (CustomException e) {
System.out.println(e.getMessage()); // 输出异常信息
e.printCustomMessage(); // 调用自定义方法
}
}
}
通过以上步骤,你就可以在Java中实现自定义异常,并在程序中使用它来处理特定的错误或异常情况。