1 public static void main(String[] args) {
2 int m= 26;
3 char c1=(char)m+1;
4 char c=(char)26+1;
}
2 int m= 26;
3 char c1=(char)m+1;
4 char c=(char)26+1;
}
解决方案 »
- 一个JTable的问题··请指点··谢谢···
- 我现在在做毕业设计,我想知道用JBuilder9怎么做出漂亮一点的界面。。。
- java 如何让文本框获得焦点时选中该文本框的值
- 菜鸟问题,关于String数组
- 有谁既会AWT又会SWING的?
- 大家看看这个简单的Swing监听为什么不行?
- applet问题,找了很多论坛高手都没有人能解决!
- Apache 1.3.22/Tomcat 4.0.4/Mysql 3.23/mm.mysql.jdbc-2.0pre5的中文乱码问题
- 怎样设置path classpath?
- 求正则大神帮写个正则表达式
- JAVA编程思想
- 【求助】判断101-200 之间有多少个素数,并输出所有素数
int m = 1;
char a = m;
这个也是要报错的,错误原因也是损失精度
可能是整形变量在没有强制转换的情况下转换为字符型变量是要损失精度的
所以思考了一下你的代码 char c1=(char)m+1;
(char)m是一个字符变量变量
我又试验了一下一段代码:
int m= 26;
System.out.println((char)m+1);
输出来的是27,说明(char)m+1是一个整形变量
那么整形变量在不经过强制转换就转换为字符型变量是要报错的
对了补充一下:如果(char)25+1是一个整数,得到的是26,整数传值给字符型的变量时是当做ASKII码来传值的,所以不会损失精度
char c1=(char)m+1;计算顺序:
先将m强制转换为char,不会报错;
char型与整数计算的时候,会向上转型为整型,此时就是类型不对的问题了。而char c=(char)26+1;实际上是ASCII码的计算,不涉及类型的问题,就算没有(char)也不会报错的。