# learn_java_atguigu **Repository Path**: patrick_star_y/learn_java_atguigu ## Basic Information - **Project Name**: learn_java_atguigu - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-04 - **Last Updated**: 2024-01-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java Learning ## Chapter09 ### section05 创建内部类的实例的方法: ``` java Outer.Inner1 inner1 = out.new Inner1() //需要依赖实例的创建 Outer.Inner2 inner2 = new Outer.Inner2() //不需要依赖实例的创建(该内部类是static(静态)的) ``` ### section06 使用class定义枚举类型,要注意两个关键问题 * 不能让某个类的对象随意被创建,要将构造器私有化 * 需要提供已经创建好的一组对象供别人使用,因此需要把创建好的对象用`public static final`表示。`public static final`表示这些常量对象可以在任意位置直接通过枚举类名直接访问。 #### 枚举enum类型的使用 枚举类型本质上也是一个类,可以有自己的方法,可以重写父类的方法。 ```java public enum Season implements Display { SPRING ("spring", "鸟语花香") { public void show() { // 重写方法 super.show(); //调用父类的方法 System.out.println("春天鸟语花香,万物复苏!"); } }, WINTER; private String title; private String description; Season() { } Season(String title, String description) { this.title = title; this.description = description; } @Override public void show() { System.out.println(title + ":" + description); } } ``` ### section07 From JDK5.0 java have support MetaData a.k.a. Annotation 注解就是代码中的特殊标记,这些特殊标记在编译、类加载、运行时被读取,并执行相应的处理。通过使用注解,**程序员可以在不改变原有逻辑的情况下**在源文件中嵌入一些补充信息。 #### 注解包含的部分 1. 注解的声明 2. 注解的使用 > @注解名 > > @注解名(name = value) 3. 注解信息的读取和处理 #### 元注解 给注解类型做解释说明的注解 1. Retention 2. Target 3. Documented 4. Inherited #### 自定义注解 在Java中,注解被看作一种特殊的接口,使用@Interface关键字进行声明 注解的抽象方法可以有基本类型的返回值,但是需要用反射代码读出后才有实际用途。 #### 注解的新特性 ElementType中新增两个常量对象(TYPE_USE TYPE_PARAMETER)用来描述注解的新场合 ```java new@Interface MyObject(); myString = ((@NonNull) String) str; class UnmodifiableList implement@Readonly List<@Readonly T> { ... } ``` ## Chapter10 ### StringBuilder and StringBuffer * StringBuilder推出得更晚 * 该类被设计为StringBuffer的简易替换 * 应当优先使用Builder * Builder线程不安全 ## Chapter12 ### Set集合 Set接口是Collection的自接口,遍历方式和Collection集合一样,使用foreach和Iterator进行遍历。Set集合不允许包含相同的元素。 #### HashSet和LinkedHashSet HashSet是Set接口的典型实现类,大多数时候使用Set集合**都会使用这个实现类** HashSet和LinkedHashSet按Hash算法存储集合中的元素。存储到HashSet和LinkedHashSet的元素要注意是否可以重写hashCode和equals方法。 ### TreeSet SortedSet接口是Set接口的一个子接口,支持排序类Set集合,TreeSet是SortedSet接口的实现类,即TreeSet可以确保集合元素处于排序状态。 对象的排序要么是对象支持自然排序,即实现java.lang.Comparable接口,要么在创建set集合对象时提供定制排序接口java.util.Comparator的实现类对象。 ### Map #### 遍历 ![](https://pic.imgdb.cn/item/65ac809b871b83018aae7513.png) #### 实现类 ![](https://pic.imgdb.cn/item/65ac851f871b83018abd209c.png) ##### LinkedHashMap 有序,维护了一个双向列表,顺序就是插入顺序。 ##### TreeMap 有序,通过自然排序或者CompareTo接口的实现类排序,顺序是大小顺序。 ## chapter14 ### IO流分类 * InputStream 字节输入流 * OutputStream 字节输出流 * Reader 字符输入流 * Writer 字符输出流 ![](https://pic.imgdb.cn/item/65ad381a871b83018a8c4f2e.png) ### 常用IO流 ![](https://pic.imgdb.cn/item/65ad34ab871b83018a7c771c.png) ### 解码和编码 解码是指把二进制的字节序列按照制定字符集解码为可以被正确识别的字符内容。 编码是指把字符内容按照制定字符集编码为二进制的字符序列。