这里写自定义目录标题

  • 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

类型转换的问题

我们只需要记一句话小转大自动转,大转小强制转即可。这里要注意的是在强制类型转换的时候可能会丢失精度。
在类型转换中还是有一些问题是需要我们注意的:

  1. 当byte,short参与运算的时候会自动提升为int类型参与运算。如果两个byte类型的变量参与运算可能会丢失报错丢失精度得问题。


    通过上面两幅图我们看见了,当定义两个byte变量的时候,在编译阶段会报错。这里就有疑问了,为什么我相同类型的变量运算会出现错误呢。
    我们再来看两个例子


    在这里我们看到如果是两个byte类型的常量进行运算,却神奇的没有问题了,这是为啥呢。
    这是因为Java中默认的运算类型是整型的,由于byte类型的a和b,虚拟机没有办法知道里面值的大小,认为有可能会超过byte的范围,因此就提升了int类型,因此报错了。如果是常量的话,虚拟机判断出来没有溢出,因此就不会报错。
  2. 强制类型转换,由大类型转换为小类型,有可能会丢失精度,但是不会报错。强制类型转化的方法为();

    在这里就强制类型转换了,但是如果

    这样的话就会报错,是因为括号的优先级高,所以这本质上和a+b没有区别。
    5.还有一点要注意的就是当整型遇见浮点型的话,整型变量会自动转换为浮点型