java final关键字

本文详细介绍了Java中的final关键字,包括final修饰变量、方法和类的含义与使用。final修饰变量时,基本类型变量数值不可变,引用类型变量不能重新赋值但对象内容可变。final修饰方法阻止子类重写,final修饰类则不可被继承。同时,文中通过示例区分了final和static变量的区别,展示了它们在内存和继承特性上的不同。
摘要由CSDN通过智能技术生成

final关键字可以修饰变量、方法和类。
1.final修饰变量:
对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;
如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
举例:final修饰引用类型变量,变量地址不变,但是地址指向对象的值可以改变。

  int[] a=new int[3];
     final int [] b=a;
     System.out.print("B1:"+b+"\n");
     System.out.print("B2:"+b[0]+"\n");
     a[0]=3;
     System.out.print("b1:"+b+"\n");
     System.out.print("b2:"+b[0]);

输出:
在这里插入图片描述
2.final修饰方法:
只有在想明确禁止该方法在子类中被重写的情况下才将方法设置为final的(类的private方法会隐式地被指定为final方法。)
3.final修饰类:
当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。
4.final和static
很多时候会容易把static和final关键字混淆,static修饰变量属于类变量,只保存一份副本,而final修饰变量为实例变量。看下面这个例子:

public class Test {
    public static void main(String[] args)  {
        MyClass myClass1 = new MyClass();
        MyClass myClass2 = new MyClass();
        System.out.println(myClass1.i);
        System.out.println(myClass1.j);
        System.out.println(myClass2.i);
        System.out.println(myClass2.j);
 
    }
}
 
class MyClass {
    public final double i = Math.random();
    public static double j = Math.random();
}

运行这段代码就会发现,每次打印的两个j值都是一样的,而i的值却是不同的。从这里就可以知道final和static变量的区别了。
在这里插入图片描述

参考:http://www.cnblogs.com/dolphin0520/p/3736238.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值