二、JavaSE 进阶
day01
| # day01 |
| 1. 继承 |
| 1). 概述 |
| 继承是面向对象三大特征之一。可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。 |
| 格式:public class 子类名 extends 父类名 {} |
| 2). 好处和弊端 |
| - 好处 |
| 提高代码的复用性 |
| 提高代码的维护性 |
| 3). 变量的访问特点 |
| 4). 构造方法的访问特点 |
| 5). 成员方法的访问特点 |
| 6). 注意事项 |
| 2. super关键字(+内存图) |
| 3. 方法重写(+注意事项) |
| 4. 关键字 |
| 1). package |
| 2). import |
| 3). final(+修饰局部变量) |
| 4). static(+访问特点) |
| 5. 权限修饰符 |
| 1). public |
| 2). protected |
| 3). 默认 |
| 4). private |
| |
day02
| # day02 |
| 1. 多态 |
| 1). 成员访问特点 |
| 2). 好处和弊端 |
| 3). 转型 |
| 4). 多态转型的内存图解 |
| 2. 抽象类 |
| 1). 特点 |
| 2). 成员特点 |
| 3. 接口 |
| 1). 特点 |
| 2). 成员特点 |
| 4. 类和接口的关系 |
| 5. 抽象类和接口的区别 |
| |
day03 内部类
| # day03 |
| 1. 类名作为形参和返回值 |
| 2. 抽象类名作为形参和返回值 |
| 3. 接口名作为形参和返回值 |
| 4. 内部类 |
| 1). 成员内部类 |
| 2). 局部内部类 |
| 3). 匿名内部类(+在开发中的使用) |
| 5. Math |
| 6. System |
| 7. Object类中 |
| 1). toString()方法 |
| 2). equals()方法 |
| 8. 冒泡排序原理(+代码实现) |
| 9. Arrays |
| |
day04 基本类型包装类
| # day04 |
| 1. 基本类型包装类 |
| 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据 |
| 2. Integer |
| 1). 概述:包装了一个对象中的原始类型int的值 |
| 2). 使用 |
| Integer i1 = Integer.valueOf(100); |
| Integer i2 = Integer.valueOf("100"); |
| // 过时 |
| Integer i3 = new Integer(100); |
| Integer i4 = new Integer("100"); |
| 3. int和String的相互转换 |
| 1). int -> String |
| int number = 100; |
| // 方式1 |
| String s1 = "" + number; |
| // 方式2 |
| String s2 = String.valueOf(number); |
| 2). String -> int |
| String s = "100"; |
| // 方式1 |
| Integer i = Integer.valueOf(s); |
| // 方式2 |
| int j = Integer.parseInt(s); |
| 4. 案例(字符串中数据排序) |
| 思路(模板): |
| 1). 定义一个字符串 |
| 2). 把字符串中的数组存储在int类型的数组中 |
| String[] strArray = s.split("分隔符"); |
| int[] arr = new int[strArray.length]; |
| for (int i = 0; i < arr.length; i++) { |
| arr[i] = Integer.parseInt(strArray[i]); |
| } |
| 3). 对int数组进行排序 |
| Arrays.sort(arr); |
| 4). 把排序后的int数组中的元素进行拼接得到一个字符串 |
| 这里拼接采用StringBuilder来实现 |
| StringBuilder sb = new StringBuilder(); |
| for (int i = 0; i < arr.length; i++) { |
| sb.append(arr[i]); |
| } else { |
| sb.append(arr[i]).append("分隔符"); |
| } |
| String result = sb.toString(); |
| 5). 输出结果 |
| System.out.println("result:" + result); |
| 5. 自动装箱和拆箱 |
| 1). 装箱:把基本数据类型转换为对应的包装类类型 |
| // 装箱 |
| Integer i1 = Integer.valueOf(100); |
| // 自动装箱 |
| Integer i2 = 100; |
| 2). 拆箱:把包装类类型转换为对应的基本数据类型 |
| // 拆箱 |
| i3 = i2.intValue() + 200; |
| // 自动拆箱 |
| i2 += 200; |
| 3). i + 200 自动拆箱 i = i + 200 自动装箱 |
| 4). 注意:只要是对象,在使用前就必须进行不为null的判断 |
| 6. Date(+常用方法) |
| 1). 概念 |
| Date代表了特定的时间,精确到毫秒 |
| 2). 构造方法 |
| - public Date() |
| Date d1 = new Date(); |
| - public Date(long date) |
| // 1小时 |
| long date = 1000 * 60 * 60; |
| // d2比标准基准时间多1一小时,外加东八区的原因,终为9点 |
| Date d2 = new Date(date); |
| 3). 常用方法 |
| - public long getTime() |
| // 获取1970年1月1日 00:00:00 到现在的毫秒值 |
| Date d3 = new Date(); |
| - public void setTime(long time) |
| // 设置时间,给的是毫秒值 |
| d1.setTime(d2); // 结果同d2 |
| long d4 = System.currentTimeMillis(); |
| d1.setTime(d4); // 当前时间,年时分秒 |
| 7. SimpleDateFormat |
| 1). 用于以区域设置敏感的方式格式化和解析日期。 |
| 2). 重点:日期格式化和解析 |
| 3). 对应关系 |
| y 年 |
| M 月 |
| d 日 |
| H 时 |
| m 分 |
| s 秒 |
| 4). 构造方法 |
| - public SimpleDateFormat() |
| // 使用默认模式和日期格式 |
| Date d = new Date(); |
| SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); |
| String s1 = sdf.format(d); |
| - public SimpleDateFormat(String pattern) |
| // 使用给定的模式和默认的日期格式 |
| String s2 = "2023年04月09日 15:39:23"; |
| SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); |
| Date d1 = sdf2.parse(ss); |
| 5). 格式化和解析日期 |
| - 格式化(从Date到String) |
| public final String format(Date date):将日期格式化成日期/时间字符串 |
| - 解析(从String到Date) |
| public Date parse(String source):从给定字符串的开始解析文本以生成日期 |
| 8. 案例(日期工具类) |
| |
| 9. Calendar(+常用方法) |
| 10. 异常 |
| 1). 概述 |
| 程序出现了不正常的情况 |
| 2). 类别(父:Throwable) |
| Erroe:严重问题,不需要处理 |
| Exception:成为异常类,它表示程序本身可以处理的问题 |
| RuntimeException:在编译期是不检查的,出现问题后,需要我们回来修改代码 |
| 非RuntimeException |
| 11. JVM的默认处理方案 |
| 12. 异常处理 |
| 1).try...catch |
| 2).编译时异常和运行时异常的区别 |
| 3).自定义异常 |
| 13. Throwable的成员方法 |
| |
day05 集合
| # day05 |
| 1. 集合体系结构 |
| 2. Collection集合 |
| 1). 概述和使用 |
| // 概述 |
| 2). 常用方法 |
| 3). 遍历 |
| 4). 集合使用步骤 |
| 5).案例(Collection集合存储学生对象并遍历) |
| 3. List集合 |
| 1). List集合概述和特点 |
| 2). List集合的特有方法 |
| 3). 案例一(List集合存储学生对象并遍历) |
| 4). 案例二(List集合存储学生对象三种方式遍历) |
| 4. 并发修改异常 |
| 5. 列表迭代器 |
| 6. 增强for循环 |
| 7. 数据结构 |
| 1). 栈和队列 |
| 2). 数组和链表 |
| 8. 案例(ArrayList集合存储学生对象三种方式遍历) |
| 9. LinkedList集合的特有功能 |
| |
day06
| # day06 |
| 1. Set集合概述和特点 |
| 2. 哈希值 |
| 3. HashSet集合 |
| 1). 概述和特点 |
| 2). 保证元素唯一性源码分析 |
| 4. 数据结构 |
| 哈希表 |
| 5. HashSet集合存储学生对象并遍历 |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通