有个小疑问

lucima 2007-11-18 11:28:52
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

很奇怪,不明白怎运算的过程。
...全文
36 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Norris_Zhang 2007-11-18
  • 打赏
  • 举报
回复
要注意:int 以下的整型变量(short,byte,char,包括int)经运算后,会自动变成int,所以(ch+1)这个表达式的值是int,不再是char了,ch+=1;这时是char,是因为经过了处理,如果写成ch=ch+1;是会编译不通过的,除非写成ch=(char)(ch+1);
plucury 2007-11-18
  • 打赏
  • 举报
回复
当不运算打印ch的时候是 8 //你初始化的是8,不运算自然是8
在print中运算ch+1的时候是 57 //这里加一打印出来的是ASCII码8的ASCII码为56,加一得57
现在这种情况运算后打印ch 是 9//这里的运算也是ASCII码但是作为字符输出,所以是9

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧