------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
静态代码块。格式:static{}
特点:随着类的加载而执行,只执行一次,并优先于主函数。用于给类进行初始化的。
代码块:在创建对象的时候执行,每次创建对象的时候都会执行一次。
静态方法中不可以定义this,super关键字。因为静态优先于对象存在。所以静态方法中不可以出现this。
static特点:
1,随着类的加载而加载。
也就说:静态会随着类的消失而消失。说明它的生命周期最长。
2,优先于的对象存在
明确一点:静态是先存在。对象是后存在的。
3,被所有对象所共享
4,可以直接被类名所调用。
什么时候定义静态变量(类变量)呢?
当对象中出现共享数据时,该数据被静态所修饰。
对象中的特有数据要定义成非静态存在于堆内存中。
什么时候定义静态函数呢?
当功能内部没有访问到非静态数据(对象的特有数据),
那么该功能可以定义成静态的。
abstract 关键字,和哪些关键字不能共存。
final:final修饰的类。而抽象类一定是一个父类。
private: 私有的抽象方法,不能复写。
static:静态的抽象方法,直接可以类名调用。可是抽象方法运行没意义。
覆盖:
1,子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。
2,静态只能覆盖静态。
重载:只看同名函数的参数列表。
重写:子父类方法要一模一样。
注意:super语句一定定义在子类构造函数的第一行。子类每一个构造函数内的第一行都有一句隐式super()来访问父类中空参数的构造函数,或有一个this()来访问本类构造函数;
内部类定义在类中的局部位置上是,只能访问该局部被final修饰的局部变量。
接口中的成员都有固定修饰符。
常量:public static final
方法:public abstract 子类必须覆盖!
class单继承类多实现接口。Interface可以多继承接口。
获取时间:System.currentTimeMillis();
模版方法设计模式。
在定义功能时,功能的一部分是确定的,但是有一部分是不确定,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去。由该类的子类去完成。
数据库的操作c create ;r read ; u update ;d delete
instanceof : 用于判断对象的类型。 对象 intanceof 类型(类类型 接口类型)
多态中非静态成员函数的特点:编译看左边,运行看右边。
其余都看左。
子类至少有一个构造函数访问父类 !
如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面
throws和throw的区别
throws使用在函数上。后面跟的异常类。可以跟多个。用逗号隔开。
throw使用在函数内。后跟的是异常对象。
RuntimeException以及其子类编译时不被检测
"lisi".equals(name)等于(name!=null && name.equals("lisi"))这就是为什么lisi在其前面
内部用外部:外部类名.this
外部用内部:必须建立内部类对象。 Outer.Inner in = new Outer().new Inner();
注意:当内部类中定义了静态成员,该内部类必须是static的。
当外部类中的静态方法访问内部类时,内部类也必须是static的。
当内部类在成员位置上,把它当成员看待。
内部类定义在方法内,局部时,
1,不可以被成员修饰符修饰
2,可以直接访问外部类中的成员,因为还持有外部类中的引用。
但是不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量。
如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。
如果子类方法发生了异常。就必须要进行try处理。绝对不能抛。
finally只有一种情况不会执行。当执行到System.exit(0);fianlly不会执行。
静态的同步方法,使用的锁是该方法所在类的字节码文件对象。 类名.class