java中String new和直接赋值的区别
展开全部
java中String new和直接赋值的区别如下:
1、执行语句String str=new String("abc")时,不管字符串池中是否存在字符串"abc",直接新建一个字符串"abc"。
注意:新建的字符串"abc"不是在字符串池中),然后将其付给str。
2、执行语句String str="abc"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给str,如果不存在则先在字符串池中新建一个字符串"abc",然后再将其赋给str。
实例代码:
public class Demo {
public static void main(String[] args) {
String a = new String(); // 在堆中生成对象s,在 字符串池中创建空字符串
String aa = ""; // 字符串池中已经存在空字符创,不用再创建了
String aaa = new String("");// 堆中生成对象aaa,并在 字符串池中创建空字符串
String b = new String("cisco");// 堆中生辰对象b, 字符串池中创建字符串“asdf”
String c = new String("cisco");// 堆中创建对象c,字符串池中创建字符串“asdf”
String d = "cisco"; // 字符串池中有“asdf”字符串,不再创建
1、执行语句String str=new String("abc")时,不管字符串池中是否存在字符串"abc",直接新建一个字符串"abc"。
注意:新建的字符串"abc"不是在字符串池中),然后将其付给str。
2、执行语句String str="abc"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给str,如果不存在则先在字符串池中新建一个字符串"abc",然后再将其赋给str。
实例代码:
public class Demo {
public static void main(String[] args) {
String a = new String(); // 在堆中生成对象s,在 字符串池中创建空字符串
String aa = ""; // 字符串池中已经存在空字符创,不用再创建了
String aaa = new String("");// 堆中生成对象aaa,并在 字符串池中创建空字符串
String b = new String("cisco");// 堆中生辰对象b, 字符串池中创建字符串“asdf”
String c = new String("cisco");// 堆中创建对象c,字符串池中创建字符串“asdf”
String d = "cisco"; // 字符串池中有“asdf”字符串,不再创建
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询