黑马程序员技术交流社区

标题: 关于java基本类型和运算符的问题? [打印本页]

作者: frozentears    时间: 2016-7-17 22:45
标题: 关于java基本类型和运算符的问题?
  1. short s=1; s= s +1; 和s+=1;
  2. 前者损失精度,后者不报错,这是为什么?
  3. char c='1'; c=c+1;会报错,损失精度这个我明白
  4. 可是char c=1+'1';不会报错 ,这又是为什么?
复制代码

作者: 小熊猫2016    时间: 2016-7-17 23:44
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
作者: jmf332376308    时间: 2016-7-18 00:20
以取值范围的大小排列数据的基本类型. :double>float>long>int>char>short>byte   s+1和c+1 系统会默认转化为int类型,因为int大于char和short  会损失精度所以会报错!
作者: Sachiel    时间: 2016-7-18 00:25
以取值范围的大小排列数据的基本类型. :double>float>long>int>char>short>byte   s+1和c+1 系统会默认转化为int类型,因为int大于char和short  会损失精度所以会报错!
作者: zhangjiesss    时间: 2016-7-18 07:01
可能因为‘1’也是字符类型,所以+1没事
作者: HEBEIREN    时间: 2016-7-18 08:30
个人认为,只要存在向下转型的表达式,都会报错,需要强制转换才能实现。对于“+=”操作,系统会自动执行类型转换操作,等价于s=(short)s+1。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2