public class test3 { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
char  ch='8';
   ch+=1;
int  r=10;
  switch( ch+1 )
  { case '7':  
  r=r+3; 
case '8':
r=r+5; 
    case '9':
     r=r+6;
     break; 
    default:  
     r=r+8; }
System.out.print(ch);
}
当不运算打印ch的时候是  8
在print中运算ch+1的时候是  57
现在这种情况运算后打印ch 是  9很奇怪,不明白怎运算的过程。

解决方案 »

  1.   

    当不运算打印ch的时候是     8 //你初始化的是8,不运算自然是8
    在print中运算ch+1的时候是     57 //这里加一打印出来的是ASCII码8的ASCII码为56,加一得57
    现在这种情况运算后打印ch   是     9//这里的运算也是ASCII码但是作为字符输出,所以是9
      

  2.   

    要注意:int 以下的整型变量(short,byte,char,包括int)经运算后,会自动变成int,所以(ch+1)这个表达式的值是int,不再是char了,ch+=1;这时是char,是因为经过了处理,如果写成ch=ch+1;是会编译不通过的,除非写成ch=(char)(ch+1);