黑马程序员技术交流社区
标题: String问题 [打印本页]
作者: kun1990 时间: 2013-12-22 11:09
标题: String问题
1. 下面程序运行的结果是( )
String str1= “1”, str2=”2”;
if(str1==str2)
System.out.println(“ABC”);
else if(str1<str2)
System.out.println(“DEF”);
else
System.out.println(“GHJ”);
a) ABC
b) DEF
c) GHJ
d) 编译失败
的结果为什么是d呢?
作者: 776699 时间: 2013-12-22 11:33
else if(str1<str2),里面的为字符串类型,if中只能比较boolean,需要转化成Integer类,修改后(Integer.valueOf(str1))<(Integer.valueOf(str2))
作者: 恩恩 时间: 2013-12-22 13:28
你的这个肯定是不能通过的,首先你得这个str1 和 str2是不能比较的,因为在if判断里面只认真假,你这个根本就不能比较,如果你要想比较str1和str2谁大的话,你就必须要用字符串的比较方法,这个方法是compareTo();这个方法的用法如下:
str1.compareTo(str2)>0 或者str1.compareTo(str2)<0 , 这样你就可以在if里面使用了
if(str1.compareTo(str2)<0) 这句话的意思如果str1 和 str2比较小于0,是否为真,这里当然为真了,所以就会输出相应的结果。
首先你需要了解字符串和数组类型的比较是如何比较,然后再做比较。否则很乱。当初我也是。
作者: smileven 时间: 2013-12-22 19:04
逻辑运算符是用来比较有比较性的数据的。比如说两个值得大小等。
但是String类型不是基本数据类型,String是类类型的。而String对象本身是不具有比较性的。
所以就需要自定义对象的比较性。
String类自身实现了comparable接口的compareTo方法,让String对象具有了比较性。
具体的比较步骤是:
比较两个字符串的首字母的ascII值,如果相同则进行下一个字符ASCII值得比较。
直到找到两个字符串同一位置字符不相同的时候。
在不相同的字符的时候,ASCII值大的一个字符所在的字符串就是大的一个。
如果比较完一个字符串所有的字符,而另一个字符还没有比较完,那么长的一个就是大的一个字符串。
str1.compareTo(str2)方法的返回值是int型的,如果返回0,则表示两个字符串相等,如果返回正数则表示str1大,如果返回负数则表示str2大。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |