各位高手问一下 Java中 string 是= “a”+”b”+”c”+”d”; 一共创建了几个对象,为什么?
解决方案
2
一个,等于
string a=”abcd”;
string a=”abcd”;
2
经测试。一个也没创建。就加载了个常量abcd
3
3
http://blog.csdn.net/java2000_net/article/details/3681385
1
1
一个。
1
1
一个,等于
string a=”abcd”;为什么有人说5个,有人说4个?
string a= “a”+”b”+”c”+”d”;
string b = “abcd”;
System.out.print(a==b);
这并不能说明创建了一个对象,只能说明java的string池中假如有相同的字符串,会直接把此字符串的指针指向新创建的对象
1
一个,等于
string a=”abcd”;为什么有人说5个,有人说4个?
string a= “a”+”b”+”c”+”d”;
string b = “abcd”;
System.out.print(a==b);这并不能说明创建了一个对象,只能说明java的string池中假如有相同的字符串,会直接把此字符串的指针指向新创建的对象
创建一个的原因是”a”+”b”+”c”+”d”在没有赋值给string a之前,他们都是常量,不会在string池中创建对象的
5
首先你要明白,String创建的对象,都放在一个专门的地方,而String本身是不可变的,也就如同常量性质一样,
当你想要创建一个String对象并赋值时,它会先去专门的哪个放置String对象内存的地方找,看有没有这个值,假如有,指针直接引用,假如没有,哪就创建.
你的这问题,本人的回答有两种情况:
1.假如内存存放String的地方有这个值,就一个也不会创建,直接引用
2.假如内存存放String的地方没有这个值,就只创建一个对象(“abcd”).
希望你能有用.
当你想要创建一个String对象并赋值时,它会先去专门的哪个放置String对象内存的地方找,看有没有这个值,假如有,指针直接引用,假如没有,哪就创建.
你的这问题,本人的回答有两种情况:
1.假如内存存放String的地方有这个值,就一个也不会创建,直接引用
2.假如内存存放String的地方没有这个值,就只创建一个对象(“abcd”).
希望你能有用.