List def =new ArrayList();
这一句是不是说地 :定义了一个List 的一个对象 def ,可是却分配了一个ArrayList对象的内存空间.
def 是一个对象,new ArrayList()也是一个对象.
我真的快要死拉.学了好久了。这些问题还是搞不明白...
[url=http://www.]网页设计教程[/url]
这段代码 ...我觉得有问题
在java里,因为String 属于较常用的东西,所以 它有两种.
一个是 new String() 另一种是 直接 ="acc" 这样的(为了运行起来速度快)
这两种,的区别 主要在于 存放的位置
acc 这个存放到了 类似 常量池(有的好像称为 字符串 池里,而且 这个里面的 字符串是没有重复的)
所以 , String a="123", 这样 是把 "123" 放到了 字符串池里,
String b=a 是说,让b也去 指向 字符串池里的 "123" 这个字符串
之后 字符串 b=b+"1" ,因为 字符串池里 没有相同的字符串,所以 会在里面新生成一个 字符串"1231",
这个时候 b 指向了这个新生成的字符串"1231",
而String abc = new String("123"); 这个就不一样了,
它是把"123" 这个放到堆里,它和放到常量池里的"123",意义不一样
所以 String abc = new String("123"); 应该就是一个引用.一个对象
在String这个类里,由于equals用来比较字符串的内容,那么用==来比较 引用
String a="123";
String b="123";
if(a==b){...你要输出的内容}
如果输出,就表示 a和b指向了相同的对象,也就是 字符串池里有个"123"字符串
同样的 可以试试
String c=new String("123");
String d=new String("123");
再去通过==去比较一下它们的引用
[此贴子已经被作者于2006-5-23 21:30:12编辑过]