A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘凯旋 中级黑马   /  2014-3-4 16:23  /  1139 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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相加难道不会提升吗?难道提升还会有范围吗?

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

3 个回复

倒序浏览
(char)'A'得到的值是65  65+2=67,所以char y = 67 打印出来就是y了。char强转其实得到的是其对应的数值!于是就不存在"int类型吗int类型和char相加"

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
字符型常量可以采用16进制编码方式表示,范围是'\u0000'-'\uFFFF',一共可以表示65535个字符,其中前256个字符和ASCII码中的字符完全重合(java采用Unicode字符码系统,它为每个字符制订了一个唯一的数值)
不仅如此,char类型的值也可直接作为整数型的值来使用,但它是一个16位无符号整数,即全部是整数,范围是0-65535.如果把一个在0-65535内的int整数赋值给char类型的变量,系统会自动把这个int整数当成char来处理
希望能帮助你更好的理解

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 罗安迪 于 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 类型是不可以转换为其他基本数据类型。


评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马