1.如果子类的构造方法中没有显示地调用父类的构造方法,那么Java编译器会自动在子类的构造方法中插入一条默认的super()
语句,来调用父类的无参构造方法。因此,如果父类没有提供无参构造方法,而子类的构造方法中又没有显式地调用父类的其他构造方法,那么编译就会失败。 如果子类的构造方法中显式地调用了父类的其他构造方法,那么编译器就不会再自动插入super()
语句了。此时,调用父类的构造方法必须放在子类构造方法的第一行,并且必须使用super()
语句来调用。
2.java中在某个方法中用throw抛出一个异常后,必须要在该方法声明时用throws抛出异常类型吗,为什么
在Java中,如果一个方法中使用了throw语句抛出异常,那么该方法必须要声明可能抛出的异常类型,否则编译器会提示错误。这是因为Java的异常处理机制要求,在可能会抛出异常的方法中必须对异常进行处理,否则需要将异常抛出给调用者来处理。 在Java中,可以使用try-catch语句来捕获异常并进行处理,也可以使用throws关键字在方法声明中声明可能抛出的异常类型,让调用者来处理异常。如果一个方法中使用了throw语句抛出异常,但没有在方法声明中使用throws关键字声明可能抛出的异常类型,那么编译器会提示错误,因为这样的方法可能会导致运行时未捕获的异常。 因此,在Java中,在一个方法中使用throw抛出异常后,必须要在该方法声明时使用throws抛出异常类型,以便调用者能够知道该方法可能抛出的异常类型,并进行相应的处理。
throw不是在处理异常,处理异常只有throws和try catch。
3.public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)
细节:1.如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则会报错
2.如果数据源和目的地数组都是引用,(把arr1中对象的地址值赋值给arr2中),子类类型可以赋值给父类类型。