哎,又是一个final引发的问题

啥都不说了,今天我就是和final关键字给杠上了,看题:

public class Test {
    final int age;
    public Test(){
        age=10;
    }

    public static void main(String[ ] args) {
        System.out.println(new Test().age);
    }
}

执行结果如下所示:

思路分析:

今天忙活了一天有点累了,我也不扯那么多了,直接进入正题。我又做了个图,哈哈,不要打我,图这个东西可以声情并茂的解决问题,哦,不对,比喻错了,但是也可以解决问题!来看看执行顺序吧!这样就明白了。

前面不是说被final修饰过的不能发生改变吗?这句话一点也不错,确实没有发生改变,根据执行顺序我们可以看到,age属性的初始值就是10,因此执行结果是10很正常的。当代码改为如下时就能到达你心目中不能改变的要求啦!

public class Test {
    final int age;
    public Test(){
        age=10;
    }

    public void say(){
        age = 20; //执行错误,不能再次赋值
    }

    public static void main(String[ ] args) {
        System.out.println(new Test().age);
    }
}

当我们添加say()方法为age属性重新赋值时,程序就会出错。因此不能发生改变的情况是发生在初始化之后的。

public class Test {
    final int age = 8;
    public Test(){
        age=10;
    }

    public static void main(String[ ] args) {
        System.out.println(new Test().age);
    }
}

但是如上述情况中,age是直接就被初始化赋值了,因此在构造器中便不能再次赋值了。

时间: 2024-10-18 23:20:08

哎,又是一个final引发的问题的相关文章

一个贴子引发的对回调的思考

一个贴子引发的对回调的思考 网上看到一个贴子:http://topic.csdn.net/u/20080728/20/d60f719a-c103-44b8-8d0c-bc1c818b768a.html 觉得蛮有意思,在学习的工程中又引申出不少东西,真有趣!! 定义在类中方法之外的内部类分为实例内部类和静态内部类. 实例内部类自动持有外部类的实例的引用,即可以访问外部类的所有变量: 静态内部类可以直接访问外部类的静态成员: 定义在方法中的内部类叫局部内部类,该类只能访问被final修饰的局部变量和

Replication的犄角旮旯(七)-- 一个DDL引发的血案(下)(聊聊logreader的延迟)

原文:Replication的犄角旮旯(七)-- 一个DDL引发的血案(下)(聊聊logreader的延迟) <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Replication的犄角旮旯(三)--聊聊@bitmap Replication的犄角旮旯(四)--关于事务复制的监控 Replication的犄角旮旯(五)--关于复制identity列 Replicat

校花的贴身高手 第一卷 神奇的任务 第050章 一个篮球引发的血案(上)

第050章 一个篮球引发的血案(上) “嗷——”邹若明痛苦的嚎叫了一声,他的手腕已经被砸的脱臼了,篮球穿过了他的双手,直接向他的脸上拍去! “砰”,又是一声巨响,邹若明这次连嚎叫都没来得及嚎叫,就鼻孔飞血的倒在了地上,鲜血在空中划出了一道彩虹,很有冷酷的美感. 邹若明被直接拍的昏死了过去,一旁和他一起玩篮球的走狗们也都傻了眼了,这还是篮球么?简直就是炮弹了! 再看那个始作俑者,林逸很是没事儿人似的,拍了拍手上的灰尘,向教学楼继续走去.林逸心里暗暗不屑,和我装犊子呢?这次算是轻的了,要是还有下次,

又是一个夏天要过去了

似乎我能列出这十一年中每一个夏天和它们离开的时候. 而这一年的,也快了. 十一年前的洪水,逃离是开始,而整个夏天充满欢乐,有亲爱的伙伴和儿时的熟悉的家属区和在里面一起玩闹的场景.虽然排斥畏惧和埋怨着它的炎热,却又享受着它的欢乐.而秋意的来临则是它的结束. 而十年前的夏天已经记不得了,只记得夏天结束时的那棵白杨树.在树下犹豫了很久后做出了最后的选择,一家人的生活就变了节奏.还记得在家乡县城中医院附近租住的小房间,那时已经全是秋意了.而如今转眼十年都过去了. 中间略过很多年.而表哥书橱里的书在很早的

一个无线网卡引发的血案

经常听说一个馒头引发血案,今天我要说的是一个无线网卡的故事...... 最近有同事反应无线网卡连接公司网络无法正常连接,但是连接家里的网络是OK了,于是让桌面支持的同事检测了一下,结果他们把系统重新安装了也还是不能够正常连接,为此只能自己出马了: 1.更新驱动至最新版 查看了一下网卡型号为Intel wireless-N 1030 ,于是下载了一个最新的网卡驱动给其安装了Wifi_Intel_Win7_32_VER15312.zip 2.开启无线事件记录功能 采集日志发现以下错误: #Event

再论:p2p风控是p2p网站的核心——这又是一个文盲式屁话

全国上下,从政府到民间,所谓的专家和投资人基本都认为,p2p风控是p2p理财网站的核心,经过近来本人热心关注和常年互联网经验,我认为这又是一个文盲式屁话! 说出这样的话,基本上是不懂互联网的人或者是懂又不懂的那种"庸才",都被定性的思维模式和传统的观念束缚了. 在互联网思维中,风控只是互联网经营中重要的一个环节,而不是核心和重心. 如果非要说核心的话,那可以片面的说下,p2p理财模式和经营模式或者更确切的说人才模式才是核心. 互联网的基因是什么,她与生俱来就伴随着高风险高回报高损失而产

在10万以内判断,一个整数加上100后是一个完全平方数,再加上168又是一个完全平方数,求该数

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后 的结果满足如下条件,即是结果. 程序源代码: #include<stdio.h> #include<math.h> int main() { long int i, x, y; for (i = 1; i<100000; i++) { x = sqrt(i + 100); y = sq

Replication的犄角旮旯(六)-- 一个DDL引发的血案(上)(如何近似估算DDL操作进度)

原文:Replication的犄角旮旯(六)-- 一个DDL引发的血案(上)(如何近似估算DDL操作进度) <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Replication的犄角旮旯(三)--聊聊@bitmap Replication的犄角旮旯(四)--关于事务复制的监控 Replication的犄角旮旯(五)--关于复制identity列 Replicati

解决MATLAB出现&quot;??? Undefined function or variable &#39;x&#39;.&quot;的问题,一个等号引发的大战

最近写了一段代码,一直弹出“??? Undefined function or variable 'x'.”这个错误.仔细检查了一下,发现是赋值的问题.比如下面两段代码 h=1 h=x h=1表示的是将1赋值给h 而h=x表示的是将x赋值给h 如果我之前没有对x赋值过,此时突然加了“h=x”这段代码,那么窗口就会弹出“ ??? Undefined function or variable 'x'.”这个错误提醒,意思是让我先对x进行赋值,才能够将x的值赋给h,如果我没有先对x赋值,“h=x”这个