1 数据类型 数据类型分为两类,值类型和引用类型。内存分为栈空间和堆空间。 栈空间存放值类型数据和堆空间的引用地址,堆空间则存放引用类型的数据。 string 型是特殊的引用类型,所以这里创建了一个string型的对象,在名为str的栈空间中存放了真正存放“abc”的堆空间地址。 2 String s = new String("abc");为什么创建了两个字符串对象? abc 是字符串的常量 出现“abc” 就在内存中创建了这个字符串 把它用new关键字给了s时 等于是创建一个新的对象s 所以是两个对象 如果你接着写 String a=new String("abc"); a就是第三个对象 字符串常量"abc"会长存与内存 直到程序结束3 String 类申请字符串对象时能不能使用new? 可以new,String a=new String("hello");不过和String a = "hello";内存中有区别, String a = "hello" 如果之前有String对象是hello的值的话那a直接就指向之前的那个对象了,不再重新new一个对象了 String a = new String("hello");无论以前有没有都重新new一个新的是间接自动使用new 创建的 这种写法是 根据习惯而专门写的一种自动创建对象并赋值的写法