前言
该笔记主要是对《Java核心技术卷1 基础知识》一书的总结,其中部分知识的理解附加了我对其他博主的优秀解释博文的总结以及博文链接。
其中❓表示我所不理解或不确认正确的内容,📄表示对内容的注释,🔕表示特别容易出现问题。
非常希望和感谢有优秀的同学能帮忙回答补充❓中的问题。
基本数据类型
Java中共有8中基本数据类型:byte、short、int、long、float、double、char、boolean
整型
类型 | 存储需求 | 取值范围 | 具体范围 |
---|---|---|---|
int | 4字节 | (-231) ~ (231 - 1) | -2 147 483 648 ~ 2 147 483 647 (约21亿) |
long | 8字节 | (-263) ~ (263 - 1) | -9 223 372 036 854 775 B08 ~ 9 223 372 036 854 775 807 |
short | 2字节 | (-215) ~ (215 - 1) | -32 768 ~ 32 767(约3万) |
byte | 1字节 | (-27) ~ (27 - 1) | -128 ~ 127 |
📄:取值范围之所以少了一位,是因为最高位用来表示正负号了。一个字节等于8位
后缀
- 长整型:L/l
前缀
- 二进制数值:0B/0b Java7
- 八进制数值:0
- 十六进制:0X/0x
拓展
数字字面值下划线:_ Java7
例:1_000_000 或 0b1111_0100_0010_0100_0000 ,等价于一百万(1000000)
Java编译器编译时会自动将下划线去除
浮点型
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4字节 | |
double | 8字节 |
❓:我对于浮点型不是很理解,更多知识可以参考:[Java]浮点数float、double取值范围与精度
📄:对于银行类的程序,关于金钱数额的计算不使用浮点型,而是使用BigDecimal
后缀
float数值:F/f 例:2.66f
double数值:D/d (可以不写,无后缀浮点数默认为double类型) 例:2.66 或 2.66d
字符型
类型 | 存储需求 |
---|---|
char | 2字节 |
char类型字面值使用单引号’'包含,例如:'a’表示字符a,而"a"表示包含一个字符a的字符串
char类型可以使用十六进制表示,范围:\u0000 ~ \uffff
🔕:在Java代码注释中慎用\u 等转义序列,会触发一些问题,但开心的时目前的开发工具大都对其有报错提示。
🔕:强烈建议避免在程序中使用char类型,建议转换为字符串进行处理。因为一个char字符并不一定等于一个Unicode的字符,有些Unicode的字符需要使用两个char字符。更多详情参考:为啥在java中不要使用char类型
常见转义字符
转义序列 | 用途 | Unicode值 |
---|---|---|
\b | 退格(类似于键盘上的Backspace) | \u0008 |
\t | 制表(类似于键盘上的Tab) | \u0009 |
\n | 换行 | \u000a |
\r | 回车(类似于键盘上的Enter) | \u000d |
\" | 双引号 | \u0022 |
\’ | 单引号 | \u0027 |
\\ | 反斜杠 | \u005c |
❓:我对\b退格的操作无法实现,使用cmd命令运行也无法出现效果。
📄:\t制表符以8的倍数补充空格,例如123456\tcc的效果为:123456 cc(中间补2个空格满8位),123456789\tcc的效果:123456789 cc(中间补7个空格满8*2=16位)。更多参考:java-制表符\t的使用
📄:\r、\n 的区别,主要跟系统有关,Mac使用\r,Unix使用\n,Windows使用\r\n。其中\n\r为两次换行效果,其他为一次换行效果。更多参考:java中\r,\n,\r\n,\n\r的区别
布尔类型
类型 | 存储需求 | 取值范围 |
---|---|---|
boolean | 1字节 | true/false |
📄:在Java中布尔类型值只有true和false,且不能和整型进行转换。注意与有些编程语言中可以使用0和非0表达false和true进行区别。