温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
好,那关于string的话呢,我们就讲到这儿了啊,诶刚才那个课件的话呢,诶同学过来问了一个小问题,这个小问题呢还挺好的,挺好的,所以我这块呢,也把这个呢也说一下啊,你看咱们上午讲这个string的这个内存结构的时候呢,说过这个事儿了,说常量跟常量呢,它的拼接呢,是在常量池,对就是这样的情况,像这个567的话呢,这都是在堆空间,哎这里边呢,因为我们的S1S2或者它俩呢是变量,只要有变量参与运算的话呢,结构就在堆好,那我们做这样一个小问题,嗯,这个题目的话呢,我倒是没见过啊,但是呢,呃同学提到了,说这个网上见过这个题,那咱们呢,呃,就解释一下,也是用我们这个逻辑呢,是完全可以解释的,我现在呢有一个string string,我叫S1,这个S1的话呢,我们就附一个值啊,比如还叫JAVA1啊,或者我直接就给它写全了JAVA1喊杜。这是它,然后接下来呢,我这个string来一个S2 S2的话呢,叫JAVA1,然后接下来string的S3,哎,就等于S2再去加上一个很度op,好,此时呢,我们去比较一下叫S,嗯,这个S1和这个S3。
01:22
这显然是false吧,哎,这是个false,这个呢没问题啊,那么我再重新定义一个变量吧,我这儿呢,把这个string s,嗯,来一个四,这个四的话呢,我叫JAVA1,但这个时候呢,跟我们这个S2呢有一个区别,就是我在这个位置呢,将我们这个变量呢加了一个final,首先final呢,我们这是在方法里边定义的一个变量了啊呃,首先final是可以来修饰局部变量的。啊,照样呢,表示它是个常量了,那之后的话呢,我们还是呃这个S3,那我就再换一套了,String的这个S5。
02:01
这个S5的话呢,我让他是S4,再加上咱们后边的这个。嗯,接着呢,我们就让这个S1呢,跟这个S5去比较一下,说白了就是我们上边就是其实就是这个事,把这个S2呢改成个final了,那么此时S4加上韩度,那么S1和S5是什么情况呢?是不是就变成处了?其实这个呢,就是在这个基础上,我们把这个S2呢,改成个final了,那为什么说改之前,改之前呢,咱们讲过了啊,那改之后呢,怎么它这就变成true了呢?其实还是这个事,还是这个事儿,咱们说常量跟常量的拼接呢,就在常量池,那我问S4是常量还是变量。对,加final了吗?哎,加final以后呢,这个时候的这S它就是一个常量,那既然常量了,所以它拼接完以后还是常量值,所以呢,它就是个出了。
03:03
诶这个呢,还是个false,所以呢,大家不要去看什么呢,说这个S4S3啊,说这个有这个东西参与的,这个东西呢,咱们只是习惯上都叫变量了,哎,那具体来讲的话呢,嗯,他要加final,那肯定还是常量啊,那还是常量值啊,所以说我们这个结论呢,是不是仍然是对的。哎,大家还是往这块去靠就行,只不过呢,这个点确实咱们没见过这样写的是吧?啊这个呢,就是一个,那确实它就是一个面试题了,比较纯粹的面试题,平常咱们定义这个局部变量的时候,有时候也很少去给它加上一个final了,行,这块呢,稍微注意一下这个问题啊,就是结果的话呢,这是一个触。
我来说两句