个人学习日记2017.3.8
重写与重载
重写:主要指子类可以继承父类当中的属性和方法,当子类从父类继承的方法不能够满足需求时,可以在子类对该方法进行重写.
引申一个问题:Constructor能否被重写?
答案是不能够的.构造器无法被重写,可以被重载.子类并不能继承父类的构造方法,更不能覆盖父类的构造方法.子类想要使用父类的构造方法,必须在子类的构造方法中使用super关键字,并且放在子类构造器的第一行
再引申一个被final关键字修饰类不可被继承,方法不可被重写,被修饰的变量为常量(利用反射可以修改)
重载:所谓重载指一个类中可以有多个方法名相同的方法,返回值类型可以相同可以不同,但是参数列表必须不一样,访问权限可以相同可以不同
自动装箱与拆箱
public static Integer valueOf(int i) {
if(i >= -128 && i <= IntegerCache.high) // 没有设置的话,IngegerCache.high 默认是127
return IntegerCache.cache[i + 128];
else
return new Integer(i);
}
注意:Integer integer100=null;
int int100=integer100;
这两行代码是完全合法的,完全能够通过编译的,但是在运行时,就会抛出空指针异常。其中,integer100为Integer类型的对象,
它当然可以指向null。但在第二行时,就会对integer100进行拆箱,也就是对一个null对象执行intValue()方法,当然会抛出空指针异常。
所以,有拆箱操作时一定要特别注意封装类对象是否为null。
学的有点杂 感觉没必要把所有的细节东西都写下来.可以写一下重要的比较关键性的东西.比如今天学到的感觉很不错的东西,印象很深刻的 就比如说这一段Integer源码中i的取值范围小于127直接返还原先设置的对象.大于=128则会重新创建对象.不懂对象肯定不会equals(除非重写方法)
再比如String类中已经默认重写了equals方法还有就是常量池的概念,第一次使用的常量会在常量池.而你new的String对象则会在堆当中
今天先写到这里了,明天好好整理一下思绪,应该如何写好一篇自己的学习博客
转载请注明原文地址: https://ju.6miu.com/read-7885.html