摘要: 1、虚拟机在首次加载Java类时,会对静态初始化块、静态成员变量、静态方法进行一次初始化2、只有在调用new方法时才会创建类的实例3、类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始化块部分,然后是父类的构造方法;再执行本类继承的子类的初始化块,最后是子类的构造方法4、类实例销毁时候,首先销毁子类部分,再销毁父类部分public class Parent{ public static int t = parentStaticMethod2(); { System.out.println("父类非静态初始化块"); } static { ... 阅读全文
posted @ 2012-10-31 23:28 刺客XIII 阅读(36116) 评论(2) 推荐(6) 编辑
摘要: 我们都知道比较两个对象是否相等,== 对于基础类型是比较值,对于封装类是比较对象的引用---即地址。Object 中equals()是比较对象的地址,String 中重写了equals()、hashcode(),equals比较的是String类的值,同理Integer、Double也都重写了equals,hashcode方法。Set中对象是不允许重复的,那么它是通过什么方法判断元素是否重复呢,equals,那么假如Set中有1000个元素,equals1万次,那效率也太低了,它是通过hashCode()方法,jdk中hashCode是native方法,与本地机器有关,与内存地址有关。如果对象 阅读全文
posted @ 2012-10-31 22:43 刺客XIII 阅读(1326) 评论(0) 推荐(0) 编辑
摘要: 重载overload 与重写override 都是Java 多态的表现,重载是一个类中多态的表现,重写是父类与子类之间多态的表现。 重载的方法名相同,(参数类型、参数个数、不同类型的参数顺序)三个有一个不同既形成方法重载,方法重载与方法的返回值无关,即有无返回值不是区分方法重载的条件。public class Test{ public static void main(String[] args) { Test2 t = new Test2(); t.get(0, 0, null); t.get(0, null, 0); }}class Test2{ public void get(int . 阅读全文
posted @ 2012-10-31 11:19 刺客XIII 阅读(242) 评论(0) 推荐(0) 编辑