黑马程序员技术交流社区

标题: 被一个类型提升难住了,求解 [打印本页]

作者: 刘凯旋    时间: 2014-3-4 16:23
标题: 被一个类型提升难住了,求解
  1. public class HelloWord {

  2.         public static void main(String[] args){
  3.                 char y = 2+(char)'A';
  4.                 System.out.println(y);

  5.         }

  6. }
复制代码
老师说byte a = a+1;会类型提升会报错,那char y = 2+(char)'A';2在这里不是int类型吗int类型和char相加难道不会提升吗?难道提升还会有范围吗?

作者: q527198615    时间: 2014-3-4 17:06
(char)'A'得到的值是65  65+2=67,所以char y = 67 打印出来就是y了。char强转其实得到的是其对应的数值!于是就不存在"int类型吗int类型和char相加"
作者: centian2005    时间: 2014-3-4 17:10
字符型常量可以采用16进制编码方式表示,范围是'\u0000'-'\uFFFF',一共可以表示65535个字符,其中前256个字符和ASCII码中的字符完全重合(java采用Unicode字符码系统,它为每个字符制订了一个唯一的数值)
不仅如此,char类型的值也可直接作为整数型的值来使用,但它是一个16位无符号整数,即全部是整数,范围是0-65535.如果把一个在0-65535内的int整数赋值给char类型的变量,系统会自动把这个int整数当成char来处理
希望能帮助你更好的理解
作者: 罗安迪    时间: 2014-3-4 17:20
本帖最后由 罗安迪 于 2014-4-2 13:32 编辑

byte char short是在同一层次 一定要向上转为int先再转为其他的类型~

基本数据类型转换可以相互转换:向上转换(隐式类型转换):byte,short,char → int → long → float → doublebyte,short,char之间不会相互转换,他们在计算时会首先转换为int类型。boolean 类型是不可以转换为其他基本数据类型。 向下转换(显式类型转换):byte,short,char → int → long → float → doublebyte,short,char之间不会相互转换,他们在计算时首先会转换为int类型。boolean 类型是不可以转换为其他基本数据类型。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2