黑马程序员技术交流社区

标题: 一个字节的byte为什么不能直接赋值给两个字节的char? [打印本页]

作者: 石德志    时间: 2012-3-16 13:06
标题: 一个字节的byte为什么不能直接赋值给两个字节的char?
本帖最后由 石德志 于 2012-3-16 13:11 编辑

在Java中char 类型的数据占两个字节,byte型的数据占一个字节,short型数据占两个字节,为什么不能直接将byte 型或short型数据直接赋值给char 型数据?有这样的自动类型转换byte - short - char -int - long- float - double,直接赋值为什么不行?求解释
作者: 周建    时间: 2012-3-16 13:43
内型转换要这么些写char=(char)byte;
作者: 段浩亮    时间: 2012-3-16 14:03
每种数据类型都是有取值范围的  char的取值范围是0-65535,数值型包括负数
byte b = 3;
char ch = b;
你直接把byte类型的变量赋给ch当然不行,因为b有可能是负数,超出了ch的取值范围
可以把一个确定的byte数值赋给ch
ch = (byte)3;
作者: 石德志    时间: 2012-3-16 18:16
段浩亮 发表于 2012-3-16 14:03
每种数据类型都是有取值范围的  char的取值范围是0-65535,数值型包括负数
byte b = 3;
char ch = b;

谢谢,经过验证果然如此,char的最小值是0,最大取值是65535,非常感谢啊


class Test {
public static void main(String [] args){
byte b = 12;
short s = 46;
char c = 788;
Character ch = c;
int minValue =  (int)ch.MIN_VALUE;
int maxValue = (int)ch.MAX_VALUE;
System.out.println(maxValue);//65535
System.out.println(minValue);//0

}
}




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