猫史档案馆


[教程帖]Java学习教程(第六章){章节总结}

用户:GodeyesGodeyes查看:0 回复:3 评论:0 创建时间:2020-05-11T07:18:06


哈喽,大家好,我是敲击小萌新----------Godeyes。

今天我们继续学习java,废话不多说,直接开锤。

    通过本章节内容的学习,需要理解数据类型在程序中的作用需要掌握在 Java 语言中数据类型包括哪些,其中基本数据类型又包括哪些,每个基本数据类型所占用的字节数量,byte类型取值范围等。另外需要理解字符编码在程序中的作用。还有每一种数据类型特有的语法机制,包括整数型字面值默认当做 int 类型处理,如果以 long 形式表示,需要在字面值后添加 L。

    本章节的难点主要还是数据类型相互转换这块,例如: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 并没有超出范围,所以编译又通过了

章节习题:

 short s1 = 1; s1 = s1 + 1;有什么错?
 char 类型变量能不能储存一个中文的汉字,为什么?
 float f = 1.0 有什么错?
 long a = 2147483喵8 有什么错?
 int i = 0xffff 有问题吗?
 char c = 65536 有问题吗,为什么?


回复

上一页1 页 / 共 1下一页
蒟蒻OIer1048576蒟蒻OIer1048576

dd+cui geng

点赞0


评论


白篮白篮

点赞0


评论


蒟蒻OIer1048576蒟蒻OIer1048576

催更 + 喵

点赞0


评论