帮忙来解答下 谢谢
import java.util.*;public class test
{
public static void main(String[] args)
{
Collection c=new ArrayList();
c.add(1); //我看视频说不能用基本类型,我编译成功? 求解答
//c.add("sdf");
c.add(new name("sdg"));
c.add(new Long(100));
c.remove(new name("sdg")); // 这为啥编译的时候还出现sdg? 求解答
c.remove(new Long(100));
System.out.println(c.size());
System.out.println(c);
}
}
class name
{
String name;
name (String name)
{
this.name=name;
}
public String toString()
{
return name;
}
}
[ 本帖最后由 sf878131 于 2010-4-24 17:49 编辑 ]
----------------解决方案--------------------------------------------------------
基本数型是可以的, 1可以自动封装成Integer
因为你的sdg没有对象引用,应该这样编写
Name a = new Name("sdg");//类名称首字母要大写的, 你应改成Name类
c.add(a);
c.remove(a);
[ 本帖最后由 lampeter123 于 2010-4-24 19:20 编辑 ]
----------------解决方案--------------------------------------------------------
c.add(1); //我看视频说不能用基本类型,我编译成功?
答:我记得在JDK1.4以后,基本类型会被自动转化为相应的类,上面的语句也就相当于c.add(new Integer(1));
我觉得你看的视频可能比较老,在1.4以前好像就不能直接用基本类型的。具体我也不大确定。
c.remove(new name("sdg")); // 这为啥编译的时候还出现sdg? 求解答
答:remove中,你又创建了一个新的对象,该对象本来就没有在实例c中,就比如
name name1=new name("sdg");name name2 = new name("sdg");
name1跟name2是不相等的,只是name1.name=name2.name;
你想删除已在的对象,应该如下:
public class Test
{
public static void main(String[] args)
{
Collection c=new ArrayList();
c.add(1); //我看视频说不能用基本类型,我编译成功? 求解答
name n=new name("sdg");
c.add(n);
Long l = new Long(100);
c.add(l);
c.remove(n); // 这为啥编译的时候还出现sdg? 求解答
c.remove(l);
System.out.println(c.size());
System.out.println(c);;
}
}
----------------解决方案--------------------------------------------------------
谢谢楼上两位 linjx0123 谢谢 详细的回答 我明白了,自学的java 不容易啊。 谢谢
----------------解决方案--------------------------------------------------------