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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kun1990 中级黑马   /  2013-12-22 11:09  /  1159 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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呢?

评分

参与人数 1黑马币 +5 收起 理由
乔兵 + 5

查看全部评分

3 个回复

倒序浏览
else if(str1<str2),里面的为字符串类型,if中只能比较boolean,需要转化成Integer类,修改后(Integer.valueOf(str1))<(Integer.valueOf(str2))
回复 使用道具 举报
你的这个肯定是不能通过的,首先你得这个str1 和 str2是不能比较的,因为在if判断里面只认真假,你这个根本就不能比较,如果你要想比较str1和str2谁大的话,你就必须要用字符串的比较方法,这个方法是compareTo();这个方法的用法如下:
str1.compareTo(str2)>0 或者str1.compareTo(str2)<0 , 这样你就可以在if里面使用了
if(str1.compareTo(str2)<0)  这句话的意思如果str1 和 str2比较小于0,是否为真,这里当然为真了,所以就会输出相应的结果。
首先你需要了解字符串和数组类型的比较是如何比较,然后再做比较。否则很乱。当初我也是。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
逻辑运算符是用来比较有比较性的数据的。比如说两个值得大小等。
但是String类型不是基本数据类型,String是类类型的。而String对象本身是不具有比较性的。
所以就需要自定义对象的比较性。
String类自身实现了comparable接口的compareTo方法,让String对象具有了比较性。
具体的比较步骤是:
比较两个字符串的首字母的ascII值,如果相同则进行下一个字符ASCII值得比较。
直到找到两个字符串同一位置字符不相同的时候。
        在不相同的字符的时候,ASCII值大的一个字符所在的字符串就是大的一个。
如果比较完一个字符串所有的字符,而另一个字符还没有比较完,那么长的一个就是大的一个字符串。


str1.compareTo(str2)方法的返回值是int型的,如果返回0,则表示两个字符串相等,如果返回正数则表示str1大,如果返回负数则表示str2大。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马