黑马程序员技术交流社区

标题: 关于毕老师键盘录入有一个小问题,帮忙解答一下啊 [打印本页]

作者: 王溢君    时间: 2013-1-30 00:39
标题: 关于毕老师键盘录入有一个小问题,帮忙解答一下啊
代码如下:
  1. import java.io.*;

  2. class  SystemOut
  3. {
  4.         public static void main(String[] args) throws IOException
  5.         {
  6.                 InputStream in = System.in;

  7.                 StringBuilder sb = new StringBuilder();
  8.                 while (true)
  9.                 {
  10.                         int num = in.read();
  11.                         if (num == '\r')
  12.                         {
  13.                                 continue;
  14.                         }
  15.                         if (num == '\n')
  16.                         {
  17.                                 String s = sb.toString();
  18.                                 if (s.equals("over"))
  19.                                 {
  20.                                         break;
  21.                                 }
  22.                                 System.out.println(s.toUpperCase());
  23.                                 sb.delete(0,sb.length());
  24.                         }
  25.                         else
  26.                                 sb.append((char)num);
  27.                        
  28.                 }
  29.      }
  30. }
复制代码
这里,int num类型的可以和'\r'char类型的相等判断吗???卡住了。。。

作者: 梁俊    时间: 2013-1-30 09:12
System.out.println('\r'==13);返回结果为true
在byte、short、char参与运算的时候会自动提升为int
字符'\r' 的asc码表值为13
作者: 杨杨    时间: 2013-1-30 09:28
楼上回答正确啊 我在补充一下  char 类型可以自动转化为int类型,
对与原因请参见简单数据类型之间的转换

      在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为(byte,short,char)--int--long--float--double。 简单数据类型之间的转换又可以分为:

      低级到高级的自动类型转换

      高级到低级的强制类型转换

      包装类过渡类型能够转换

低级变量可以直接转换为高级变量,笔者称之为自动类型转换,例如,下面的语句可以在Java中直接通过:

    byte b;

    int i=b;

    long l=b;

    float f=b;

    double d=b;

如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如:

    char c='c';

    int i=c;

    System.out.println("output:" i);

    输出:output:99;

对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。

    short i=99;

    char c=(char)i;

    System.out.println("output:" c);

     输出:output:c;

为得技术分的人民伤不起啊 希望对你有帮助
作者: walkonby    时间: 2013-1-30 09:33
2楼正解  他会自动提升的 然后比ascii码
作者: 念满    时间: 2013-1-30 22:18
自动类型提升:byte、short、char——> int
若一个操作数为long,结果就是long
若一个操作数为float,结果就是float
若一个操作数为double,结果就是double





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2