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);不报错;
展开
 我来答
柏迎丝07d
2018-11-29
知道答主
回答量:3
采纳率:0%
帮助的人:1863
展开全部
是这样的,整型直接量在没有加后缀的时候默认为int,但是当它被赋值给某个变量(这个变量是short型,int型,byte型中的一种)时,则会自动转化成相对应的类型。
比如说byte a=127;这里的127在没有赋值给a时默认是int型,赋值时自动调为byte型,并赋给a。
但是,如果出现这样的情况:
int a=12;//此处a已经确定是int型
byte b=(byte)a;/**此处必须强制转
换!因为a已经确
定是int型,必
须转化成byte型
**/
Aifuday
2018-06-11 · TA获得超过408个赞
知道小有建树答主
回答量:479
采纳率:66%
帮助的人:53.6万
展开全部
因为编译器很智能啊,属于byte范围内的整数编译期就不报错
但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三种类型;

网页链接

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GTA小鸡
高粉答主

2018-06-11 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
int型的精度比byte型高,从byte转换到int型是向上转型,不需要强制转换;而从int型转换到byte型是向下转型,可能丢失精度,必须强制转换。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
paohui02
2018-06-11 · 超过11用户采纳过TA的回答
知道答主
回答量:27
采纳率:66%
帮助的人:10.9万
展开全部
byte是8位 取值范围: -128-127 ,所有byte都是一个int,
int是32位 取值范围:-2147483648-2147483647 int不一定是byte
int的范围大
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式