Java中创建String的两种方式
2016-03-27 17:41
344 查看
1、在Java中,创建一个字符串有两种方式
String x = "abc";
String y = new String("abc");
这两种方式有什么区别呢?
2、双引号("")和构造器
第一个案例:
String a = "abcd";
String b = "abcd";
System.out.println(a == b); // True
System.out.println(a.equals(b)); // True
a==b为真,是因为a和b都指向了方法区里面的同一个字符串,引用值相等;
当相同的字符串被创建多次,内存中只保存一份字符串常量值,这就是字符串的"驻留"
第二个案例:
String c = new String("abcd");
String d = new String("abcd");
System.out.println(c == d); // False
System.out.println(c.equals(d)); // True
c==d 为假,是因为c和d引用了对内存中的两个不同的对象,不同的对象,引用值肯定不同
3、运行时字符串的驻留
字符串同样可以在运行时"驻留"
String c = new String("abcd").intern();
String d = new String("abcd").intern();
System.out.println(c == d); // Now true
System.out.println(c.equals(d)); // True
4、选择哪一种方式来创建字符串呢?
因为"abcdef"也是String类型,使用构造器会创建额外的不需要的对象,因此,如果你只想创建一个字符串,就是用双引号("")方式;
如果你在对内存还想创建一个字符串对象,就是用构造器的方式
String x = "abc";
String y = new String("abc");
这两种方式有什么区别呢?
2、双引号("")和构造器
第一个案例:
String a = "abcd";
String b = "abcd";
System.out.println(a == b); // True
System.out.println(a.equals(b)); // True
a==b为真,是因为a和b都指向了方法区里面的同一个字符串,引用值相等;
当相同的字符串被创建多次,内存中只保存一份字符串常量值,这就是字符串的"驻留"
第二个案例:
String c = new String("abcd");
String d = new String("abcd");
System.out.println(c == d); // False
System.out.println(c.equals(d)); // True
c==d 为假,是因为c和d引用了对内存中的两个不同的对象,不同的对象,引用值肯定不同
3、运行时字符串的驻留
字符串同样可以在运行时"驻留"
String c = new String("abcd").intern();
String d = new String("abcd").intern();
System.out.println(c == d); // Now true
System.out.println(c.equals(d)); // True
4、选择哪一种方式来创建字符串呢?
因为"abcdef"也是String类型,使用构造器会创建额外的不需要的对象,因此,如果你只想创建一个字符串,就是用双引号("")方式;
如果你在对内存还想创建一个字符串对象,就是用构造器的方式
相关文章推荐
- java小练习:.根据输入的月份,判断该月份有多少天
- springmvc调用流程
- 【java 基础】Windows dos 命令
- Java基础之Map实现篇
- 10张思维导图带你学习JavaScript
- struts2不显示.do .action 后缀
- spring3 struts2 利用aop在actioin层捕获异常
- java switch语句练习 从键盘输入2个数和一个运算符(+,-,*,/),输出运算结果
- struts2 findValue 等引用错误
- 20145120 《Java程序设计》第4周学习总结
- Java 循环语句之多重循环
- java队列、栈和多线程结合使用的例子
- Spring源码导入MyEclipse
- An internal error occurred during: "Add Deployment". Container with path org.eclipse.jdt.launching.
- Java中String为什么是不可变的
- xml编程:利用java程序去增删改查(CRUD)xml中的数据
- IT十八掌作业_java基础第十二天_集合
- 20145223《Java程序程序设计》第4周学习总结
- 白话Spring(中级篇)---注解(3)
- Java循环语句之 for