4条回答 默认 最新
KiterCher 2018-12-29 07:25关注string 是对象,所以==对于string来说,是对比的内存地址,这个应该知道吧;
解释第一个:a==c//为true。 因为b被final修饰,那么它本身是一个常量,如果你原意的话,你可去看看编译后的class文件。里面变量c = "hello2",底层原理是java进行了优化。会查找内存中是否存在"hello2",如果存在,那么就将地址赋予c,很明显把a的内存地址赋予了c。所以才会a==c得到结果true
解释第二个:a==e//为false。因为string的+2,底层原理是,StringBuffer.append("2").toString(); 很明显,地址发生了改变,所以a==e得到结果会为false本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
