字符串比较问题(java)
来源:互联网 发布:安徽网络电视台客户端 编辑:程序博客网 时间:2024/05/01 04:02
1.非new的比较
String strA = "123";
String strB = "123";
if (strA == strB)
System.out.println("equal");
else
System.out.println("not equal!");
//结果是输出equal,这个大家一目了然,但真正的含义是什么那,我个人分析如下:
String strA----->在内存申请了一个空间,比如地址是0xFFFF1,0xFFFF1的内容是存储"123"的地址,
比如"123"的地址是0x56863;
那么String strB ---->在内存也申请了一个空间,比如地址是0xFFFFE,,0xFFFFE的内容也是存储"123"的地址(0x56863)
换句话说是strA, strB指向了同一个地址。
那么strA == strB 比较的内容是 0x56863 == 0x56863,很显然是相等的。也就是说String strA = "123";这句执行后123被
分配了内存,String strB = "123";就不再被分配了。
如下图
strA(0xFFFF1) "123"(0x56863) strB(0xFFFFE)
---------- ----------- ----------
| 0x56863| -------->| "123" |<--------| 0x56863 |
---------- ----------- ----------
2.new的比较
String strA = new String("123");
String strB = new String("123");
if (strA == strB)
System.out.println("equal");
else
System.out.println("not equal!");
//结果是输出not equal!
从1的比较大家可以看出 两次的new String("123"); strA所指向的内存地址与strB所指向的内存地址是不同的
如下图所示,存储123的地址分别是0x56863和0x56234。那么此时strA == strB的比较也就是0x56863 == 0x56234
的比较,所以输出的结果是not equal!
strA(0xFFFF1) "123"(0x56863)
---------- -----------
| 0x56863| -------->| "123" |
---------- -----------
strB(0xFFFFE) "123"(0x56234)
---------- -----------
| 0x56234| -------->| "123" |
---------- -----------
3.赋值后的比较
String strA = new String("123");
String strB = strA;
if (strA == strB)
System.out.println("equal");
else
System.out.println("not equal!");
//结果是输出equal!
strB没有创建新的对象,strA的内容(地址)被拷贝到了strB,使它们指向同一个对象123.
strA的内容是0x56863。
如下图所示
strA(0xFFFF1) "123"(0x56863) strB(0xFFFFE)
---------- ----------- ----------
| 0x56863| -------->| "123" |<--------| 0x56863 |
---------- ----------- ----------
***希望大家再做比较操作的时候还是用equal比较好***
今天这个问题的个人说明就到这里了。如有问题请给予指正,谢谢。希望对大家有所帮助。
我是民工,我怕谁。
- 字符串比较问题(java)
- JAVA字符串比较问题
- java 字符串比较问题
- Java字符串一个比较有趣的问题
- Java中字符串比较相等问题
- 【dp】字符串比较问题
- awk字符串比较问题
- 字符串比较问题
- 字符串比较问题
- java数组、字符串比较插入及排序问题
- java字符串特殊替换及无法比较字符问题
- java中关于字符串相等的比较问题
- Java中的字符串比较
- Java中字符串比较
- Java 的字符串比较
- java中字符串比较
- java 字符串比较
- java字符串比较大小
- ue c++ 设置
- 读《臧圩人的Java面试题解惑系列》
- 快捷方式中快捷键的使用
- 久违的感动与震撼
- HashMap和TreeMap
- 字符串比较问题(java)
- Common Lisp
- 什么是MDX
- 几个免费的Scheme(Lisp)解释器
- 通用权限管理控件-控件原理
- Linux上的集成开发环境收藏
- TomCat6.0数据库连接池配置实例(Oracle 10g数据库)
- 将Perl解释器加入应用程序中,扩展功能收藏
- 应用系统权限表示的算法技巧