作者: 容嬷嬷当年也是 时间: 2013-11-24 10:05
String s1 = new String("abc");
new String 代表第一个对象、这相当于一个地址,而abc却是代表了地址所赋予的值。所以有两个对象。只有一个person对象、person 是一个类。而String 也只有一个作者: 王雷1 时间: 2013-11-24 10:21
String s = "abc" :s是存储在栈里。先在栈中创建一个对String类的对象引用变量s,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令s指向”abc”,如果已经有”abc” 则直接令s指向“abc”。
String s = new String("abc") : s1是存储在堆里。每调用一次就会创建一个新的对象。abc 是字符串的常量出现“abc”就在内存中创建了这个字符串把它用new关键字给了s1时等于是创建一个新的对象s所以是两个对象如果你接着写String a=new String("abc");a就是第三个对象字符串常量"abc"会长存与内存直到程序结束作者: 潘际昌 时间: 2013-11-24 10:28
String s = "abc"; 这“abc”是第一个对象;然后String s1 = new String("abc"),new String("abc")这又是一个对象,这个对像里面的“abc”就是第一个对象。所以一起有两个对象。而Person p = new Person("xiaoming",5)只有一个对象,Person括号里面的"xiaoming",5只是Person的参数。作者: 忄雾飞扬 时间: 2013-11-24 10:56
public static void main(String[] args) {
//创建一个Person对象,并进行了有参构造函数的初始化赋值
Person p = new Person("xiaoming",5);
/*在上面这句代码中,创建了1个Person对象,存储于堆内存中,而p则是这个对象的地址引用,
创建了两个String对象"xiaoming",一个存在于堆内存中,一个存储在缓冲池中,因为"xiaoming"
是字符串常量,有可能被经常调用都会在缓冲池中存储了一份
*/