A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马伟恒 中级黑马   /  2012-4-24 18:39  /  2144 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

集合collection中的s1.add("123")和s1.add(123)有什么区别

8 个回复

倒序浏览
"123"是字符串String类型
123会自动转成Integer
回复 使用道具 举报
s1.add("123")是说集合s1中添加字符串对象"123",
s1.add(123)就是一错误的语句,因为集合中只能装对象,不能装基本类型的数据!
如果你想把  一百二十三 这个数据对象装进去
Integer  i = 123,
s1.add(i);
回复 使用道具 举报
这是一个测试程序,你看一下结果就明白了
public class oy {

        public static void main(String[] args) {


                ArrayList al=new ArrayList();

               
                al.add(123);
                al.add("123");
                Iterator it=al.iterator();
                System.out.println("第一个元素:"+it.next().getClass());
                System.out.println("第二个元素:"+it.next().getClass());
        }
}

结果:

第一个元素:class java.lang.Integer
第二个元素:class java.lang.String


很明显,不加""双引号的参数,传进去得的是封装类Interger类型。加了""双引号的参数是迭代出来的是String类型。
回复 使用道具 举报
集合类只能存放对象,不加双引号的123,由于int是基本类型,不能传入集合类。所以会变为封装类Integer类型再传入。
回复 使用道具 举报
没什么区别 一个加进去的是字符串 一个加进去的是数据 数据会自动转换成Integer
Collection coll=new ArrayList();
相当于       
Collection<Object> coll=new ArrayList<Object>();
JDK  1.5增加了自动装箱拆箱的功能
所以 你输入进去的是数字它也会自动转换成别的类型
回复 使用道具 举报
楼上说得对,
应该这么说:集合collection中的s1.add("123")和s1.add(123)
collection只能作用于对象,s1.add("123")中"123"和s1.add(123)中的123都是对象,但是这个对象是有java自动给你完成了!也就是允许你这么简化写了。
但是你必须知道你简化了的是:s1.add("123") ;简化了:String x=new String("123");
                                          s1.add(123) ;  简化了:Integer x =new Integer(123);
上面2个是java支持省略的。简化了书写。但是用equls比较的话,他们2个是true
回复 使用道具 举报
徐鑫 中级黑马 2012-4-24 19:56:42
8#
区别就是s1.add("123")//添加的是String型的
              s1.add(123)//123自动装箱为Integer型
回复 使用道具 举报
集合collection中的s1.add("123")和s1.add(123)有什么区别

严格说容器是不能存储基本数据类型的,但提供了自动装箱机制,当存入基本数据类型就会被转换成对应的引用数据类型;
s1.add("123")存入的是String类型;
s1.add(123)存入的是Integer类型;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马