Java几个关键字原理与用法

本文深入解析Java中的transient、final、volatile等关键字的功能与应用场景,同时介绍了@Override的作用及finally的执行顺序,帮助开发者更好地理解和使用这些关键字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中的transient、instanceof、volatile、synchronized、final、static、const 原理及用法。


1.transient

java 的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。
Java transient关键字使用小记

2.final

final 在 Java 中是一个保留的关键字,可以声明变量、方法、类。
(1)当用 final 修饰一个类时,表明这个类不能被继承。
(2)使用 final 方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。final方法是静态绑定的,在编译时候就确定是哪个类的方法,所以比非final方法快一些。
(3)final修饰的常量普通变量不可变,修饰的引用变量不可变,引用对象的内容可以改变。
使用final的优点:
final方法比非final快一些
final关键字提高了性能。JVM和Java应用都会缓存final变量。
final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
使用final关键字,JVM会对方法、变量及类进行优化。
final关键字

3.Override的作用

@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:
(1)可以当注释用,方便阅读;
(2)编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。
java中@Override的作用

4.finally

异常处理的执行顺序(针对try{}catch{}finally{}而言)
对于try{}catch{}finally{}而言,它们的执行顺序很简单,如果在try{}中捕获相应的异常,中断当前代码的执行,转而去执行catch{}中的内容,最后去执行 finally{}中方法,一般来说finally中的方法都是会被执行的,其中finally中很大程度上用于资源的释放。
下面讲解一些我们java程序员需要注意的地方。
a、finally中的代码总是会执行吗?
答:no,如果一个方法内在执行try{}语句之前就已经return了,那么finally语句指定不会执行了。因为它根本没有进入try语句中如果在一个try语句中调用System.exit(0);方法,那么就会退出当前java虚拟机,那么finally也就没有执行的机会了。
b、finally在return之前执行还是在return之后执行?
答:很多人可能会说在return执行之前执行。我的答案是在return中间执行,是不是很特别。具体参见java中finally执行顺序
观察以下代码:

package FileUtil;

public class finallyTest {
    public static int method(){
        int x=1;
        try{
            return x;
        }catch(Exception e)
        {
            return 0;
        }finally{
            ++x;
        }
    }
    public static int method2(){
        int x=1;
        try{
            return x++;
        }catch(Exception e)
        {
            return 0;
        }finally{
            return ++x;
        }
    }
    public static void main(String[] args) {
        System.out.println(method());//1
        System.out.println(method2());//3
    }
}

输出分别是1和3。
method():首先程序在执行到try{}语句中的return方法后,就会先返回相应的值,并把相应的值存储在一个临时栈中去保存这个结果。这时临时栈中存储的值为1。但是程序不会立刻返回,转而回去执行finally中的方法,++x,在finally执行完后,方法全部执行完,这时会再次调用return方法,注意这时 不在是返回值,而是告诉主调程序,被调程序已经执行完了,你可以接着去执行你主程序的其它方法了。但是请注意,此时返回的值还是原来保存在临时栈中的值1。
method2():这里在try{}语句中执行到return会在临时栈中存储值返回值的变量。接着回去执行finally里面的内容,这时执行finally中的return方法,这时 临时栈中的值就是变为 3,会覆盖原来临时栈中的值1.所以它的返回值为3。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值