新手求助: 字符运算问题

wscft 2006-03-07 04:50:55
看到参考上面说尽管char 不是整数,但是许多情况下可以对他们进行运算, 就像整数运算一样,允许你可以将两个字符相加。
class CharDemo2{
public static void main(String arg[]){
char ch1;
ch1 = 'X';
System.out.println("ch1 contains " + ch1);
ch1 = ch1++;
System.out.println("ch1 contains " + ch1);
}
}

输出:
ch1 contains X
ch1 contains Y

但是我将程序改成这个样子:
class CharDemo2{
public static void main(String arg[]){
char ch1,ch2;

ch1 = 'X';
ch2 = 'A';
System.out.println("ch1 contains " + ch1);
ch1 = ch1 + ch2;
System.out.println("ch1 contains " + ch1);
}
}

再次编译的时候就报错, 不知道是什么原因? 那位说说!
...全文
122 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wscft 2006-03-08
  • 打赏
  • 举报
回复
谢谢各位!
oDon 2006-03-07
  • 打赏
  • 举报
回复
i=(int)(ch2-ch1)编译失败...为什么,Java不能像C那样使用char吗?
shijifeiying 2006-03-07
  • 打赏
  • 举报
回复
精度问题
aywrenyue 2006-03-07
  • 打赏
  • 举报
回复
由于精度的问题,需要强制类型转换!
ibiswang 2006-03-07
  • 打赏
  • 举报
回复
在Java中不同精度的算术运算之间总是向较大精度的方向进行转换。

例如: char char1 = 'A'; char1++;没有作精度转换,所以(char1++)之后的类型仍是char.

而 (char1 + 1)之后就是一个int类型的数据,不能将int值直接给一个char类型的变量,因为精度不一样,你可以将char给一个int,因为int精度大于char。

而char1 + char2 的运行算实际上是(int)char1 + (int)char2,所以结果是int,不能将int给char,因为精度的问题.
scottwhb 2006-03-07
  • 打赏
  • 举报
回复
同意楼上
interpb 2006-03-07
  • 打赏
  • 举报
回复
ch1 = ch1 + ch2;//有精度损失


char做运算时先转化为int,返回值也为int

很显然 要转换 : ch1 = (char)(ch1+ch2);

62,629

社区成员

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

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