是的可以。下面是一个最终可以提高性能的实例:

条件编译是一种技术,在这种技术中,代码行不会根据特定条件编译到类文件中。这可用于删除生产生成中的大量调试代码。

考虑以下几点:public class ConditionalCompile {

private final static boolean doSomething= false;

if (doSomething) {

// do first part.

}

if (doSomething) {

// do second part.

}

if (doSomething) {

// do third part.

}

if (doSomething) {

// do finalization part.

}}

通过将DoSomething属性转换为最终属性,您已经告诉编译器,每当它看到DoSomething时,它应该按照编译时替换规则用false替换它。编译器的第一次传递将代码更改为某物就像这样:public class ConditionalCompile {

private final static boolean doSomething= false;

if (false){

// do first part.

}

if (false){

// do second part.

}

if (false){

// do third part.

}

if (false){

// do finalization part.

}}

一旦完成,编译器将再次查看它,并看到代码中有一些不可访问的语句。由于您使用的是高质量的编译器,所以它不喜欢所有那些无法访问的字节码。所以它移除了它们,你就得到了这样的结果:public class ConditionalCompile {

private final static boolean doSomething= false;

public static void someMethodBetter( ) {

// do first part.

// do second part.

// do third part.

// do finalization part.

}}

从而减少了任何过多的代码,或任何不必要的有条件检查。

编辑:作为一个示例,让我们使用以下代码:public class Test {

public static final void main(String[] args) {

boolean x = false;

if (x) {

System.out.println("x");

}

final boolean y = false;

if (y) {

System.out.println("y");

}

if (false) {

System.out.println("z");

}

}}

在用Java 8编译此代码和用javap -c Test.class我们得到:public class Test {

public Test();

Code:

0: aload_0       1: invokespecial #8                  // Method java/lang/Object."":()V

4: return

public static final void main(java.lang.String[]);

Code:

0: iconst_0       1: istore_1       2: iload_1       3: ifeq          14

6: getstatic     #16                 // Field java/lang/System.out:Ljava/io/PrintStream;

9: ldc           #22                 // String x

11: invokevirtual #24                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V

14: iconst_0      15: istore_2      16: return}

我们可以注意到,编译后的代码只包含非最终变量。x..这表明最终变量对性能有影响,至少在这个简单的情况下是这样的。

fianl属性 java_在Java中使用Final关键字可以提高性能吗?相关推荐

  1. 在Java中使用final关键字可以提高性能吗?

    本文翻译自:Does use of final keyword in Java improve the performance? In Java we see lots of places where ...

  2. java final 修改_“无法改变的设计”——浅谈Java中的final关键字

    在Java中,final关键字可以用来修饰类.变量(包括成员变量和局部变量).方法,下面从这三个方面分别说明. final方法 当一个方法被final修饰时,表明这个方法不能被子类重写. 下面程序试图 ...

  3. 详解java中的final关键字

    概述 final 简介 final关键字可用于多个场景,且在不同场景具有不同的作用.首先,final是一个非访问修饰符,仅适用于变量,方法或类.下面是使用final的不同场景: 上面这张图可以概括成: ...

  4. 浅谈Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  5. 浅析Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  6. 深入理解Java中的final关键字

    深入理解Java中的final关键字 http://www.importnew.com/7553.html Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什 ...

  7. (转)深入理解Java中的final关键字

    转自:http://www.importnew.com/7553.html Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方 ...

  8. 【转】浅析Java中的final关键字

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. ...

  9. java final 变量 好处_深入理解Java中的final关键字

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

最新文章

  1. fiddler4 使用教程
  2. 浅谈群集与分布式基础知识
  3. rabbitmq 连接报错 An unexpected connection driver error occured(亲测)
  4. 学习OpenCV,看这些!
  5. php求平均值的函数_最全计算机二级函数关键知识点汇总整理!
  6. springboot幂等性_springboot + redis + 注解 + 拦截器 实现接口幂等性校验
  7. 【图像融合】基于matlab CBF算法图像融合【含Matlab源码 083期】
  8. 好用的FTP下载工具 flashfxp工具
  9. IDEA配置方法类注释模板
  10. 项目实战第二十一讲:平台商品库
  11. java order()_Java Comparator naturalOrder()用法及代码示例
  12. lpx寒假作业案例15
  13. 第三方支付躺赚的好日子结束:银行直连模式瓦解
  14. 《机器人动力学与控制》第五章——速度运动学之机械臂的雅各比矩阵 5.0 导言
  15. pycharm社区版安装及使用教程(win10系统)
  16. 时光机与流浪者-我的2017
  17. 【原创】EXCEL公式经验(2)--关于count(),countif(),counta(),countifs()相关多个函数总结
  18. java ceil_Java使用Math.ceil舍入为一个int
  19. 【资源共享】好用的视觉软件Adaptive Vision Studio
  20. [每天读一点英文:那些给我勇气的句子] alone but not lonely

热门文章

  1. librtmp协议分析---RTMP_SendPacket函数
  2. SparkStreaming Exception in thread main java.lang.IllegalArgumentException xxx is not a valid
  3. 【PAT甲级 火星数字】1100 Mars Numbers (20 分)Java 全部AC
  4. C# 类的派生 输出个人信息
  5. netty系列之:自定义编码和解码器要注意的问题
  6. JDK的快速排序算法实现DualPivotQuicksort
  7. 3pc_three phase commit protocol协议理解
  8. 12.suggest_type
  9. leetcode--116. 填充每个节点的下一个右侧节点指针
  10. poj 1830 开关问题