Java零基础快速入门|数据类型(下)

主要内容
布尔型详解
浮点型详解
基本数据类型转换
难点疑惑
布尔型详解
在Java 语言中布尔类型的值只包括true 和false,没有其他值,不包括1 和 0,布尔类型的数据在开发中主要使用在逻辑判断方面,例如:如果外面在下雨,我出门带一把雨伞。如果明 天休息,咱们就一起出去玩耍吧。
请看一段程序(以下程序中使用了控制语句,后面会详细讲, 先大概了解一下):

我们对以上程序进行编译并运行,请看下图运行结果:

接下来对以上程序进行一个简单的解释:其中第 3 行代码表示定义一个布尔类型的变量isRain 来表示是否下雨了,给其赋值true,以下的判断逻辑是如果isRain 为true 则输出"外面下雨了,出门要带一把雨伞哦!",反之则输出"外面天气晴朗,走起吧!"。
第 9 行代码表示定义一个布尔类型的变量sex 来表示性别,判断逻辑是如果sex 为true 则输出"哥们你好",反之则输出"姐们你好"。
接下来,我们再来看一段代码,布尔类型变量的值是否可以使用 1 和 0:

我们对以上的程序进行编译,请看下图结果:

通过以上的测试结果可以看出,在 Java 中布尔类型的变量值不能使用1 和0,只能使用true
和false。
通过本小节的学习,大家需要掌握的是在Java 语言中boolean 类型的数据只有两个值,分别是true 和false,没有其他值,并且boolean 类型在开发中主要使用在逻辑判断方面。
浮点型详解
浮点型数据实际上在内存中存储的时候大部分情况下都是存储了数据的近似值,为什么呢?
这是因为在现实世界中存在无穷的数据,例如3.333333333333333333..,数据是无穷的, 但是内存是有限的,所以只能存储近似值,float 单精度占4 个字节,double 双精度占 8 个字节, 相对来说 double 精度要高一些。由于浮点型数据存储的是近似值,所以一般判断两个浮点型数据是否相等的操作很少。
在 java 语言中有这样的一条规定:只要是浮点型的字面量,例如 1.0、3.14 等默认会被当做double 类型来处理,如果想让程序将其当做float 类型来处理,需要在字面量后面添加f/F。
请看以下代码:

编译报错了:

为什么会编译报错呢?那是因为 3.0 默认被当做double 类型来处理,占用8 个字节,前面的f 变量是float 类型占用 4 个字节,大容量无法直接赋值给小容量。
怎么修改呢?请看代码:

运行结果如下图所示:

以上程序的第一种方案在 3.0 后面添加了F,3.0F 被当做float 类型来处理。第二种方案是进行了强制类型转换,第二种方案可能会存在精度损失。
基本数据类型转换
基本数据类型之间是存在固定的转换规则的,现总结出以下 6 条规则,无论是哪个程序,
将这 6 个规则套用进去,问题迎刃而解:
八种基本数据类型中,除boolean 类型不能转换,剩下七种类型之间都可以进行转换;
如果整数型字面量没有超出 byte,short,char 的取值范围,可以直接将其赋值给
byte,short,char 类型的变量;
小容量向大容量转换称为自动类型转换,容量从小到大的排序为:byte < short(char) < int < long < float < double,其中 short 和char 都占用两个字节,但是char 可以表示更大的正整数;
大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能出现精度损失,谨慎使用;
byte,short,char 类型混合运算时,先各自转换成int 类型再做运算;
多种数据类型混合运算,各自先转换成容量最大的那一种再做运算;
接下来,根据以上的6 条规则,我们来看一下以下代码,指出哪些代码编译报错,以及怎么解决(大家注意看代码的注释信息):

编译报错,错误信息如下所示:

如何修改,请看以下代码:



运行结果如下图所示:

通过本小节的学习,大家主要掌握基本数据类型转换的6 条规则,以后遇到类似的问题直接套用规则即可。
难点解惑
本章节的难点主要还是数据类型相互转换这块,例如:byte a = 3;这行代码为什么可以编译通过呢?
按说 3 是int 类型,而a 变量是byte 类型,大容量转换成小容量不是应该使用强制类型转换符吗,这里没有使用,也可以编译通过。
这是因为 Java 中固定的语法规则规定的,当一个整数没有超出 byte 类型取值范围时,可以直接赋值给 byte 类型的变量,其实这一设计也是为了方便程序员写代码。
另外,我们如果基于以上代码再添加这行代码:byte b = a + 4;这行代码为什么又编译报错了呢?
按说a 是 3,3+4 是 7,这个 7 并没有超出byte 取值范围,为什么编译报错呢?这是因为byte 类型的a 和int 类型的 4 求和,结果为int 类型,并且对于以上代码来说 a 是一个变量, 变量就是一个不确定的值,所以编译器会认为a + 4 可能会超出byte 取值范围,所以编译报错了。
如果我们程序是这样写的:byte b = 3 + 4;对于这行代码来说,编译又通过了,这是因为 3 和 4 不是变量,都是确定的值,编译器会直接检测出3+4 等于 7,这个 7 并没有超出范围,所以编译又通过了。
章节小结
通过本章节内容的学习:
需要理解数据类型在程序中的作用,需要掌握在 Java 语言中数据类型包括哪些,其中基本数据类型又包括哪些,每个基本数据类型所占用的字节数量,byte 类型取值范围等。
另外需要理解字符编码在程序中的作用。还有每一种数据类型特有的语法机制,包括整数型字面值默认当做int 类型处理,如果以long 形式表示,需要在字面值后添加 L或l;
浮点型字面量默认被当做 double 处理,后面添加 F/f 才可以被当做float 类型;而布尔型在Java 中只有true 和false 没有其他值;字符型变量完全可以存储1 个汉字等。
除了以上描述之外,还有相对来说难度较大的类型之间的相互转换,这个就需要大家记住相应的转换规则了。
最后附Java零基础视频教程给大家,配合学习效果更佳!!

