你不可不知的final(2)-修饰局部变量(失手率极高的一道面试题)

final,拒绝修改,防止世界被熊孩子破坏,维护世界和平!

今天我们看一道失手率极高的面试题,final修饰局部变量。

final修饰局部变量又可以分为修饰基本数据类型的局部变量和引用类型的局部变量两种情况。

我们先看final修饰基本数据类型的局部变量:

     int x  = 10;
	x = 100;

    final int x  = 10;
	x = 100;


第二种情况报错:

The final local variable x cannot be assigned. It must be blank and not using a compound assignment

这段代码大家都不会有疑问。

因此,我们的第一条结论:final修饰基本数据类型的局部变量,值不变。

我们再看final修饰引用类型的局部变量:

class Father{
	private int x = 10;
	
	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}
}

     Father f = new Father();
	System.out.println(s.getX());
	s.setX(100);
	System.out.println(s.getX());
输出10,100。


如果这样呢?

     final Father f = new Father();
	System.out.println(s.getX());
	s.setX(100);
	System.out.println(s.getX());
试一下,依然输出输出10,100。

什么鬼?说好的final呢?

我们可以试试这样:

    f = new Father();
终于报错:

The final local variable f cannot be assigned. It must be blank and not using a compound assignment
其实很好理解,引用类型的局部变量对应的是地址值(内存空间),即内存空间不变。

因此,我们的第二条结论:final修饰引用类型的局部变量,地址值不变。

ok,一道失手率极高的面试题,你中招了吗?

2条结论,Get。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值