java中String new和直接赋值的区别
来源:互联网 发布:java银联在线支付开发 编辑:程序博客网 时间:2024/06/08 16:47
String str1="ABC"; 和String str2 = new String("ABC"); 有什么区别。
String str1="ABC" 可能创建一个对象或者不创建对象,如果"ABC"这个字符串在java String池里不存在,会在java String池创建这个一个String对象("ABC").如果已经存在,str1直接reference to 这个String池里的对象。
String str2 = new String("ABC") 至少创建一个对象,也可能两个。因为用到new 关键字,会在heap创建一个 str2 的String 对象,它的value 是 "ABC".同时,如果"ABC"这个字符串在java String池里不存在,会在java String池创建这个一个String对象("ABC").
String 有一个intern() 方法,native,用来检测在String pool是否已经有这个String存在。
考虑下面的问题:
String str1 = new String("ABC");
String str2 = new String("ABC");
str1 == str2 的值是True 还是False呢? False.
String str3 = "ABC";
String str4 = "ABC";
String str5 = "A" + "BC";
str3 == str4 的值是True 还是False呢? True.
str3 == str5 的值是True 还是False呢? True.
在写代码的时候,一般不要 String str2 = new String("ABC");
String a = "ABC";
String b="AB";
String c=b+"C";
System.out.println(a==c); false
a和b都是字符串常量所以在编译期就被确定了!
而c中有个b是引用不是字符串常量所以不会在编译期确定。
而String是final的!所以在b+"c"的时候实际上是新创建了一个对象,然后在把新创建对象的引用传给c.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kkdelta/archive/2009/03/02/3948725.aspx
- java中String new和直接赋值的区别
- java中String new和直接赋值的区别
- Java中String直接赋值和使用new的区别
- java中String new和直接赋值的区别
- java中String通过new和直接赋值的区别
- Java中String直接赋值和使用new的区别
- Java中String类通过new创建和直接赋值字符串的区别
- Java中String类通过new创建和直接赋值字符串的区别
- Java中String类通过new创建和直接赋值字符串的区别
- java中String new和直接赋值的区别(空了还要补充)
- JAVA中String直接赋值与new出来的对象赋值的区别
- java中String 的==和equals;String直接赋值和使用new String()
- Java和C#中String直接赋值与使用new创建(==与equals进行比较)的区别
- new String() 和直接赋值的注意事项
- Java中String直接赋字符串和new String的区别
- Java中String直接赋字符串和new String的区别
- Java中String直接赋字符串和new String的区别
- String、StringBuffer与StringBuilder之间区别 以及String 直接赋值和new后赋值区别
- java 常见问题
- ubuntu下搭建svn系列参考资料
- jsp中文乱码
- ProgressTimer
- SQL语法范例和用法汇总
- java中String new和直接赋值的区别
- 【HDU】【P2222】【Keywords Search】【题解】【AC自动机】
- zoj 2314 Reactor Cooling(无源汇上下界可行流)
- DedeCMS自定义时间字段调用方法
- ios更改Xcode配置
- Kernal-Based Object Tracking---基于核函数的目标跟踪
- Chrome浏览器开发调试系列(一)
- python3.x之print()不换行解决方案
- StackOverflow 常见问题