java基础之数值类型转换的问题
2017-03-08 22:04
671 查看
最近有很多的数值类型转换的问题,全都是java基础,今天总结下,废话不多说,直接上代码:
1:
2:
3:
4:
相信小伙伴们想急切的看答案吧,这里首先公布下答案
你们回答对了多少?
全部答错的,拉出去别当程序员了,
这里回答几个关键点:
java基本类型转换,精度小于int的数值运算的时候都会被自动转换为int后进行计算。+=这类运算符,java会自动进行强制转换,不用人为干预。
精度高的向精度低的转换,得需要强转,也就是小转大,自动转,大转小,得强制。强制转之后,如果发现转后的数超过强转类型的取值范围,但不超过2倍的取值范围的话,会从最小的开始记录,这句话比较绕,举个例子:
附上java基本类型取值范围表
可以看到byte 取值范围在 -128—127 ,上面话的意思就是a和b 先转为int类型,之后相加,也是int类型,强转byte类型时,由于byte取值范围限定,存不了250这个数,所以byte类型做了个操作,127 满了之后又从新从-128开记录了,相当于-128+122=-6,把 -6 给了byte类型,大家都知道byte最大为127,再大就会报错,两个byte最大值相加之后,byte = ? ,答案是 -2。理解了么?
下面的例子,跟上面例子差不多,惟一要注意的是char本身在码表中可以用数字表示的, char 类型 +int 时char会先转换为ASCII表对应的数字,没有的话就无所为了,其他的都简单。
1:
byte a = 1; byte b = 2; byte c = a + b; c是多少?
2:
byte a = 1; byte c = 0; c += a; c是多少?
3:
byte a = 125; byte b = 2; byte c = (byte) (a + b); c是多少?
4:
byte a = 125; byte b = 3; byte c = (byte) (a + b); c是多少?
相信小伙伴们想急切的看答案吧,这里首先公布下答案
1:错,2:1,3:127,4:-128
你们回答对了多少?
全部答错的,拉出去别当程序员了,
这里回答几个关键点:
java基本类型转换,精度小于int的数值运算的时候都会被自动转换为int后进行计算。+=这类运算符,java会自动进行强制转换,不用人为干预。
精度高的向精度低的转换,得需要强转,也就是小转大,自动转,大转小,得强制。强制转之后,如果发现转后的数超过强转类型的取值范围,但不超过2倍的取值范围的话,会从最小的开始记录,这句话比较绕,举个例子:
byte a = 125; byte b = 125; byte c = (byte) (a + b); System.out.println(c);
附上java基本类型取值范围表
可以看到byte 取值范围在 -128—127 ,上面话的意思就是a和b 先转为int类型,之后相加,也是int类型,强转byte类型时,由于byte取值范围限定,存不了250这个数,所以byte类型做了个操作,127 满了之后又从新从-128开记录了,相当于-128+122=-6,把 -6 给了byte类型,大家都知道byte最大为127,再大就会报错,两个byte最大值相加之后,byte = ? ,答案是 -2。理解了么?
下面的例子,跟上面例子差不多,惟一要注意的是char本身在码表中可以用数字表示的, char 类型 +int 时char会先转换为ASCII表对应的数字,没有的话就无所为了,其他的都简单。
String str1 = "hello"; int myInt = 12; char ch1 = 'a'; System.out.println(str1 + myInt + ch1); System.out.println(myInt + ch1 + str1); System.out.println(ch1 + str1 + myInt);
相关文章推荐
- java基础-数值运算中的类型转换问题
- Java中不同数值类型间转换与计算精度丢失问题
- java基础之数值类型间的转换
- java基础中的数据类型的转换问题
- Java中不同数值类型间转换与计算精度丢失问题
- Java基础小结(数值类型转换规则)
- 关于SQL Server中将数值类型转换为字符串的问题
- java数值类型自动转换原则
- java中byte[]转换成String类型的问题
- 关于Flex 和java之间利用Blazeds通信的类型转换问题
- java Long类型转换为flex AS Number类型时出现数值错误
- Java基础:第二十讲 Java基本类型与字符串之间的转换
- 解决struts2基础数据类型自动转换,输入字母报错问题!
- java 数值类型转换时,如果格式不对
- 类型转换问题(java会把byte,short和char的运算操作转换为int类型即低精度自动向高精度转换)
- (转)在VS2005/2008中字符串编码问题的解决及字符串和数值类型常用的转换方法
- 关于SQL Server中将数值类型转换为字符串的问题[转]
- 对java基础数据类型在运算过程中的自动转换的一些分析
- java中byte[]转换成String类型的问题
- 关于SQL Server中将数值类型转换为字符串的问题