为了账号安全,请及时绑定邮箱和手机立即绑定

java中整数数值默认是int类型,这句话正确吗?

java中整数数值默认是int类型,这句话正确吗?

人到中年有点甜 2019-03-01 11:17:01
比如byte b = 1; char c = 1;,如果整数类型默认是int类型的话,那么byte b = 1;应该需要强转换才对,因为int是高精度的,但这里明显不报错,这是为什们呢?
查看完整描述

7 回答

?
慕粉2221179654

TA贡献1条经验 获得超1个赞

这里走的是 常量优化机制

查看完整回答
1 反对 回复 2019-12-18
?
万千封印

TA贡献1891条经验 获得超3个赞

首先,整数类型默认是int。这个毫无疑问。
其次,在允许的类型范围内,在此处byte:-128~127
而整数int 1 在这个范围,编译器会对常量自动进行向下的转化。
如果超出这个范围的常量,编译器直接报错。

查看完整回答
1 反对 回复 2019-03-01
?
翻阅古今

TA贡献1780条经验 获得超5个赞

byte,short,char,boolean在底层都是当做int来处理的

查看完整回答
反对 回复 2019-03-01
?
森栏

TA贡献1810条经验 获得超5个赞

不对的,两个整形相加,如果小于等于int,则默认是int,如果其中一个为long,则默认按照long;

你试试申明两个byte变量,然后相加赋值给另一个byte变量,编译器会提示出错的,需要强制类型转换的

查看完整回答
反对 回复 2019-03-01
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

分自动转换和强制转换的

查看完整回答
反对 回复 2019-03-01
?
湖上湖

TA贡献2003条经验 获得超2个赞

首先,整数值默认 就是int类型,除此之外还有两种特殊情况:
1.如果直接将较小的整数值(在byte或short类型的表数范围内)赋给一个byte或short变量,系统会自动把这个整数值当成byte或short类型来处理
2.如果使用一个巨大的整数值(超出了int类型的表数范围)时,Java不会自动把这个整数值当成long类型来处理,如果希望系统把这个整数值当成long类型来处理,应在这个整数值后增加英文字母l或者L作为后缀。

题主的问题可以用第一个特殊情况来解释

查看完整回答
反对 回复 2019-03-01
  • 7 回答
  • 0 关注
  • 2446 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信