Java SE 笔记

笔记
文章目录

本文最后更新于 <span id="expire-date"></span> 天前,文中部分描述可能已经过时。

  1. String 类型重新赋值会重新开辟空间创造新的应用,所以在参数绑定中无效

  2. 构造方法中可以调用其他构造方法,语法是 this(…)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
    this.name = name;
    this.age = age;
    }

    public Person(String name) {
    this(name, 18); // 调用另一个构造方法Person(String, int)
    }

    public Person() {
    this("Unnamed"); // 调用另一个构造方法Person(String)
    }
    }
  3. org.junit.Assert.assertArrayEquals(String[] a, String[] b);比较两个字符串数组是否相等

  4. "a".compareTo("b")比较两个字符串

  5. 子类**不会继承 **任何父类的构造方法。子类默认的构造方法是编译器自动生成的,不是继承的。

  6. 可以在构造方法中初始化final字段

1
2
3
4
5
6
class Person {
public final String name;
public Person(String name) {
this.name = name;
}
}
  1. interface 继承interfaceextends

  2. default方法的目的是,当我们需要给接口新增一个方法时,会涉及到修改全部子类。如果新增的是default方法,那么子类就不必全部修改,只需要在需要覆写的地方去覆写新增方法。

  3. interface的静态字段必须为final类型

  4. Java不可直接只用泛型数组

  5. string.substring(m, n) 左闭右开

  6. Arrays.sort(Object[])可以对任意数组进行排序,但待排序的元素必须实现Comparable<T>这个接口

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    // sort
    import java.util.Arrays;

    public class Main {
    public static void main(String[] args) {
    Person[] ps = new Person[] {
    new Person("Bob", 61),
    new Person("Alice", 88),
    new Person("Lily", 75),
    };
    Arrays.sort(ps);
    System.out.println(Arrays.toString(ps));
    }
    }
    class Person implements Comparable<Person> {
    String name;
    int score;
    Person(String name, int score) {
    this.name = name;
    this.score = score;
    }
    public int compareTo(Person other) {
    return this.name.compareTo(other.name);
    }
    public String toString() {
    return this.name + "," + this.score;
    }
    }

    1. 泛型的静态方法应该用另外的泛型类型

    2. printStackTrace()方法可以打印异常栈

    3. catch中抛出异常,不会影响finally的执行,JVM会先执行finally,然后抛出异常

    4. @interface语法来定义注解

      1
      2
      3
      4
      5
      public @interface Report{
      int type() default 0;
      String level() default "info";
      String value default "";
      }
    5. 拼接多个字符串,其中有分隔符,可以用StringJoiner()

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      public class Main{
      public static void main(String[] args){
      String[] names = {"Bob", "Alice", "Grace"};
      StringJoiner res = new StringJoiner(",");
      for(String name : names){
      res.add(name);
      }
      System.out.println(res.toString());
      }
      }
    6. intInteger之间可以自动转换(自动装箱,自动拆箱)

      1
      2
      Integer n = 100;
      int x = n;

本文作者:Mosquito

本文链接: http://example.com/2022/02/10/Java%20SE%20%E9%99%B7%E9%98%B1/

Mosquito 天使之吻手打

文章默认使用 CC BY-NC-SA 4.0 协议进行许可,使用时请注意遵守协议。