Java中给byte变量直接赋值可以自动转换,但为什么把int变量赋给byte变量需要强制转换,同样是int。
例如:byteb=100;System.out.println(b);不报错。但是,inti=100;byteb=i;System.out.println(b);报错;i...
例如:byte b=100;System.out.println(b);不报错。
但是,int i = 100;byte b=i;System.out.println(b);报错;
int i = 100;byte b=(byte)i;System.out.println(b);不报错; 展开
但是,int i = 100;byte b=i;System.out.println(b);报错;
int i = 100;byte b=(byte)i;System.out.println(b);不报错; 展开
6个回答
展开全部
因为编译器很智能啊,属于byte范围内的整数编译期就不报错
但int变量的值即使属于byte范围内,赋值给byte也是报错,因为超范围了
int的100内存中也是占4个字节,而byte只占1个字节,4个字节的赋值给一个1字节当然要强转
但int变量的值即使属于byte范围内,赋值给byte也是报错,因为超范围了
int的100内存中也是占4个字节,而byte只占1个字节,4个字节的赋值给一个1字节当然要强转
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-06-11
展开全部
1、类型转换主要在在 赋值、方法调用、算术运算 三种情况下发生。
a、赋值和方法调用 转换规则:从低位类型到高位类型自动转换;从高位类型到低位类型需要强制类型转换:
(1)布尔型和其它基本数据类型之间不能相互转换;
(2)byte型可以转换为short、int、、long、float和double;
(3)short可转换为int、long、float和double;
(4)char可转换为int、long、float和double;
(5)int可转换为long、float和double;
(6)long可转换为float和double;
(7)float可转换为double;
另外还有是直接数的赋值:先通过直接数判断其类型,然后基本原则和上面谈到的赋值原则基本一致;只是直接数是整数时特殊一点,当在可表示范围内时,可以直接赋值给 byte short char三种类型;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int型的精度比byte型高,从byte转换到int型是向上转型,不需要强制转换;而从int型转换到byte型是向下转型,可能丢失精度,必须强制转换。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
byte是8位 取值范围: -128-127 ,所有byte都是一个int,
int是32位 取值范围:-2147483648-2147483647 int不一定是byte
int的范围大
int是32位 取值范围:-2147483648-2147483647 int不一定是byte
int的范围大
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询