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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乐峰 中级黑马   /  2012-5-16 21:02  /  2932 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.为啥 String s = "w";可以,而 StringBuffer s1 = "w";不可以,而除了String类,其余都要创建对象?
2.还有 List list =new ArrayList();和ArrayList list1 = new ArrayList();有什么区别吗?

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
1.“w”是一个String型,那么右面的就是String型,不能自动转换成StringBuffer对象上
为什么呢?虽然String和StringBuffer都可修饰一串字符串。StringBuffer是可变对象,也是可变类!向StringBuffer赋值时是用append方法来赋值!而String其实是StringBuffer的扩展,核心还是他的,只是他扩着了可以直接这样赋值s="".是不可变对象他们都属于类,不过String是不可变类

2.后面那个问题,其实就是List和Arraylist的区别!ArrayList是一个用数组来实现List的类!其实他们两那个写都一样!不一样的是后期维护工作!一般一个借口比如这里的List类借口,他可能有许多实现的类比如(ArrayList和HashList)

List list = new ArrayList()当你这样写的时候,你发现ArrayList满足不了你的需求时,你可以直接改成List list = new HashList();这样就不用该它要涉及到的List类以及用到它的list类


评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
任睦强 发表于 2012-5-16 21:04
1.“w”是一个String型,那么右面的就是String型,不能自动转换成StringBuffer对象上
为什么呢?虽然String ...

有HashList这个东西吗??Collection下有两个接口,一个是list,一个是set,list下有ArrayList、LinkedList和Vector,实现set接口的类有HashSet和TreeSet,哪里有什么HashList啊。
回复 使用道具 举报
关于第一个问题 2 楼已经回答的很好了 我就不再阐述了。
关于第二个问题 其实就是一个 父类引用指向子类对象 是java多态的一个体现 关于这样写用什么好处 那就是多态有什么好处他就有什么好处。
回复 使用道具 举报
1.“w”是一个String型,那么右面的就是String型,不能自动转换成StringBuffer对象上
为什么呢?虽然String和StringBuffer都可修饰一串字符串。StringBuffer是可变对象,也是可变类!向StringBuffer赋值时是用append方法来赋值!而String其实是StringBuffer的扩展,核心还是他的,只是他扩着了可以直接这样赋值s="".是不可变对象他们都属于类,不过String是不可变类

2.后面那个问题,其实就是List和Arraylist的区别!ArrayList是一个用数组来实现List的类!其实他们两那个写都一样!不一样的是后期维护工作!一般一个借口比如这里的List类借口,他可能有许多实现的类比如(ArrayList和HashList

List list = new ArrayList()当你这样写的时候,你发现ArrayList满足不了你的需求时,你可以直接改成List list = new HashList();这样就不用该它要涉及到的List类以及用到它的list类

上面红色的部分是我一时疏忽打错了,实在是不好意思,应该改成:
LinkedList,Vector
List list = new LinkedList();或者List list = new Vector();
回复 使用道具 举报
高云飞 发表于 2012-5-16 21:13
有HashList这个东西吗??Collection下有两个接口,一个是list,一个是set,list下有ArrayList、LinkedLi ...

谢谢同学的提醒!:)
回复 使用道具 举报
任睦强 发表于 2012-5-16 21:28
1.“w”是一个String型,那么右面的就是String型,不能自动转换成StringBuffer对象上
为什么呢?虽然String ...

另外,Vector过时了,已经被ArrayList取代了。
回复 使用道具 举报
1.为啥 String s = "w";可以,而 StringBuffer s1 = "w";不可以,而除了String类,其余都要创建对象?
String s 是定义个指向字符串的应用变量,"w"是一个字符串,String s = "w"就是把字符串"w"的地址赋给s,"="赋值运算符,所以"String s = "w";"可行是理所当然的。StringBuffer s1是定义一个指向字符串缓存对象的变量,所以不把"w"的地址赋给它。除了String类,其余都要创建对象,是因为java为了使用方便,把String在定义时简化得像基本数据类型,那样好用。
2.还有 List list =new ArrayList();和ArrayList list1 = new ArrayList();有什么区别吗?

有区别,List list =new ArrayList();是子类当父类使用,list只能使用父类中已有的方法,而不能使用Arraylist中的特有方法。ArrayList list1 = new ArrayList();中的list1可以使用ArrayList中的特有方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马