众所周知,Java中int型和char型数据不像C语言中那样可以任意转换,即不可以将一个int型变量自动转换为char型,如下面代码中的演示:
public class TestSort{ public static void main(String args[]){ int x='a';//不会产生编译错误,因为'a'赋给x是隐式转换 System.out.println(x); char ch=x;//会产生编译错误,因为x类型比ch优先级高,必须强制类型转换,但是在C语言中这样是可以的 System.out.println(ch); } }
但是看下面的代码:
public class TestSort{ public static void main(String args[]){ int x='a'; System.out.println(x); char ch=97;//不会产生编译错误 System.out.println(ch); } }
上面代码不会产生任何编译错误,此处的97虽然在数学意义上是一个整数(注意整数和整型的区别),但是java语言中它被作为常数来对待,也就是说一个值为97的int型变量和97本身是不同的概念,97在没有和某个类型关联以前赋给ch是完全没有错误的。其实我们用char ch='a'给ch赋值的时候,'a'在内存中的存储值就是97。