Java字符串比较问题的问题求助

String b = "123";创建了一个值为123的字符串比较问題对象, 并将变量b指向123字符串比较问题对象所在的地址.
String c = "123";检测到之前的字符串比较问题对象123在常量池内, 直接将变量c指向常量池中已有的123的地址.
此时c==btrue, 因为bc都指向同一个常量池内的123地址.

大概就是这样. 应该.

简单地说”==”测试两个字符串仳较问题的引用是否相同,equals()测试两个字符串比较问题的值是否相同

除非你希望检查两个字符串比较问题是

否是同一个对象,否则最好用equals()

如果你知道字符串比较问题驻留机制会更好。

2.为什么对于安全性敏感的信息char[]要

字符串比较问题是不变的这也就意味着字符串比较问题┅旦被创建,它们将一直保持在那直到被垃

圾回收器清理为止而对于一个数组,你

它的元素这样一来,安全性敏感信息(比如密码)将不會出现在系统的任何其它地方

对于Java7答案是肯定的。从JDK7开始我们可以使用String作为switch语句的条件。在JDK6之前我们不能使

第一个为false 是因为s3 与 s1 + s2 进行比较的时候用的是 ==  比较的是引用变量里存储的地址值首先,为s1 + s2 开辟一块新的内存空间 然后拼接字符串比较问题进行存储。

s3 == "Hello" + "World"; 先将Hello和world进行拼接然後比较他们的地址值得,HelloWorld拼接完成后查询字符串比较问题常量池中是否存在 HelloWorld 结果存在,就不再创建了所以比较的地址值正好是s3 的字符串比较问题所存储的地址

字符串比较问题如果是变量的话,例如 s1 s2 首先开辟一块空间(自己理解这个空间应在还是在字符串比较问题常量池中)然后进行拼接

字符串比较问题如果是常量的话 比如“Hello” "World" 先进行拼接,然后在常量池中找如果有就返回常量池的地址,如果没有就创建

我要回帖

更多关于 字符串比较问题 的文章

 

随机推荐