黑马程序员技术交流社区

标题: 小问题 [打印本页]

作者: 王红霞    时间: 2012-7-20 18:59
标题: 小问题
本帖最后由 王红霞 于 2012-7-21 16:21 编辑
  1. import java.io.*;
  2. class  A
  3. {
  4.         public static void main(String[] args) throws IOException
  5.         {
  6.                 InputStream in=System.in;
  7.                
  8.                 System.out.println((int)'\r');
  9.         }
  10. }
复制代码
==============================================
System.out.println('\r'+0);System.out.println((int)'\r') 打印的结果相同,是因为有了+0-----是为了数据提升?如果是&上一个数提升数据我懂,加法是如何将字符转换成int数据类型的呢? 麻烦哪位不嫌弃这个问题弱智的 给解惑一下红色部分  谢谢
  1. import java.io.*;
  2. class  A
  3. {
  4.         public static void main(String[] args) throws IOException
  5.         {
  6.                 InputStream in=System.in;
  7.                
  8.                 System.out.println('\r'+0);
  9.         }
  10. }
复制代码

作者: 丁二跃    时间: 2012-7-20 19:28
byte  short char 在参与数学运算时会自动转换 int……
作者: 王宝康    时间: 2012-7-20 19:49
char类型 16位,int类型32位,int类型 覆盖了char类型的取值范围
作者: 王红霞    时间: 2012-7-20 19:50
丁二跃 发表于 2012-7-20 19:28
byte  short char 在参与数学运算时会自动转换 int……

真的吗?这个我还真不知道……又长了知识点了:handshake
作者: べ戀¢豬そ☆    时间: 2012-7-21 10:52
就好像要同时称重一个100g和1kg的物体,你就必须拿一个能称1kg的称来称,如果你那只能称100g的称来称,肯定没法
作者: 柳雷    时间: 2012-7-21 11:31
Java自动将参与数学运算的char转换成int,如果你想知道具体实现步骤,可以查看JDK查看具体的实现步骤
作者: 芦曦    时间: 2012-7-21 13:55
本帖最后由 芦曦 于 2012-7-21 13:57 编辑

字符'\r'在内存里占2个8位,0是整数,占4个8位。当出现'\r'+0时,那么'\r'它的类型会提升,也变成4个8位,而\r是回车符,字符'\r'在ASCII表里对应的数字是13,类型提升时会体现出ASCII里对应的数字,所以'\r'+0打印出来的结果就是13.
作者: 王红霞    时间: 2012-7-21 16:22
芦曦 发表于 2012-7-21 13:55
字符'\r'在内存里占2个8位,0是整数,占4个8位。当出现'\r'+0时,那么'\r'它的类型会提升,也变成4个8位, ...

嗯知道了 谢谢




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