Java期末笔记超全精简总结
第一章 Java入门
1. 三大平台
◦ Java SE:标准版桌面程序
◦ Java EE:企业web项目
◦ Java ME:微型嵌入式设备
2. Java核心特点:简单、面向对象、平台无关、多线程、动态
3. 运行原理:源码.java→javac编译为字节码.class→JVM虚拟机解释执行,跨平台靠JVM
4. 源文件与类规则
1. 一个文件最多1个public类,文件名必须和public类名完全一致
2. 无public类时,文件名匹配任意类即可
3. 多个类编译生成多个.class文件
4. 程序入口:包含public static void main(String[] args)的类为主类
5. 程序执行顺序:从主类main方法开始;package包声明必须放在文件第一行
第二章 基本数据类型、数组、枚举
1. 标识符规范
只能由字母、下划线、$、数字组成;不能以数字开头;不能是关键字、true/false/null
2. 数据类型
• 布尔:boolean,取值true/false
• 整数(精度从小到大):byte(1B) < short(2B) < int(4B默认) < long(8B,后缀L)
• 浮点:float(后缀F)、double(默认)
• 精度提升规则:低于int的类型运算后结果自动为int;字符串+任意类型=字符串
3. 输入输出
• 输入:Scanner reader = new Scanner(System.in);,调用nextInt/nextDouble()等
• 输出:System.out.println()换行 / print()不换行
4. 数组
1. 三种声明:int arr[]; int[] arr; int[] arr = new int[长度];
2. 静态初始化:int[] arr = {1,2,3};
3. 下标从0开始;数组名.length获取元素个数,二维数组length是一维数组个数
5. 枚举
语法:enum 枚举名 {常量列表},固定有限常量集合
第三章 类与对象
1. 面向对象三大特性
封装、继承、多态
2. 变量分类
• 成员变量:类内、方法外定义,属于对象/类
• 局部变量:方法内定义,仅方法内生效;和成员变量重名时屏蔽成员变量
3. 方法
• 方法重载:方法名相同,参数个数/类型不同,与返回值无关
• 构造方法
1. 方法名和类名完全相同,无返回值,不能加void
2. 作用:对象初始化,可重载
3. 无自定义构造时,编译器提供默认无参构造;自定义构造后默认构造消失
4. 对象创建与访问
• 创建:类名 对象 = new 类名();
• .运算符:对象.变量、对象.方法(),实现封装访问
5. 参数传递
1. 基本数据类型:值传递,方法内修改不影响原值
2. 引用类型(数组、对象):地址传递,方法内修改会改变原数据
6. static关键字
1. 修饰变量=类变量;修饰方法=类方法;无static为实例变量/实例方法
2. 类变量:类加载时分配内存,可用类名.变量 / 对象访问
3. 实例变量:仅new对象后分配,只能对象访问
4. 类方法:可类名/对象调用,只能操作类变量、调用类方法,不能访问实例内容
5. 实例方法:仅对象调用,可操作全部变量、调用所有方法
7. this关键字
代表当前调用方法的对象;可调用成员变量、普通方法、构造方法;构造方法内this()必须放第一行
8. 包与导入
1. package包声明只能1条,文件首行
2. import导入类,import 包.*导入包下所有类,放在package和类中间
9. 四大访问权限(从宽到窄)
1. public:任意包任意类访问
2. protected:同包、子类可访问
3. 默认(无修饰):仅同包访问
4. private:仅本类内部访问
10. 包装类
基本类型对应封装类:Byte、Short、Integer、Long、Float、Double、Character、Boolean
自动装箱:基本类型→包装类;自动拆箱:包装类→基本类型
第四章 继承、抽象类、接口
1. 继承规则
1. Java单继承:一个类只能直接extends一个父类,父类Object是所有类根类
2. 不可继承:父类private成员、不同包下默认权限成员
3. 子类构造方法默认第一行隐式super()调用父类无参构造;显式super()必须放首行
4. 成员隐藏:子类变量和父类同名,子类屏蔽父类变量;子类方法重写可覆盖父类方法
2. 方法重写
子类方法和父类方法方法名、参数列表完全一致;重写不能降低访问权限
3. final关键字
1. final类:不能被继承
2. final方法:不能被子类重写
3. final变量:常量,定义必须初始化,不可修改
4. 向上转型
父类引用指向子类对象:父类 引用 = new 子类();
• 优点:多态统一调用重写方法
• 限制:无法访问子类独有的变量/方法;静态方法不具备多态,只会调用父类静态方法
5. abstract抽象类&抽象方法
1. 抽象方法:abstract修饰,只有声明、无方法体;类含抽象方法则类必须abstract
2. 抽象类:不能new创建对象;可包含普通变量、普通方法、抽象方法
3. 普通子类继承抽象类,必须重写全部抽象方法;抽象子类可不用重写
4. abstract和final不能同时修饰方法
6. 接口 interface
1. 语法:interface 接口名{};类实现接口用implements,一个类可实现多个接口
2. 接口成员默认修饰:
◦ 变量:public static final常量,必须初始化
◦ 抽象方法:public abstract;Java8新增default默认方法(有方法体)
3. 接口特点:多实现、多继承;无普通变量、无静态方法;不能new实例
7. 抽象类 vs 接口
1. 变量:抽象类可普通变量/常量;接口只能常量
2. 方法:抽象类有普通+抽象;接口只有抽象+default方法
3. 构造:抽象类有构造;接口无构造
4. 继承:类只能单继承抽象类;类可多实现接口
第五章 内部类、匿名类、Lambda、异常
1. 内部类
类中定义的类,可访问外部类所有成员;支持四种访问修饰符、final/abstract修饰
2. 匿名内部类
无类名的子类,直接new父类/接口;不能有静态成员;常作为方法参数传递
3. Lambda表达式
函数式接口(仅一个抽象方法)的简化写法:(参数列表) -> {方法体},参数类型可省略
4. 异常处理
1. try-catch-finally:try放可能出错代码,catch捕获对应异常;finally无论是否异常都会执行,System.exit()会跳过finally
2. throw / throws区别
◦ throw:方法内部手动抛出单个异常对象
◦ throws:方法声明处,标识该方法可能抛出多种异常类
3. 自定义异常:继承Exception,通过throw抛出、throws声明
第六章 常用工具类
String
1. 不可变字符串,常量存常量池;不能被继承
2. 常用方法:length()长度、equals()内容相等、compareTo()字典比较、indexOf()查找下标、substring()截取
StringBuffer
可变字符序列,append()拼接字符串
日期类
LocalDate日期、LocalTime时间、LocalDateTime日期时间,.now()获取当前时间
正则表达式:匹配特殊字符组成的文本规则
第七章 Swing图形界面
1. 顶层容器JFrame窗口;常用方法setBounds()大小位置、setVisible(true)显示、setDefaultCloseOperation()关闭行为
2. 常用组件:JButton按钮、JLabel标签、JTextField单行输入、JTextArea多行文本、JCheckBox复选框、JComboBox下拉框
3. 布局管理器
◦ FlowLayout:流式从左到右
◦ BorderLayout(默认):东西南北中5块
◦ GridLayout:网格行列
◦ CardLayout:卡片层叠
◦ null:绝对布局
4. 事件监听
◦ 事件源(按钮/输入框)注册监听器addActionListener()
◦ ActionListener接口实现actionPerformed()处理点击事件
◦ 鼠标事件MouseListener
5. MVC架构:Model数据模型、View视图界面、Controller交互控制器
第八章 IO流
1. File类:文件/路径对象,仅代表路径,不操作读写
2. 字节流(处理所有文件)
• 输入FileInputStream、输出FileOutputStream;读写read()/write()
3. 字符流(仅文本文件)
• 输入FileReader、输出FileWriter
4. 缓冲流(包装底层流,提升效率)
BufferedReader、BufferedWriter,支持readLine()按行读取
5. 对象流(序列化存储对象)
ObjectInputStream读对象、ObjectOutputStream写对象
网络基础
TCP:面向连接可靠;UDP:无连接数据报,速度快不可靠
第九章 泛型与集合框架
1. 泛型
类/接口/方法声明<类型>,仅支持引用类型,不支持基本类型;?通配符代表任意类型
2. Collection单列集合
1. List(有序可重复)
◦ ArrayList:数组底层,查询快增删慢
◦ LinkedList:链表底层,增删快查询慢
◦ Stack栈:先进后出,push入栈、pop出栈、peek取栈顶
2. Set(无序不可重复)
◦ HashSet:哈希表
◦ TreeSet:有序二叉树
3. Map双列集合(键值对,key唯一)
HashMap、TreeMap;重复key会覆盖原有value
第十章 多线程
1. 多线程分时调度,主线程+子线程交替执行
2. 创建线程:继承Thread类,重写run()方法定义任务,调用start()启动
3. 线程同步:多线程并发修改同一变量时,用synchronized修饰方法保证安全
