关于数据类型转换

小小蜗牛学习记 2017-07-20 01:24:07
我看java有关的视频说,整型的默认类型是int,对此,我做过的测试是定义long b=3000000000(超过int 范围)会报“过大的整数”的错误,而定义为long b=3000000000L时则不报错,既然这样,那么当我long a=12;int c=a时,为什么a不能直接被赋值给c,会报“类型不兼容”错误,不都是int类型吗?新手一枚,请多指教。
...全文
284 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
极客消息 2017-07-25
  • 打赏
  • 举报
回复
涉及到基本的自动类型转换 几种情况: 1、同一类型小范围可以默认转换到大的范围,反之不行 2、不同类型之间的自动类型装换 -- 数字 + 字符串: 数字转换为字符串 -- 数字 + 布尔值:布尔值转换为数字(true--1,false--0) -- 数字 + 字符串:布尔值转换为字符串true或false -- 布尔值+布尔值: 布尔值先转换为数字0或1,参与运算后在转为布尔值
自由自在_Yu 2017-07-25
  • 打赏
  • 举报
回复
因为long长度大于int长度,你要是把一个long变量赋值给int变量,long变量多余的一部分长度放哪儿呢?这样不合情理哈。 如果是int变量赋值给long,就可以通过前面补零的方式凑够long的长度12333->00000000000000123
  • 打赏
  • 举报
回复
谢谢大家,长知识了
  • 打赏
  • 举报
回复
引用 1 楼 wwyslsdy123 的回复:
如果后面不带L,默认是int型,Long b = xx;xx是int型,要符合int的取值范围,这个赋值表达式,是java支持的类型隐式转化。小范围的类型自动转化成大类型的范围,反之不行。
我的意思是按照我问题里所讲的,既然a默认是int类型,c也是int类型,那为啥a不能直接复制给c
MikeDDT009 2017-07-21
  • 打赏
  • 举报
回复
所谓默认是int表明的是只要在代码里面书写不加任何的修饰,那么就是一个Int型,要理解虽然都是用来表示整数,但是类型不一样,long和int是两个类型了,虽然就意义来说都是整数,但是想要把一个整数存进long的变量,那么必须在后面加上L(不区分大小写),而 byte num1 = 1; int num2 = num1; 上面这个可以相等是因为有个自动类型转换,把byte型给int型,那么会先把低层次的提升到高层次,这里详细参考运算符那里,多看看吧
  • 打赏
  • 举报
回复
引用 3 楼 qq_39575892 的回复:
a不应该是一个变量吗?
还是不懂。不过非常感谢!
qq_39575892 2017-07-21
  • 打赏
  • 举报
回复
a不应该是一个变量吗?
Mr_泛其流 2017-07-20
  • 打赏
  • 举报
回复
如果后面不带L,默认是int型,Long b = xx;xx是int型,要符合int的取值范围,这个赋值表达式,是java支持的类型隐式转化。小范围的类型自动转化成大类型的范围,反之不行。

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧