目录
一、 J2EE基础
i. 关键字的使用
一、 J2EE基础
i. 关键字的使用
Static
作用:
(1) 为特定的数据类型或对象分配单一的存储空间.
(2) 实现某个方法或属性与关联在一起.
使用:
(1) static成员变量
属于类的变量,只要static变量所属类被加载,变量就会被分配空间。
引用方式:类.静态变量;对象.静态变量.
(2) static成员方法
I.static方法是类的方法,不需要创建对象就可以被调用,而非static方法是对象的方法,只有对象被创建出来后才可以被使用.
II.static方法中不能使用this和super关键字,不能调用非static方法,只能访问所属类的静态成员变量和成员方法.因为当static方法被调用时,这个类的对象可能还没被创建,即使已经被创建了,也无法确定调用哪个对象的方法.同理,static方法也不能访问非static类型的变量.
static一个很重要的用途就是实现单例设计模式,单例模式的特点是该类只能有一个实例,为了实现这一功能,必须隐藏类的构造函数,即把构造函数声明为private,并提供一个创建对象的方法,由于构造对象被声明为private,外界无法直接创建这个类型的对象,只能通过该类提供的方法来获取类的对象,要达到这样的目的只能把创建对象的方法声明为static.
abstract
1、 含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。
2、 抽象类不能被实例化。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
3、 抽象方法只需声明,而不需实现某些功能。
4、 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
访问修饰符public,private,protected,以及不写(默认)时的区别
类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。Java中,外部类的修饰符只能是public或默认,类的成员(包括内部类)的修饰符可以是以上四种。
Final、finally、finalize的用法区别
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
Transient
为了数据安全;只能修饰变量。当对象被序列化时,被transient关键字修饰的变量不会被序列化到目标文件;当对象从序列化文件重构对象时(反序列化过程),被transient字段修饰的变量不会被恢复。
Volatile
volatile是变量修饰符,其修饰的变量具有可见性,可见性也就是说一旦某个线程修改了该被volatile修饰的变量,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,可以立即获取修改之后的值。在Java中为了加快程序的运行效率,对一些变量的操作通常是在该线程的寄存器或是CPU缓存上进行的,之后才会同步到主存中,而加了volatile修饰符的变量则是直接读写主存。
This/Super
Serializable序列化的作用
ii. JVM内存分配与GC
iii. 面向对象编程