1、形式参数问题
- 基本类型作为形式参数:形式参数的改变不影响实际参数
- 引用类型作为形式参数:形式参数的改变直接影响实际参数
- 具体分析参考博博客
2、构造方法注意事项
- 如果你不提供构造方法,系统会给出默认构造方法
- 如果你提供了构造方法,系统将不再提供
- 构造方法也是可以重载的
3、static关键字注意事项
- 在静态方法中是没有
this
关键字的 - 静态方法只能访问静态的成员变量和静态的成员方法
4、子类的实例化过程
子类中所有的构造函数默认都会访问父类中空参数的构造函数。因为每一个构造函数的第一行都有一条默认的语句super()
;因为子类继承了父类,获取到了父类中内容(属性),所以在使用父类内容之前,要先看父类是如何对自己的内容进行初始化的。
注意事项:
- 当父类中没有空参数的构造函数时,子类的构造函数必须通过this或者
super
语句指定要访问的构造函数。 - 子类构造函数中如果使用
this
调用了本类构造函数,那么默认的super()
就没有了,因为super
和this
都只能定义在第一行,所以只能有一个。但是可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。 super
语句必须要定义在子类构造函数的第一行!因为父类的初始化动作要先完成。
5、子类初始化和属性不能重写
初始化顺序: 初始化父类成员变量 初始化父类构造函数 初始化子类成员变量 初始化子类构造函数。
JAVA本身并不提供子类“覆盖”父类成员变量的方法,即使子类声明了与父类完全一样的成员变量,也不会覆盖掉父类的成员变量,具体阅读文章。
6、instanceof 使用
instanceof
:用于判断对象的具体类型,只能用于引用数据类型判断,通常在向下转型前用于健壮性的判断,参考运算符。
7、集合指定初始容量
List<~> list = new ArrayList<~>(100);
对于已知的情景,为集合指定初始容量,因为ArrayList的扩容机制是比较消耗资源的,每次到达临界点都会扩容1.5倍。
8、Object 数组转成 String 数组
主要使用Arrays.copyOf,System.arraycopy,Arrays.asList
方法进行转换,具体分析参考转换数组和Arrays工具类。
9、网络编程
计算机网络,网络模型详细分析阅读博客。