JAVA为什么byte b=a+1会报错
bytea=1;//这个不会报错,1默认是int类型,在byte可以表示的范围内byteb=a+1;//这个就报错,a+1=2,结果是int型,也在byte可以表示的范围...
byte a=1;//这个不会报错,1默认是int类型,在byte可以表示的范围内
byte b=a+1;//这个就报错,a+1=2,结果是int型,也在byte可以表示的范围之内,为什么不可以赋给byte 展开
byte b=a+1;//这个就报错,a+1=2,结果是int型,也在byte可以表示的范围之内,为什么不可以赋给byte 展开
7个回答
展开全部
byte a= 1;∥=号后面是个常量时,=号会自动类型转换,int类型1,转换成byte类型。
float a =1.0F;∥=号后面是个常量时,=号会自动转换类型,double类型1.0,转换成float类型。
char x = 'a';∥+号后面是个常量时,=号会自动转换类型,int类型97,转换成char类型。
——————————————————————————————
byte a = 1;
byte b = a+1;∥+会自动提升类型,a被提升为int,a+1是个表达式,是不确定的,所以=不会自动转换类型,需要,改为byte b = (byte)(a+1)
————————————————————————————————
byte a = 1;
a +=2;∥+把a被提升为int类型,2取自常量池int,1+2得3,常量+常量得常量,常量在+=(=)后面,自动转换类型,不报错。
——————————————————————————————————
int a = 1;
int b = a+1;∥int类型a加int类型1,结果为int类型的值(a+1),int变量的值,肯定可以放入int变量里,所以int b= a+ 1不报错。
float a =1.0F;∥=号后面是个常量时,=号会自动转换类型,double类型1.0,转换成float类型。
char x = 'a';∥+号后面是个常量时,=号会自动转换类型,int类型97,转换成char类型。
——————————————————————————————
byte a = 1;
byte b = a+1;∥+会自动提升类型,a被提升为int,a+1是个表达式,是不确定的,所以=不会自动转换类型,需要,改为byte b = (byte)(a+1)
————————————————————————————————
byte a = 1;
a +=2;∥+把a被提升为int类型,2取自常量池int,1+2得3,常量+常量得常量,常量在+=(=)后面,自动转换类型,不报错。
——————————————————————————————————
int a = 1;
int b = a+1;∥int类型a加int类型1,结果为int类型的值(a+1),int变量的值,肯定可以放入int变量里,所以int b= a+ 1不报错。
展开全部
以前好像遇到过,jdk里面有个自带的转换机制,第一个语句他会默认的把1转换成byte类型,而第二个,1是int类型而a和b是byte类型,在运算的时候a会自动转换为int类型与1相加,而结果会变成int类型,这个时候大类型就不能自动转化成小类型,必须强制转换byte b = (byte) (a+1);大概是这么个意思
追问
那第一个1也是int啊,怎么第一个就可以赋给byte呢
追答
当字面整数常量保存到byte、short、long 或char类型的变量中时,Jdk会执行自动类型转换,概括说就是整型值赋值的时候可以自动转换
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
byte b=a+1; 这里java中数值加减都是转换为int来加减,结果也是int类型的
int类型是大范围类型,赋值给小类型需要强制转换即可,修改如下
byte b=(byte)(a+1);
int类型是大范围类型,赋值给小类型需要强制转换即可,修改如下
byte b=(byte)(a+1);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
转型 1默认是int类型,byte+int类型这个语法是不通的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java中,a+1默认强转成int型,而且你都知道结果是int型了,怎么能赋值给一个byte型变量呢?
String str = "1";
int a = 1;
能把str赋值给a吗?
String str = "1";
int a = 1;
能把str赋值给a吗?
追问
我的意思是第一个式子1也是int,可以赋给byte,第二个a+1的结果也是int,为什么第二个不能赋给byte
追答
你的第一个式子 byte a = 1 这里的1不是int型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询