java小知识点3

调用对象方法的执行过程:

  • 编译器查看调用对象的类型和方法名
  • 编译器查看调用方法时提供的参数类型
  • 如果是静态绑定方法(private、static、final),编译器可以直接确定下来
  • 虚拟机调用x实际对象最适合那个类的方法

将方法或者类声明为final的意义:确保他们不会在子类中改变语义

在java中,只有基本类型不是对象,所有的数组都是Object类的子类。

只要对象与字符串通过+连接,就会自动调用对象的toString方法。

java可以在运行时确定数组大小:

自动装箱、自动拆箱-》编译器认可

JAVA反射:

获取类名:

1 Date date = new Date();
2 Class class1 = date.getClass();
3 System.out.println(class1.getName());

加载类:

Class class2 = Class.forName("java.util.Date");

创建实例(此处的newInstance方法只能调用无参构造方法):

1 Class class2 = Class.forName("java.util.Date");
2 System.out.println(class2 == Date.class);
3 Date d = (Date) class2.newInstance();

已检查异常和未检查异常:

  • 已检查异常编译器会进行检查,throws等等
  • 未检查异常编译器不检查

 继承设计的技巧:

  • 将公共操作和域放在超类
  • 不要使用protected
  • 使用继承实现is a关系
  • 除非所有继承的方法都有意义,否则不要使用继承
  • 在覆盖方法时,不要改变预期的行为
  • 使用多态而非类型信息
  • 不要过多的使用反射
原文地址:https://www.cnblogs.com/zcy-backend/p/6853034.html