关于Java的问题,为什么选A呢

 我来答
极速战略J
2018-09-11 · TA获得超过145个赞
知道答主
回答量:12
采纳率:100%
帮助的人:1.7万
展开全部

楼主问这个问题,说明楼主应该是Java的初学者,我姑且认为你最大的疑问可能是最后一个输出为什么是111而不是3。那么你可能对"111"和111的区别还没有搞清楚。

111(不带双引号)代表的是整型,这里我们可以认为是int类型,此时数字的大小和数学上数字的大小是一致的,那么应该这样写:

看楼主是初学者,这里稍作扩展介绍。Set作为集合类是不可以放入基本数据类型的,只能放入对象类型,这里能add(3)是因为JDK5.0开始加入的新特性——自动装箱。既会在适当的时候将int自动转换为Integer,所以上述代码才能成立。

回到正题,不加引号的情况,最后的输出就是3了。

但是楼主的这个因为加了引号,所以Set中放置的并不是数字,而是字符串,也就是String类型,String类型的大小比较时使用的是该对象的ASCII码(计算机中的一种编码)。也就是说楼主写的这个看的像数字,但实际上跟数字没关系。

下面三个东西本质是一样的,都是字符串

这样就很明显了,相信楼主不会用"abcd"和"百度知道"跟"111"比较数学上的大小的吧。所以此时的大小比较使用的是计算机中的编码。楼主不要搞混了。

最后补一句,其实这个题目是有问题的,因为前三个值的打印顺序是不一定的,这玩意楼主可以认为是随机的,因为Set中存放元素的位置顺序是随机的(其实不是,是JVM选择了一个它认为最合适的顺序来放),所以输出的顺序也是随机的。比如我的:

VayCi
2018-09-11 · TA获得超过620个赞
知道小有建树答主
回答量:1021
采纳率:50%
帮助的人:322万
展开全部
首先Set是无序的,是指Set不是按照插入顺序进行排序。HashSet是由HashMap实现,内部存储时是有一定顺序的。对于给定的数据,在使用foreach或者Iterator遍历时,顺序由hashcode决定,应该是固定的。

对于Collections.min()方法,由于Set中存储的是Stirng类型,比较的时候调用的是String的compareTo方法。比较时,从字符串第一位开始依次进行比较。在此,第一位就已经比较出了大小。所以方法返回值应该是"111"。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秋梵希恩O
2018-09-11 · 超过10用户采纳过TA的回答
知道答主
回答量:21
采纳率:50%
帮助的人:10.6万
展开全部
这道题我觉得A和C都是对的,因为set无序,所以前三个输出顺序是不一定的,然后Collections.min(set)方法比较元素的最小值,因为元素为String类型,实际调用的是String.compareTo方法,比较字符串的第一个字符,1排在2和3前面,所以输出111。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百搭屋平台
2018-09-11 · TA获得超过291个赞
知道小有建树答主
回答量:325
采纳率:55%
帮助的人:30.5万
展开全部

运行结果如图

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式