第二单元思维导图
第二单元思维导图
中心主题: 第二单元
一、 数据类型与运算符
1. 数据类型
- 基本数据类型
- 整数类型
- byte (8 bits)
- short (16 bits)
- int (32 bits)
- long (64 bits)
- 字面量表示:十进制,八进制(0开头),十六进制(0x开头),二进制(0b开头, Java 7+)
- 浮点数类型
- float (32 bits)
- double (64 bits)
- 字面量表示: 小数点,科学计数法(e/E)
- 精度问题
- 字符类型
- char (16 bits, Unicode)
- 字面量表示:单引号括起来的单个字符
- 转义字符:\n, \t, \r, \b, \, \', \"
- 布尔类型
- boolean (true or false)
- 字面量表示: true, false
- 类 (Class)
- 接口 (Interface)
- 定义:使用
interface
关键字
- 作用:定义规范,实现多重继承类似的功能
- 数组 (Array)
- 定义:相同类型元素的集合
- 声明:
type[] arrayName;
或 type arrayName[];
- 初始化:静态初始化,动态初始化
- 枚举 (Enum)
- 定义:使用
enum
关键字
- 用途:定义有限数量的常量
- 自动类型转换 (隐式转换)
- 低精度 -> 高精度
- byte -> short -> int -> long -> float -> double
- 强制类型转换 (显式转换)
- 高精度 -> 低精度
- 可能会导致精度丢失
- 语法:
(type) value
- Byte, Short, Integer, Long, Float, Double, Character, Boolean
- 用途:将基本数据类型封装成对象
- 自动装箱 (Autoboxing)
- 自动拆箱 (Unboxing)
2. 运算符
- 算术运算符
+
(加)
-
(减)
*
(乘)
/
(除)
%
(取余/模)
++
(自增)
--
(自减)
- 前缀形式:
++i
, --i
(先运算,后使用)
- 后缀形式:
i++
, i--
(先使用,后运算)
==
(等于)
!=
(不等于)
>
(大于)
<
(小于)
>=
(大于等于)
<=
(小于等于)
- 结果为 boolean 类型
&&
(逻辑与)
- 短路与:如果左侧表达式为 false,则不计算右侧表达式
||
(逻辑或)
- 短路或:如果左侧表达式为 true,则不计算右侧表达式
!
(逻辑非)
&
(按位与)
|
(按位或)
^
(按位异或)
>>
(右移)
<<
(左移)
>>>
(无符号右移)
&
(按位与)
|
(按位或)
^
(按位异或)
~
(按位取反)
=
(简单赋值)
+=
, -=
, *=
, /=
, %=
, &=
, |=
, ^=
, >>=
, <<=
, >>>=
(复合赋值)
condition ? expression1 : expression2
+
(字符串连接)
- 任何数据类型与字符串相加,都会转换为字符串
- 括号 > 单目运算符 > 算术运算符 > 位运算符 > 关系运算符 > 逻辑运算符 > 条件运算符 > 赋值运算符
二、 流程控制
1. 顺序结构
2. 选择结构
- if 语句
if (condition) { ... }
if (condition) { ... } else { ... }
if (condition1) { ... } else if (condition2) { ... } else { ... }
switch (expression) { case value1: ... break; case value2: ... break; default: ... }
- expression 的类型:byte, short, int, char, enum, String (Java 7+)
- case 穿透:如果没有 break 语句,会继续执行下一个 case
3. 循环结构
- for 循环
for (initialization; condition; increment) { ... }
- 执行顺序:initialization -> condition -> 循环体 -> increment -> condition ...
- 无限循环:
for (;;) { ... }
while (condition) { ... }
- 先判断条件,再执行循环体
- 无限循环:
while (true) { ... }
do { ... } while (condition);
- 先执行循环体,再判断条件
- 至少执行一次
for (type variable : collection) { ... }
- 用于遍历数组和集合
- 用于跳出循环
- 可以跳出多层循环 (使用标签)
- 用于跳过本次循环,继续下一次循环
- 可以跳过指定循环 (使用标签)
三、 方法
1. 方法定义
[访问修饰符] [static] 返回值类型 方法名(参数列表) { ... return 返回值; }
- 访问修饰符:public, private, protected, 默认
- static: 静态方法,属于类,可以直接通过类名调用
- 返回值类型:void (没有返回值) 或 具体类型
- 方法名:标识符,符合命名规范
- 参数列表:类型 参数名, 类型 参数名, ...
- return 语句:返回返回值 (如果返回值类型不是 void)
2. 方法调用
3. 方法重载 (Overloading)
- 方法名相同,参数列表不同 (参数类型,参数个数,参数顺序)
4. 方法递归 (Recursion)
- 方法调用自身
- 需要有递归出口 (结束条件)
- 可能会导致栈溢出 (StackOverflowError)
四、 数组深入
1. 多维数组
- 数组的元素也是数组
- 声明:
type[][] arrayName;
- 初始化:
- 静态初始化:
int[][] arr = {{1,2}, {3,4,5}};
- 动态初始化:
int[][] arr = new int[2][3];
或 int[][] arr = new int[2][]; arr[0] = new int[3]; arr[1] = new int[4];
2. 数组的拷贝
System.arraycopy(src, srcPos, dest, destPos, length);
Arrays.copyOf(originalArray, newLength);
- 克隆(clone()方法):返回数组的一个副本。
3. 数组排序
4. 数组的查找
- 线性查找
- 二分查找 (binarySearch):要求数组已经排序。
Arrays.binarySearch(array, key);