0%

Core Java Volume I(10th Edition)

JAVA核心技术卷一 (第十版)

下面是需要注意的:

  • 只有方法名和参数类型叫做方法的签名, 不同的返回类型值不能作为方法的签名。(4.6.1)
  • 这是域与局部变量的主要不同点。 必须明确地初始化方法中的局部变量。 但是,如果没有初始化类中的域, 将会被自动初始化为默认值(0、 false 或 null )。(4.6.2)
  • 初始化块或静态的初始化块在创建对象的时候执行里面的代码。(4.6.7)
  • 从编译器的角度来看, 嵌套的包之间没有任何关系。(4.7)
    例如:java.util 包与java.util.jar 包毫无关系。每一个都拥有独立的类集合。
    import java.util.* 语句不能导入java.util.jar包中的类.
  • 标记为 public 的部分可以被任意的类使用;
    标记为 private 的部分只能被定义它们的类使用。
    如果没有指定 public 或 private, 这 个 部分(类、方法或变量)可以被同一个包中的所有方法访问。
  • 使用super 调用构造器的语句必须是子类构造器的第一条语句。(5.1.3)
  • 在覆盖一个方法的时候,子类方法不能低于超类方法的可见性。(5.1.6)
  • 如果将一个类声明为 final, 只有其中的方法自动地成为 final, 而不包括域。(5.1.7)
  • 如果方法很简短、 被频繁调用且没有真()正地被覆盖, 那么即时编译器就会将这个方法进行内联处理。(5.1.7)
  • 将一个子类的引用赋给一个超类变量, 编译器是允许的。但将一个超类的引用赋给一个子类变量, 必须进行类型转换 。(5.1.8)
  • 对本包和所有子类可见 —- protected。(5.1.10)
  • instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
  • Object类中的equals方法将判断两个对象是否具有相同的引用。但是对于大多数类来说并没有意义。(5.2.1)
  • 数组继承了 object 类的 toString 方法,数组类型将按照旧的格式打印,生成字符串“ [I@la46e30” ,修正的方式是调用静态方法 Arrays.toString
  • ArrayList 如果已经清楚或能够估计出数组可能存储的元素数量, 就可以在填充数组之前调ensureCapacity方法:
  • 对象包装器类是不可变的,对象包装器类还是 final ,装箱和拆箱是编译器认可的。
  • 允许将一个数组传递给可变参数方法的最后一个参数。main方法
  • javap是 Java class文件分解器,可以反编译(即对javac编译的文件进行反编译),也可以查看java编译器生成的字节码。用于分解class文件。 javap -p <类文件>
  • Class类中的newlnstance( )调用默认的构造器,如果这个类没有默认的构造器, 就会抛出一个异常,如果想要提供参数,可以是使用Constructor中名字相同的的方法。
  • 一个 Class 对象实际上表示的是一个类型, 而这个类型未必一定是一种类。
  • lambda 表达式中捕获的变量必须实际上是最终变量
  • lambda 表达式的体与嵌套块有相同的作用域。
  • 强烈建议解耦合 try/catch 和 try/finally 语句块
  • Java 语 言 规 范 将 派 生 于 Error 类 或 RuntimeException 类的所有异常称为非受查( unchecked ) 异常, 所有其他的异常称为受查(checked) 异常。
  • for each 循环可以与任何实现了 Iterable 接口的对象一起工作, 但是Collection 接口扩展了 Iterable 接口。
  • 四种循环

    1
    2
    3
    4
    5
    6
    7
    1. arrayList.iterator().forEachRemaining(System.out::println);
    2. arrayList.forEach(System.out::println);
    3. for (String str : arrayList)
    System.out.println(str);
    4. Iterator it = arrayList.iterator();
    while(it.hasNext())
    System.out.println(it.next());
  • 标记接口 RandomAccess 用它来测试一个特定的集合是否支持高效的随机访问

  • 在ArrayList的无参构造函数上的注释 Constructs an empty list with an initial capacity of ten. 初始化的时候并没有真正的创建10个空间,这是惰性初始模式对象,在这篇.和这篇文章中可以一探究竟。
  • 内部类的对象有一个隐式引用, 它引用了实例化该内部对象的外围类对象。通过这个指针, 可以访问外围类对象的全部状态,但是static内部类并没有。
  • 局部类还有一个优点。它们不仅能够访问包含它们的外部类, 还可以访问局部变量。不过, 那些局部变量必须事实上为 final
  • 双括号初始化
  • 一个方法不能修改一个基本数据类型的参数
  • 一个方法可以改变一个对象参数的状态
  • 一个方法不能让对象参数引用一个新的对象
  • add 方法只依赖于迭代器的位置, 而 remove 方法依赖于迭代器的状态。
  • Vector 类的所有方法都是同步的,synchronized
  • 如果 a_equals(b) 为 true, a 与 b 必须具有相同的散列码。

作者: NeverTh
出处:https://www.cnblogs.com/neverth/p/11760936.html