这里写自定义目录标题
- Java中的数据类型
- 类型转换的问题
Java中的数据类型
Java是一种强数据类型的语言。Java中数据类型可以分为基本数据类型和引用数据类型两大类。
基本数据类型为:
四种整数类型:byte:一字节 short: 两字节 int:四字节 long:八字节,定义时在结尾加L或者l。
两种浮点型:double:八字节 float:四字节,定义时在结尾加f或者F。
一种字符型:char:占两字节
一种布尔类型:true或者false
类型由小到大为:byte short char int char float double long
类型转换的问题
我们只需要记一句话小转大自动转,大转小强制转即可。这里要注意的是在强制类型转换的时候可能会丢失精度。
在类型转换中还是有一些问题是需要我们注意的:
- 当byte,short参与运算的时候会自动提升为int类型参与运算。如果两个byte类型的变量参与运算可能会丢失报错丢失精度得问题。
通过上面两幅图我们看见了,当定义两个byte变量的时候,在编译阶段会报错。这里就有疑问了,为什么我相同类型的变量运算会出现错误呢。
我们再来看两个例子
在这里我们看到如果是两个byte类型的常量进行运算,却神奇的没有问题了,这是为啥呢。
这是因为Java中默认的运算类型是整型的,由于byte类型的a和b,虚拟机没有办法知道里面值的大小,认为有可能会超过byte的范围,因此就提升了int类型,因此报错了。如果是常量的话,虚拟机判断出来没有溢出,因此就不会报错。 - 强制类型转换,由大类型转换为小类型,有可能会丢失精度,但是不会报错。强制类型转化的方法为();
在这里就强制类型转换了,但是如果
这样的话就会报错,是因为括号的优先级高,所以这本质上和a+b没有区别。
5.还有一点要注意的就是当整型遇见浮点型的话,整型变量会自动转换为浮点型