使用双引号""创建Java字符串还是使用String构造函数?
来源:互联网 发布:linux服务器使用教程 编辑:程序博客网 时间:2024/06/05 13:53
在Java中,一个字符串可以使用下面这两种方式进行创建:
String x = "abc";String y = new String("abc");
这两种创建字符串的方式有什么不同呢?
双引号 VS 构造函数
这个问题可以用下面这两个简单的代码实例来回答。
- 例子1:
String a = "abcd";String b = "abcd";System.out.println(a == b); // TrueSystem.out.println(a.equals(b)); // True
a==b是true,因为a和b都引用同一块内存地址。
当相同字符内容的字符串多次创建时,编译器只为其分配一块内存,这叫做“字符串驻留机制”。Java中所有的编译期间常量都将自动“驻留”。
- 例子2
String c = new String("abcd");String d = new String("abcd");System.out.println(c == d); // FalseSystem.out.println(c.equals(d)); // True
c==d是false,因为c和d在堆中引用两个不同的对象。不同的对象总是会有不同的内存地址引用。
下面这插图将解释上面两种情况:
运行期字符串驻留技术
感谢LukasEder(他的讲解如下):
尽管两个字符串使用字符串构造函数进行的创建,字符串驻留仍然可以在运行期间进行。
String c = new String("abcd").intern();String d = new String("abcd").intern();System.out.println(c == d); // Now trueSystem.out.println(c.equals(d)); // True
两种方法的使用场景
因为字符串“abcd”已经是String类型,使用字符串构造函数将会创建额外没有必要的对象。因此,如果你只想要创建一个字符串对象时,双引号“”推荐使用。如果你的确想要在堆中创建一个新的对象,字符串构造函数将可以使用。
原文链接:Create Java String Using ” ” or Constructor?
翻译:crane-yuan
[ 转载请保留原文出处、译者和译文链接。]
2 0
- 使用双引号""创建Java字符串还是使用String构造函数?
- 创建字符串是直接用双引号还是 String 构造函数?
- 该如何创建字符串,使用” “还是构造函数?
- [细说Java](3)创建字符串是使用" "还是构造函数?
- 使用""还是构造器来创建字符串
- 创建Fragment使用 构造函数 还是 newInstance()
- Java创建字符串是用“”还是用构造器?
- 【java解惑】字符串的字节数组构造函数使用
- C#中,字符串的声明,你使用String还是string?
- Java字符串之使用String
- 创建字符串对象的时候,使用字面值和使用new String()构造器这两种方式有什么不同?
- java构造函数的使用
- string 构造函数 java
- 使用String还是StringBuffer?
- 使用String还是StringBuffer?
- 使用String还是StringBuffer
- String字符串去掉双引号
- 安卓Java字符串String函数构造取文本中间
- HDOJ 1325 Is It A Tree?
- C++长字符串换行
- thinkphp3.2的运用
- 比较重量----网易2016实习研发工程师编程题
- 洛谷 P1063 [NOIP2006 T1] 能量项链
- 使用双引号""创建Java字符串还是使用String构造函数?
- Delphi xe10对json的解析应用
- 2015-2016 ACM-ICPC Pacific Northwest Regional Contest Div.2 全部题目题解
- HDU 5839 Special Tetrahedron
- PHP的运算符的优先级
- 字符串匹配的Boyer-Moore算法
- jQuery基础知识
- 【杭电oj2015】偶数求和
- TCP/IP的基本工作原理