首页 > 编程语言 > 详细

Java 性能优化:面向对象及基础类型使用优化

时间:2020-01-20 00:42:45      阅读:114      评论:0      收藏:0      [点我收藏+]

性能优化是个大筐,很多东西都能往里面装。虽说性能优化的具体方面比较多,但万丈高楼从地起,这里还是从Java最基本的一些入门知识相关的使用优化进行一些做些总结和建议。如何连最基本的API使用都不会,或不会选择更高效的使用方式,那么Java的性能优化就是空谈,就更别提JVM优化 、Web优化这些更高级的性能优化知识。、

1 采用Clone()方式创建对象

Java中所有类都默认继承自java.lang.Object类,而Object类里面有一个clone()方法,JDK API的说明文档里面解释了这个方法会返回Object对象的一个拷贝。我们需要说明两点:一是拷贝对象返回的是一个新对象,而不是一个对象的引用地址;二是拷贝对象与new关键字产生的对象不同,clone出来的副本对象包含了原对象的所有信息(注意深拷贝和浅拷贝),而new出来的对象只有构造方法中的初始化信息。

当我们使用new关键字创建类的一个实例时,构造函数中的所有构造函数都会被自动调用。而如果一个对象实现了Cloneable接口,通过其方法调用其clone()方 法,可以创建一个与原对象独立的副本对象(深拷贝时),这是通过cpp控制虚拟机复制一个新的OOP对象,它不会去调用构造方法。

2 避免对boolean判断

Java里的boolean数据类型被定义为存储8位(1个字节)的数值形式,但只能是true或是false。

有些时候我们出于写代码的习惯,经常容易导致习惯性思维,这里指的习惯性思维是想要对生成的数据进行判别,这样感觉可以在该变量进入业务逻辑之前有一层检查、判定。对于大多数的数据类型来说,这是正确的做法,但是对于boolean变量,我们应该尽量避免不必要的等于判定。如果尝试去掉boolean与true的比较判断代码,大体上来说,我们会有两个好处。

■ 代码执行得更快(生成的字节码少了5个字节);

■ 代码整体显得更加干净

3 多用三元运算符

对去简单的逻辑,尽量使用三元运算符去替代"if (cond);else“

public int abs1(int a) {
        return a >= 0 ? a : -a;
    }
    public int abs2(int a){
        if(a>=0)
            return a;
        else
            return -a;
    }

这样的顺序判断结构,主要原因还是因为条件操作符更加简捷,代码看起来会少一点。

4 静态方法替代实例方法

在Java中,使用static关键字描述的方法是静态方法。与静态方法相比,实例方法的调用需要消耗更多的系统资源,这是因为实例方法需要维护一张类似C++虚拟函数导向表(java中的虚方法或接口表)的结构,这样可以方便地实现对多态的支持。对于一些常用的工具类方法,它们本身不保存状态,方法不会使用成员变量,它们是无状态的类,我们没有必要对其进行继承重写来支持多态,那么我们可以尝试将它们声明为static,即静态方法,这样有利于加速方法的调用。

在Java中,final关键字可以被用来修饰类、方法和变量(包括成员变量和局部变 量)。我们在使用匿名内部类的时候可能会经常用到final关键字,例如Java中的String类就是一个final类。


如代码清单3-9所示,由于final关键字会告诉编译器,这个方法不会被重载,所以我们可以让访问实例内变量的getter/setter方法变成“final”

Java 性能优化:面向对象及基础类型使用优化

原文:https://www.cnblogs.com/gocode/p/12216049.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!