java判断字符串,为什么用"=="做不了判断,而要用equal()
2014-11-29 15:25
316 查看
1.字符串""与空对象NULL不是一个意思.字符串""是一个存在的对象,只不过对象特殊在于它代表了一个空的字符串.空对象是不存在的对象. 2.String类重载了equals方法,equals方法比较字符串是否完全匹配,所以 String s="a"; boolean b=(s.equals("a")); 则得到的b为true,而==则是比较左右两边的对象是否指向内存的同一位置,事实上可以认为是比较HashCode(哈希码)是否相等,如: String a="john"; String b=a; 则"a==b",但如果: String a="john"; boolean b=(a=="john"); 则b为false!因为a虽然是"john",但在第二句中的"john"字符串是一个新创建的匿名String类对象!显然新建的对象与原来的对象在内存中的地址并不相同. HashCode能证明这个问题.
相关文章推荐
- java中,字符串String类型的""和null值的区别
- JAVA: 为什么要使用"抽象类"? 使用"抽象类"有什么好处?
- java 中 12.0f-11.9f=0.10000038,"减不尽"为什么?
- 判断一个字符串中,"sunJavaibmjAvaoraclejaVahelloJAVAgoodjava" java 字符串出现的次数, 并把所有的 java改成大写或小写。
- java字符串“”在js中为"\"\""
- JAVA中“==”和"equal"的区别
- 判断二个字符串是不是"相同字母异序词"
- 【Java性能】你需要知道的:Java字符串连接使用"+"和StringBuilder性能比较
- Java 用"|"作为分隔符分割字符串
- "Unicode"编码,java实现一个按字节截取字符串的子串的方法
- java: -source 1.6 中不支持 switch 中存在字符串 和 "compileDebugJavaWithJavac"的错误解决
- JAVA判断时间格式为 "YYYY-MM-DD"
- Java字符串"学java"占多少内存空间
- 【转+分析】JAVA: 为什么要使用"抽象类"? 使用"抽象类"有什么好处?
- 写一个函数判断字符串中"{"与"}","["与"]","("与")"匹配,"{"必须在"}"前面,"["必须在"]"前面,"("必须在")"前面,可以嵌套
- JAVA: 为什么要使用"抽象类"? 使用"抽象类"有什么好处?
- 判断一个字符串中的"( )"是否配对
- ""(空字符串) 、" "(空格字符串)、empty() 判断字符串是否为空
- java判断""和null的方法
- JAVA String.split()以"\t"分割字符串的问题