关于Java的问题,为什么选A呢
楼主问这个问题,说明楼主应该是Java的初学者,我姑且认为你最大的疑问可能是最后一个输出为什么是111而不是3。那么你可能对"111"和111的区别还没有搞清楚。
111(不带双引号)代表的是整型,这里我们可以认为是int类型,此时数字的大小和数学上数字的大小是一致的,那么应该这样写:
看楼主是初学者,这里稍作扩展介绍。Set作为集合类是不可以放入基本数据类型的,只能放入对象类型,这里能add(3)是因为JDK5.0开始加入的新特性——自动装箱。既会在适当的时候将int自动转换为Integer,所以上述代码才能成立。
回到正题,不加引号的情况,最后的输出就是3了。
但是楼主的这个因为加了引号,所以Set中放置的并不是数字,而是字符串,也就是String类型,String类型的大小比较时使用的是该对象的ASCII码(计算机中的一种编码)。也就是说楼主写的这个看的像数字,但实际上跟数字没关系。
下面三个东西本质是一样的,都是字符串
这样就很明显了,相信楼主不会用"abcd"和"百度知道"跟"111"比较数学上的大小的吧。所以此时的大小比较使用的是计算机中的编码。楼主不要搞混了。
最后补一句,其实这个题目是有问题的,因为前三个值的打印顺序是不一定的,这玩意楼主可以认为是随机的,因为Set中存放元素的位置顺序是随机的(其实不是,是JVM选择了一个它认为最合适的顺序来放),所以输出的顺序也是随机的。比如我的:
对于Collections.min()方法,由于Set中存储的是Stirng类型,比较的时候调用的是String的compareTo方法。比较时,从字符串第一位开始依次进行比较。在此,第一位就已经比较出了大小。所以方法返回值应该是"111"。