Java期末笔记超全精简总结
第一章 Java入门1. 三大平台◦ Java SE标准版桌面程序◦ Java EE企业web项目◦ Java ME微型嵌入式设备2. Java核心特点简单、面向对象、平台无关、多线程、动态3. 运行原理源码.java→javac编译为字节码.class→JVM虚拟机解释执行跨平台靠JVM4. 源文件与类规则1. 一个文件最多1个public类文件名必须和public类名完全一致2. 无public类时文件名匹配任意类即可3. 多个类编译生成多个.class文件4. 程序入口包含public static void main(String[] args)的类为主类5. 程序执行顺序从主类main方法开始package包声明必须放在文件第一行第二章 基本数据类型、数组、枚举1. 标识符规范只能由字母、下划线、$、数字组成不能以数字开头不能是关键字、true/false/null2. 数据类型• 布尔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. 方法名和类名完全相同无返回值不能加void2. 作用对象初始化可重载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修饰只有声明、无方法体类含抽象方法则类必须abstract2. 抽象类不能new创建对象可包含普通变量、普通方法、抽象方法3. 普通子类继承抽象类必须重写全部抽象方法抽象子类可不用重写4. abstract和final不能同时修饰方法6. 接口 interface1. 语法interface 接口名{}类实现接口用implements一个类可实现多个接口2. 接口成员默认修饰◦ 变量public static final常量必须初始化◦ 抽象方法public abstractJava8新增default默认方法有方法体3. 接口特点多实现、多继承无普通变量、无静态方法不能new实例7. 抽象类 vs 接口1. 变量抽象类可普通变量/常量接口只能常量2. 方法抽象类有普通抽象接口只有抽象default方法3. 构造抽象类有构造接口无构造4. 继承类只能单继承抽象类类可多实现接口第五章 内部类、匿名类、Lambda、异常1. 内部类类中定义的类可访问外部类所有成员支持四种访问修饰符、final/abstract修饰2. 匿名内部类无类名的子类直接new父类/接口不能有静态成员常作为方法参数传递3. Lambda表达式函数式接口仅一个抽象方法的简化写法(参数列表) - {方法体}参数类型可省略4. 异常处理1. try-catch-finallytry放可能出错代码catch捕获对应异常finally无论是否异常都会执行System.exit()会跳过finally2. throw / throws区别◦ throw方法内部手动抛出单个异常对象◦ throws方法声明处标识该方法可能抛出多种异常类3. 自定义异常继承Exception通过throw抛出、throws声明第六章 常用工具类String1. 不可变字符串常量存常量池不能被继承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()处理点击事件◦ 鼠标事件MouseListener5. MVC架构Model数据模型、View视图界面、Controller交互控制器第八章 IO流1. File类文件/路径对象仅代表路径不操作读写2. 字节流处理所有文件• 输入FileInputStream、输出FileOutputStream读写read()/write()3. 字符流仅文本文件• 输入FileReader、输出FileWriter4. 缓冲流包装底层流提升效率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修饰方法保证安全