黑马程序员技术交流社区
标题:
int类型可以隐式转换为char类型?
[打印本页]
作者:
马林康
时间:
2012-9-24 00:09
标题:
int类型可以隐式转换为char类型?
public class CharTest {
public static void main(String[] args) {
System.out.println('\u005B'+"hello"+'\u005D');//输出[hello]
int a='a';
System.out.println(a);//97
char ch1=0x5B;
char ch2=0x5D;
System.out.println(ch1+"world"+ch2);//[world]
}
}
复制代码
程序正常运行 这是什么情况? char 自动转换为int正常~int自动转换为char不可接受!!
作者:
冯伟
时间:
2012-9-24 00:45
八进制、十六进制不能算整型,编译器在编译时就会把他们自动变成二进制,只要不超过所赋值类型就可以正常运行,不涉及类型转换
作者:
金政极
时间:
2012-9-24 00:54
我试验过了你取的十六进制数的范在CHAR的取值范围内所以运行没有错误,如果超出CHAR的范围就会报错
2楼说的非常清楚了。
作者:
王贵朝
时间:
2012-9-24 07:54
char在其实存储是字符编码,当你打印是其实打印的就是字符所对应的字符编码
作者:
黑马张旭明
时间:
2012-9-24 08:27
int占4个字节,char占两个字节,把char赋值给int,int就把值存入低位的两个字节,高位两字节补零。
char 1010-1100
int 0000-0000-1010-1100
int赋值给char就会出现4个字节的数据存到2个字节的存储空间。
int
0110-0011
-1110-0001
char 1110-0001
丢失了两个个字节的数据,损失了精度,需要用强转来告诉编译器你确定要这样做。
作者:
柳彬
时间:
2012-9-24 08:28
这很正常啊,你加了转义字符\就会吧八进制转为相应的字符塞
作者:
佘天宇
时间:
2012-9-24 21:27
char ch1=0x5B;
char ch2=0x5D;
这里面的0x5B,ox5D两个16进制数据其实还是字符,在ASCII中是用一个字节的全部8位(bit)表示的,对应的ASCII中的字符就是'['和']',占的都是一个字节,并不是表示转换后为int类型的数据91和93,在内存中占4个字节,这是我的理解,希望能够对你有用。
作者:
尤圣回
时间:
2012-9-24 21:30
低的可以自动提升 也可以下降不够很容易出错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2