java基础之高级应用

来源:互联网 发布:加密狗写入软件 编辑:程序博客网 时间:2024/05/21 15:41

在程序中涉及方法重写的地方使用@override Annotation(只作用于方法)注释可以很好的避免由于重写方法名字过长而造成的程序后期出现的难以调试的错误,特别是程序没有报任何的错误时,而程序的运行结果并没有和我们预期的结果一样时,可以考虑使用该方法。

 

通过Annotation可以简化事件编程,例如可以通过注释的方式为控件绑定事件监听器。

 

通常情况下,对象的引用若要访问类的方法或属性是不能为null的,否则会抛出空指针异常,但是引用值为null的对象却可以访问类的静态属性和方法,因为静态类成员是属于类的而不是属于某个对象

 

对于static关键字而言,有一条非常重要的原则:类成员(包括方法,初始化块,内部类和枚举类)不能访问实例成员(包括属性,方法,初始化块,内部类和枚举类)

 

匿名内部类适合用于创建那些仅需要一次使用的类

 

非静态内部类中不允许定义静态成员。原因可能是编译时当发现非静态内部类无static修饰时,编译器将不会继续检查该非静态内部类的类体,也就不可能完成定义在该非静态内部类中静态成员的初始化工作,因此会报告编译时错误。

 

 

即使在程序中使用局部变量,也应该尽可能的缩小局部变量的作用范围,局部变量的作用范围越小,它在内存里停留的时间就越短,程序运行性能就越好。因此,能用代码块局部变量的地方,就尽量不要使用方法局部变量

 

 

Static关键字不可以修饰外部类(因为外部类的上一级是包)但可以修饰内部类。

 

接口中可以定义内部类,但是只能是静态内部类,且必须使用publicstatic修饰符组合修饰该接口中的内部类。

 

如果需要在外部类以外的其他地方创建非静态内部类的实例或者子类,必须遵守的一条规则是:非静态内部类的构造器必须通过其外部类对象来调用。

 

如果匿名内部类需要访问外部类的局部变量,则必须使用final修饰符来修饰外部类的局部变量,否则系统将报错。

 

 静态方法无法被子类重写,但可以被子类继承,前提是方法为public类型

 

 

字符串优化:由于String对象时不可变对象,因此,在需要对字符串进行修改操作时(如字符串连接和替换),String对象总是会生成新的对象,所以,其性能相对较差。
 String常量的累加操作:对于静态字符串的连接操作,Java在编译时会进行彻底的优化,将多个连接操作的字符串在编译时合成一个单独的长字符串。
 String变量的累加操作:底层使用了StringBuilder的功能。
 StringBuffer和StringBuilder的扩容策略:当字符串缓冲区容量不足时,原有容量将会加倍,以新的容量来申请内存空间,建立新的char数组,然后将原数组中的内容复制到这个新的数组当中。因此,对于大对象的扩容会涉及大量的内存复制操作。所以,如果能够预先评估StringBuilder或StringBuffer的大小,将能够有效的节省这些操作,从而提高系统的性能。

 

native方法通常比一般方法快,因为它直接调用操作系统本地链接库的API。


native方法通常比一般方法快,因为它直接调用操作系统本地链接库的API。在Java中,由于实例方法需要维护一张类似虚函数表的结构,以实现多态。与静态方法相比,实例方法的调用需要更多的资源,因此,对于一些常用的工具类方法,没有对其进行重载的必要,那么将它们声明为static,便可以加速方法的调用。

 

原创粉丝点击