您的位置:首页 > 编程语言 > Java开发

Java语言基础学习笔记(四)

2017-09-16 16:09 399 查看
1. 在子类中,关键字super是用来调用父类方法的。不同于this引用,super不是对象的引用(根本就不存在单独的父类对象),而是绕过动态查找方法并调用特定方法的指令。

2. 可以给计划要覆写的方法加上@Override注解,编译器会检查,避免因为不正确的参数列表或者方法名导致异常。

3. 覆写方法时,可以将返回类型改成子类型(协变返回类型)。

4. 覆写一个方法时,子类方法的可见性至少要和父类的方法一样。

5. 子类构造函数中使用super()调用父类构造函数。

6. 声明为final的方法,子类不可以覆写。声明为final的类,不可以被继承。

7. protected赋予包级别访问,他只是保护来自其他包的访问。

8. 方法引用表达式使用super代替对象引用同样有效,super::方法 表示使用this作为接收者调用父类方法。

9. 无论何时,当一个对象和字符串连接时,Java编译器自动调用该对象的toString方法。

10. 数组从Object继承了toString,输出的字符串包含数组的类型,只是形式比较老旧,可以使用Array.toString Array.deppToString(多维数组)代替

11. equals方法判断两个对象引用是否相同

12. 对于基本类型,使用==操作符比较。对于double类型,如果担心无穷或者NaN,使用Double.equals()

13. hashCode方法和equals方法必须兼容。如果x.equals(y)成立,那么x.hashCode()==y.hashCode()也必须成立。

14. Object.Clone()做的是浅拷贝。

15. 标签接口是一个没有任何方法的接口。比如Object.Clone()会检测Croneable接口是否实现。

16. 每个枚举类型都有固定的实例集,永远不需要使用equals方法,直接使用==操作符比较。

17. 枚举类型中,与toStirng方法相反的是valueOf

18. 每一个枚举类型都有一个静态方法values,返回一个按照其声明次序牌理的包含所有枚举实例的数组。

19. ordinal方法实例在枚举声明中的位置,从0开始。

20. 可以给枚举类型添加构造函数,方法和域。枚举类型的构造函数总是私有的。

21. 可以给单个枚举实例添加方法,但只能覆盖枚举类中定义的方法。

22. 枚举类可以拥有静态成员,但要小心构造的次序。由于枚举常量在静态成员之前构建,所以不能在构造函数里引用任何静态成员。解决方案是在一个静态初始化块中进行初始化工作。

23. 枚举类型可以嵌套在一个类中,这样嵌套的枚举类属于隐式的静态嵌套类,他们的方法不能引用外部类的实例变量。

24. 使用 对象.getClass     Class.forName() 可以得到类的Class实例。如果提前知道嘞的名称,可以使用 包名.类名.class来直接得到。

25. Java虚拟机为每种类型管理一个唯一的Class实例,因此,可以使用==操作符来比较类实例。

26. Class类的一个有用服务就是定位应用程序可能需要的资源。  类名.class.getResourceAsString()方法可以获取资源。支持相对路径和绝对路径,路径起点为包根目录。

27. 当执
4000
行Java程序时,会涉及3个类加载器。

    (a)bootstrap,加载Java类库,是java虚拟机的一部分,不可获得。

    (b)扩展类加载器,从jre/lib/ext目录加载标准库的扩展部分

    (c)系统类加载器,加载应用程序类,它定位classpath目录和JAR文件的类

28. 通过创建自己的URLClassLoader实例,你可以从classpath以外的目录或者JAR文件中加载类

29. Class.forName(className, true, loader) 调用中的第二个参数确保类的静态初始化块发生在加载之后。不要使用ClassLoader.loadClass()方法,它不会执行静态初始化代码块。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: