final关键字、static关键字、异常、抽象类和接口(java基础,初学者必看)

本文介绍了Java中的final关键字,用于声明不可变的类、变量和方法,以及static关键字,用于创建静态成员和方法,包括静态变量、静态方法、静态块和静态嵌套类。同时,文章详细阐述了Java异常处理机制,包括异常体系、受检异常和非受检异常的处理。最后,讨论了抽象类与接口的区别,强调它们在面向对象编程中的角色。

目录

final关键字

static关键字

使用静态成员和方法有以下几个特点和用途:

异常 

 Java 的异常体系

java异常体系结构图 

抽象类与接口


final关键字

  • 修饰类代表类不可继承

  • 修饰变量代表变量不可以被重新赋值

  • 修饰方法代表方法不可被重写(最终方法)

  • final还有防止指令重排序的作用(并发)

static关键字

"static"表示在编程语言中定义静态成员或方法。用于变量、方法、块或嵌套类。

1. 静态变量:
   当一个变量被声明为静态变量时,它的值不依赖于特定对象的实例,而是被所有该类的实例共享。静态变量只有一份内存空间,无论创建了多少个类的实例,它们都共享同一个值。静态变量通常用于存储全局状态或在类中共享信息。

2. 静态方法:
   静态方法是属于类本身而不是类的实例的方法。它们不需要对类进行实例化就可以直接调用。静态方法不能直接访问类的非静态成员,因为它们没有特定的实例上下文。静态方法通常用于执行不依赖于特定实例的操作,例如工具方法或计算公式。

3. 静态块:
   静态块是一段代码块,在类被加载时执行且仅执行一次。它用于在类加载时进行初始化操作,例如初始化静态变量或执行其他必要的设置。

4. 静态嵌套类:
   静态嵌套类是定义在另一个类内部的类,但与外部类的实例无关。静态嵌套类不需要依赖外部类的实例,因此可以直接通过外部类名称来访问。

使用静态成员和方法有以下几个特点和用途:


- 静态成员对所有类的实例都是共享的,可以在不创建类的实例的情况下使用。
- 静态方法没有对特定实例的依赖,可以通过类名直接调用。
- 静态成员和方法属于类本身,而不是某个特定的对象。
- 静态成员和方法可以在程序的任何地方使用,无需创建对象实例。
- 静态成员和方法通常用于实现工具方法、常量、单例模式、静态计数器等功能。

异常 

        当在 Java 中发生错误或异常情况时,程序会抛出异常。Java 的异常体系是用于处理这些异常情况的结构。

 Java 的异常体系

1. Throwable:
   `Throwable` 是 Java 异常体系的顶层父类。它有两个子类:`Error` 和 `Exception`。所有的异常都是 `Throwable` 的子类。

2. Error:
   `Error` 是指那些严重错误,通常表示 JVM 或系统本身出现了问题,无法恢复。例如 `OutOfMemoryError`、`StackOverflowError` 等,它们一般不能被捕获和处理。

3. Exception:
   `Exception` 是指一般的异常情况,可以由程序进行捕获和处理。`Exception` 有很多子类,可以根据具体情况选择合适的子类来处理异常。

4. Checked Exception(受检异常——强制处理,不处理则无法运行程序):
   受检异常是指在方法中可能发生的异常,编译器会强制要求开发者在代码中进行处理。例如 `IOException`、`SQLException` 等。在方法声明中需要显示地声明受检异常或使用 `try-catch` 块进行处理。

5. Unchecked Exception(非受检异常——不强制处理,到运行的时候出错了才会在控制台报错):
   非受检异常是指在运行过程中可能发生的异常,编译器不会强制要求开发者在代码中进行处理。例如 `NullPointerException`、`ArrayIndexOutOfBoundsException` 等。这些异常通常是由程序逻辑错误引起的,应该通过修改代码来避免。

6. RuntimeException:
   `RuntimeException` 是非受检异常的子类。与其他非受检异常不同,编译器不会强制要求捕获或声明这些异常。常见的 `RuntimeException` 包括 `NullPointerException`、`ArrayIndexOutOfBoundsException`、`ArithmeticException` 等。

        当异常发生时,如果没有合适的异常处理机制,程序会终止执行并抛出异常信息。为了处理异常情况,Java 提供了一种异常处理的机制,即使用 `try-catch-finally` 块。

        - `try` 块中包含可能发生异常的代码。
        - `catch` 块用于捕获异常,并根据需要进行处理。
        - `finally` 块中的代码不管是否发生异常,都会被执行。

        在处理异常时,可以根据具体情况选择不同的异常处理策略,例如捕获异常并进行处理、将异常向上抛出、日志记录等。

java异常体系结构图 

抽象类与接口

一些知识点——

       1、 抽象类归根结底是类,普通类的特征抽象类也具备,只能单继承

        2、接口可以多实现,接口中的方法除了default方法和static方法是没有方法体的

        3、在使用上区别并不大,都是偏向于顶层父类

        4、接口在编程中更偏向于有能力、动作行为之类,抽象类更偏向于事物的本质(举一个通俗一点的例子就是,人和动物这种关系,动物更适合以抽象类的形式存在)

        5、接口中所有的方法默认是public,属性都是static final的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值