Java知识线路
- Java基础
- 变量
- 运算符
- 数组
- 流程控制
- 面向对象
- 封装
- 继承
- 多态
- 抽象
- 接口
- 核心类库
- 集合
- 实用类
- 并发
- 多线程
- JUC
- 高级
- IO
- 网络编程
- WEB
- 框架
数据类型
- 基本数据类型
- 引用数据类型
两者的区别
- 变量都是存储在栈内存中
- 基础数据类型的值就在栈内存中直接使用
- 引用数据类型的值在堆内存中
基本数据类型
整数类型(4种)
1字节为8位二进制
| 类型 | 占用字节 | 取值范围 | 默认值 | 使用场景 |
|---|---|---|---|---|
| byte | 1字节 | -128 ~ 127 | 0 | 节省内存,处理文件流或网络传输 |
| short | 2字节 | -32768 ~ 32767 | 0 | 较少用,二进制文件操作时偶尔用 |
| int | 4字节 | 约-21亿 ~ 21亿 | 0 | 最常用的整数,默认整数类型 |
| long | 8字节 | -2⁶³ ~ 2⁶³-1 | 0L | 数值范围超过int时使用,赋值时末尾加L |
浮点类型(2种)
| 类型 | 占用字节 | 取值范围 | 默认值 | 注意事项 |
|---|---|---|---|---|
| float | 4字节 | 约 ±3.4e-38 ~ ±3.4e38 | 0.0f | 赋值时末尾加f,精度约6-7位小数 |
| double | 8字节 | 约 ±4.9e-324 ~ ±1.8e308 | 0.0d | 默认浮点类型,精度约15-16位小数,金融计算慎用 |
字符类型(1种)
| 类型 | 占用字节 | 取值范围 | 默认值 | 说明 |
|---|---|---|---|---|
| char | 2字节 | 0 ~ 65535(Unicode字符) | '\u0000' | 用单引号表示,如 'A',本质上是一个无符号整数 |
布尔类型(1种)
| 类型 | 占用字节 | 取值范围 | 默认值 | 说明 |
|---|---|---|---|---|
| boolean | 1位(1bit)(1/8字节) | true / false | false | 只表示逻辑值,不能与整数互转(与C/C++不同) |
自动类型转换和强制类型转换
自动类型转换都是从小往大转,强制类型转换使用不当会丢失精度
引用数据类型的转换前提是继承,接口不能强制类型转换,接口无法实例化
逻辑运算符
- 与
&&:短路与,性能更高,表达式一旦出现false就直接返回,不再计算之后表达式&:计算所有表达式得到结果,结果和短路与一致
- 或
||:短路或,性能更高,表达式一旦出现true就直接返回,不再计算之后表达式|:计算所有表达式得到结果,结果和短路或一致
- 非
!:取反
位运算符
都是数值运算,转为二进制后按位补齐,再进行计算
&:按位与,都为1记为1,否则记为0|:按位或,有一个为1记为1,否则记为0^:按位异或,相同记为1,不同记为0<<:乘2的N次方>>:除2的N次方
流程控制
if,if-else,elseswitch-casewhile:先判断再执行do-while:先执行再判断,也就是至少执行1次forforeach
结束方式:
- 循环逻辑结束
- 抛出异常
continue,跳过本次循环break,结束整个循环