class Intandchar { 
  public static void main (String args[]) { 
    char ch = 97; 
    System.out.print(ch); 
  } 

上面这段中,把int的97(java中把97字面值视为int型)赋给char型ch,不需要把int转换为char
class Charleft { 
  public static void main (String args[]) { 
    char ch = 'A'; 
    ch = (char)(ch|32); 
    System.out.print(ch); 
  } 

上面这段中,ch|32得到的是int型(得到的也是97,这是一个大写变小写的小程序),需要强制转换成char才能赋给char型变量ch,为什么?谢谢。

解决方案 »

  1.   

    char ch = 97; 字面常量只要char类型能容纳就能直接赋值,编译器可以确定.
    如果是变量,必须强制转换.ch|32运算都是提升为int类型进行的,结果是int的,需要强制转换才能赋值给char类型
      

  2.   

    一楼说的很清楚97是个整数,但它却不一定就是int型的数据,可以当成char就直接放进去了而表达式运行的结果是一个确定的int型,所以要强制转换