java随笔

System.out.println(System.getProperty("user.dir"));//项目的根目录

Class是把class文件所在的目录做为根目录

ClassLoader是把加载所有classpath的目录为根目录

如果在子类重写了父类方法,就意味着子类里定义的方法彻底覆盖了父类里的同名方法,系统将不可能把父类里的方法转移到子类中。对于实例变量则不存在这样的现象,即使子类中定义了于父类完全同名的实例变量,这个实例变量依然不可能覆盖父类中定义的实例变量。

因为继承成员变量和继承方法之间存在这样的差异,所以对于一个引用类型的变量而言,当通过该变量访问它所引用的对象的实例变量时,该实例变量的值取决于声明该变量的类型;当通过该变量来调用它所引用的对象的方法时,该方法行为取决于它所实际引用的对象的类型。

在处理文件或目录名时,应该总是使用File对象而不是字符串。这样做的好处很多。例如:File类的equals方法知道某些文件系统不是大小写敏感,或者在目录名尾部的(是无关紧要的)。

java初始化顺序

1. 父类静态成员(初始化之前是有默认值的)和静态初始化块 ,按在代码中出现的顺序依次执行

2. 子类静态成员(初始化之前是有默认值的)和静态初始化块 ,按在代码中出现的顺序依次执行

3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行

4. 父类构造方法

5. 子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行

6. 子类构造方法

类的生命周期

 当一个类被加载、连接、初始化后,它的生命周期就开始了,当代表该类的Class对象不再被引用、即已经不可触及的时候,Class对象的生命周期结束。那么该类的方法区内的数据也会被卸载,从而结束该类的生命周期。一个类的生命周期取决于它Class对象的生命周期。由Java虚拟机自带的默认加载器(根加载器、扩展加载器、系统加载器)所加载的类在JVM生命周期中始终不被卸载。所以这些类的Class对象(我称其为实例的模板对象)始终能被触及!而由用户自定义的类加载器所加载的类会被卸载掉!

 

 

 

 

 

 

 

 

你可能感兴趣的:(java)