Java中的final关键字

在Java的50多种关键字中,static和final是必须要掌握的,不同于其他关键字的是,他们在修饰不同东西时,有着很多不同的方法。若能在恰当的场合合理应用,也能一定程度上提升程序的性能。
final本身是最终的意思,所以按照字面大体理解就是:当一个”东西“一旦被final修饰,就是最后一次了,不能再变了。当然这是不严谨的,下边来详细说明一下final的三种常用用法:
修饰变量

1.修饰基本数据类型的变量
通过final修饰的变量只能被赋值一次,且一生一世不许改变。并且对于局部变量(方法内的变量),在使用该变量前,要对他进行初始化。

final int a = 1;//第一种
final int b;//第二种
b=2;
system.out.println(b);

2.修饰引用型变量
引用变量被final修饰之后,不能再指向其他对象;但是它指向的对象的内容是可变的。

public class Test {
    public static void main(String[] args)  {
        final A a = new A();
        System.out.println(++a.i);
 
    }
}
class A {
    public int i = 0;
    }
    //输出结果为1

3.修饰成员变量(方法外的变量)

  • 由于成员变量具有默认值,所以被final修饰时需要手动赋值。
  • 赋值方式有两种:直接赋值或通过构造方法赋值。
public class Test{
		final i =2;
		final int a ;
	public  Test(){
		a=1;
		}
}		

4.final变量与普通变量的区别:
当final变量是基本数据类型或String类型时,当编译器在编译期间就知道了确切值之后,编译器会将其看作常量使用,所以当使用b变量的时候直接替换为它的值;

public class Test {
    public static void main(String[] args)  {
        String a = "helloworld"; 
        final String b = "hello";
        String d = "hello";
        String c = b + "world"; 
        String e = d + "world";
        System.out.println((a == c));
        System.out.println((a == e));
    }
    //输出结果
    >true
    >false

但有一点需要注意:只有在编译期间能确切知道final变量值的情况下,编译器才会进行这样的优化。

public class Test {
    public static void main(String[] args)  {
        String a = "hello2"; 
        final String b = getHello();
        String c = b + 2; 
        System.out.println((a == c));
 
    }   
    public static String getHello() {
        return "hello";
    }
}
  //输出结果为false

修饰方法
被final修饰的方法不能被覆盖重写。

 修饰符 final 返回值类型 方法名称(参数列表){
            // 方法体
        }

修饰类
被final修饰的类不能被其他类继承(太监类),并且,其中所有的成员方法都不能被覆盖重写(因为没儿子,当然不能被重写)

public final class 类名称 {
            //......
        }

总结

  • 被final修饰的变量只能赋值一次,不能再改变。成员变量可以直接赋值或在构造方法中赋值
  • 被final修饰的引用变量,不能改变引用的指向(只能指向同一处地址),但是能够修改指向对象的内容。
  • 被final修饰的方法不能被重写
  • 被final修饰的类不能被继承
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值