final关键字,想请问一下下面的为什么是TRUE final修饰成员变量必须显示初始化,可是这跟s6有关系吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 final指向引用数据也就是String类的时候,他指向变量的地址是不会改变的。== 对于数字来说是比较其大小,而对对象来说,比较的是引用地址。像 “hello”,"world"这些字符串存放在常量池里面,当s4,s5声明的时候,他会先去常量池里面找,找不到才在常量池里创建。因为之前s1,s2创建的时候已经声明,所以s4,s5直接获取到常量池中的地址。如果你比较下会发现s1 == s4, s2 == s5是true。这和final 修饰没多大关系。同时s3进行+字符串的拼接,本质是调用了StringBulider这个类的append方法而s6再次进行拼接的时候,因为s4,s5被final修饰,s6同时也被默认声明为final 修饰,s4,s5拼接的结果是helloworld ,所以将直接找到s的地址,返回给s6,这时候s6 和s的地址是相同的,所以==比较的时候就返回true了。以上观点只是我的个人理解和猜想 的确跟final有关系,不加final就是false, final会吧数据放入常量池,让后传递给变量的是常量池中的地址,所以运算也会在常量池中进行,相当于进行了基本类型的运算。基本类型可以直接用==比较,常量池中值相等必定地址相等。而普通的string变量被赋予相当于new ,所以普通的string无法用==来比较。 求 jackcess 的crud例子或者其他相关资料 JAVASE 新手问题 如何在Tree中添加监听??? 关于elcipse插件开发扩展的理解,高手进来说两句 求一个能在java上运行的对XML加密并能够解密的程序?急! JFREECHART的问题? RandomAccessFile的readUTF()方法无法读取数据报表. 一个菜鸟问题:在写applet的过程中,怎么加上菜单呢? 安装java1.4(win98下)后运行程序时出现错误 请问各位大虾,java编译时的路径问题,谢谢。 请教一个关于static关键字的基础问题 Eclipse导入JAR包无法Import的问题
== 对于数字来说是比较其大小,而对对象来说,比较的是引用地址。
像 “hello”,"world"这些字符串存放在常量池里面,当s4,s5声明的时候,他会先去常量池里面找,找不到才在常量池里创建。因为之前s1,s2创建的时候已经声明,所以s4,s5直接获取到常量池中的地址。如果你比较下会发现s1 == s4, s2 == s5是true。这和final 修饰没多大关系。
同时s3进行+字符串的拼接,本质是调用了StringBulider这个类的append方法
而s6再次进行拼接的时候,因为s4,s5被final修饰,s6同时也被默认声明为final 修饰,s4,s5拼接的结果是helloworld ,所以将直接找到s的地址,返回给s6,这时候s6 和s的地址是相同的,所以==比较的时候就返回true了。以上观点只是我的个人理解和猜想
final会吧数据放入常量池,让后传递给变量的是常量池中的地址,所以运算也会在常量池中进行,相当于进行了基本类型的运算。基本类型可以直接用==比较,常量池中值相等必定地址相等。而普通的string变量被赋予相当于new ,所以普通的string无法用==来比较。