JAVA类和对象的使用技巧

刚在网上看到一篇关于Java性能调优的帖子,很是帮助,自己也用了十多年JAVA了,有些感同身受,这里 引用那帖子结合自己的感受来谈下

技巧1:尽量少用new来创建对象

因为用new来创建对象的实例时 ,构造函数链上的所有构造函数都会被依次调用,导致效率很低。其实我们可以用一些小技巧,比如复用已有 对象。比如说,一个类如果实现了Cloneable接口的话,可以调用这个类的对象的clone()方法来创建一个新 对象,这样的对象不会调用任何类的构造函数。所以,这样生成新对象的速度比调用任何类的构造函数要来的 快。

技巧2:尽量使用局部变量

如果学会JAVA虚拟机原理的话都知道,在调用方法的时候,传 递的参数以及调用的时候创建的临时变量都是保存在栈(stack)上的,这种变量的创建速度快。而静态变量 ,实例变量,都是创建在堆(heap)上的,这种变量的创建速度慢。

技巧3:尽量减少方法调用

面向对象提成尽量用方法调用来间接的访问变量,而不是希望直接访问变量,但是方法调用会有压栈退栈等操 作,从而会影响方法效率。比如说用setter和getter来访问变量比直接访问变量的效率就低很多,但是往往用 方法来访问变量更加有可读性,所以我们应该在可读性和效率之间进行权衡

技巧4:尽量使用 static,final,private

因为如果类级别被修饰为final,那么这个类是不可被继承的,类中的所有方法 也不可以被继承的。那么编译器会进行优化,将其方法进行内联,来提高效率。在方法级,如果某个方法被修 饰为static,final,private,则是不可以被覆盖,所以JAVA无需要动态关联,从而提高了效率

技巧5: 让setter/getter也成为final

同样,这样做的目的就是让编译器知道这个方法是不可以被覆盖,从而 将其转为inline来提高效率。

技巧6:不要不必要的类转型

比如A是B的父类,那么从B到A就不 用转型了。

技巧7:尽量重用String对象

比如对于字符串进行连接,操作时候,可以用 StringBuffer/StringBuilder来代替String ,因为String对象连接,操作会产生大量的新String对象,而系 统不仅要花费时间生成这些对象,还要最后对这些新生成的对象进行垃圾回收和清理。

技巧8:别过分 创建

时间: 2024-10-28 17:11:49

JAVA类和对象的使用技巧的相关文章

全面理解Java类和对象_java

面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分.在面向对象程序设计(OOP)中,不必关心对象的具体实现.在传统的结构化程序设计中,算法是第一位的,数据结构是第二位的,即首先确定如何操作数,再考虑如何组织数据,以方便操作.而OOP则颠倒了这种次序,将数据放在第一位,然后再考虑操作数据的算法. 一.类 类是构造对象的模板和蓝图.通俗地说,类相当于建筑的图纸,而对象相当于建筑物.由类构造对象的过程称为创建对象的实例. Java中通过关键字class定义"类"

解析Java类和对象的初始化过程

本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后,对 JVM 执行过程的关键点进行全面解析,并在文中穿插入了相关 JVM 规范和 JVM 的部分内部理论知识,以理论与实际结合的方式介绍对象初始化和类初始化之间的协作以及可能存在的冲突问题. 问题引入 近日我在调试一个枚举类型的解析器程序,该解析器是将数据库内一万多条枚举代码装载到缓存中,为了实现快速定位枚举代码和具体枚举类别的所有枚举元素,该类在装载枚举代码的同时对其采取两种策略建立内存索引.由于该类

(七)java类和对象

    一个类定义一个新的数据类型,也就是定义了一个逻辑框架,定义了它的成员之间的关系.可以通过这种类型来声明该类型的对象,通过new关键词来实例化对象,也就是为该类型的对象动态的分配物理内存空间,这个分配过程实在运行时发生的.内存空间是有限的,因此运行时分配内存有可能不成功,会造成运行时异常.     声明时的变量存储的是该内存空间的引用,也就是该内存空间的地址而不是该内存空间本身,这种变量之间的赋值,实际上是赋的引用的值.     实例化对象的时候,new后边是要实例化的类型的类名,紧跟类名

Java类_对象_变量

类:Java类是一个模板,是一类具体事物的描述.小猫.小狗就是动物,那么动物就可以是一个类:狗也是可以是一个类,因为萨摩耶.哈士奇.阿拉斯加都是狗.Java类描述的是一类对象的行为和状态. 对象:Java对象是类的具体实现.如果说小狗是一个类的话,那么一只哈士奇就是这一个类的一个对象,它有颜色.高度.品种等状体:同时还有叫.破坏沙发.啃咬椅子等行为.代码中的对象: 代码中的对象是有状态和行为的,其状态就是代码中的属性,其行为就是代码中的方法.比如如下Java代码: class Dog{ publ

JavaScript中的类数组对象介绍_javascript技巧

JavaScript中,数组是一个特殊的对象,其property名为正整数,且其length属性会随着数组成员的增减而发生变化,同时又从Array构造函数中继承了一些用于进行数组操作的方法.而对于一个普通的对象来说,如果它的所有property名均为正整数,同时也有相应的length属性,那么虽然该对象并不是由Array构造函数所创建的,它依然呈现出数组的行为,在这种情况下,这些对象被称为"类数组对象".以下是一个简单的类数组对象: 复制代码 代码如下: var o = {0:42,

php基础知识:类与对象(5) static_php技巧

Declaring class members or methods as static makes them accessible without needing an instantiation of the class. A member declared as static can not be accessed with an instantiated class object (though a static method can).  声明静态的类变量和方法可以不需要实例化类对象的

php基础知识:类与对象(1)_php技巧

类的定义:   以关键字 class 开头,后面跟着类名,可以是任何非 PHP 保留字的名字.后面跟着一对花括号,里面包含有类成员和方法的定义. 伪变量$this可以在当一个方法在对象内部调用时使用.$this 是一个到调用对象(通常是方法所属于的对象,但也可以是另一个对象,如果该方法是从第二个对象内静态调用的话)的引用.//??静态调用的内部到底是怎样的?看个例子:class A{   function foo()   {       if (isset($this)) {          

《Java程序员面试秘笈》—— 面试题5 用自己的语言描述Java中的类和对象

面试题5 用自己的语言描述Java中的类和对象 下列关于对象的哪一种说法是正确的?请选择一个正确的答案. (a)对象是可以对其进行实例化从而得到类的东西. (b)对象是类的实例. (c)对象是一种蓝本,据此可以创建抽象的具体实现. (d)对象是指向属性的引用. (e)对象是一种变量. 考点:该面试题考察求职者对于Java类和对象的理解. 出现频率: [面试题解析] 1.类 在处理复杂事物的时候,用到的一种基本手段就是抽象.抽象的目的就是区别事物之间的本质和不同,面向对象编程(OOP)的实质就是利

解析Java的JVM以及类与对象的概念_java

Java虚拟机(JVM)以及跨平台原理 相信大家已经了解到Java具有跨平台的特性,可以"一次编译,到处运行",在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的. 那么,跨平台是怎样实现的呢?这就要谈及Java虚拟机(Java Virtual Machine,简称 JVM). JVM也是一个软件,不同的平台有不同的版本.我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件.Java虚拟机就是负责将字节码文件翻译成特定平