前言

  将一个int型数组x[]从初值0变成1。有两种做法:

// 只考虑后自增
int length = x.length;
for (int i = 0; i < length; i++) {
x[i]++;
}
int length = x.length;
for (int i = 0; i < length; i++) {
x[i] = 1;
}

测试代码

/**
* @author PengHao
* @version 1.0
* @date 2019-04-30 下午6:38:02
* Environment: Windows 10
* IDE Version: Eclipse 2019-3
* JDK Version: JDK1.8.0_112
*/ public class Efficiency {
private static int LENGTH = 21474836;
private static long begin, end; /**
* @return 自增运算用时
*/
private static long autoIncrementAfter() {
int[] x = new int[LENGTH];
begin = System.currentTimeMillis(); // 当前时间
for (int i = 0; i < LENGTH; i++) {
x[i]++;
}
end = System.currentTimeMillis(); // 当前时间
return end - begin; // 循环用时
} /**
* @return 赋值运算用时
*/
private static long copyValue() {
begin = System.currentTimeMillis();
int[] x = new int[LENGTH];
for (int i = 0; i < LENGTH; i++) {
x[i] = 1;
}
end = System.currentTimeMillis();
return end - begin;
} public static void main(String[] args) {
System.out.println("LENGTH=" + LENGTH);
System.out.println("后自增用时:" + autoIncrementAfter());
System.out.println("赋值用时:" + copyValue());
}
}

运行截图



  为了严谨性(与顺序无关),将第一组数据main方法中计算顺序交换后:

结论

  显然,后自增要比赋值的运算效率高。数据仅供参考。


写在最后:

  1. 如需转载,请于首页至少注明链接形式的wowpH的博客这几个字;
  2. 代码原创,如需公开引用,不能删除首行注释(作者,版本号,时间等信息)。
  3. 如果有疑问欢迎评论留言,尽量解答。

Java中自增(++)和赋值(=)运算效率比较的更多相关文章

  1. 关于JAVA中Byte数据类型二进制赋值运算报错问题

    自从JDK7更新之后,新增了二进制变量的表示,支持将整数类型用二进制来表示,用0b开头: 例如: byte b= (byte) 0b1000_0001; short s = (short) 0b100 ...

  2. Java中LinkedList的fori和foreach效率比较

    在<Java中ArrayList的fori和foreach效率比较>中对ArrayList的两种循环方式进行了比较,本次对LinkedList的两种遍历方式进行效率的比较. 1. list ...

  3. 关于java中自增,自减,和拓展运算符的小讨论

    java中运算符很多,但是能深入讨论的不算太多.这里我仅仅以++,*=为例做讨论. 例:++ i=0; i=i++ + ++i;//i=1 i=++i+i++;//i=2 i=i++ -++i;//i ...

  4. java中String类型变量的赋值问题

    第一节 String类型的方法参数 运行下面这段代码,其结果是什么? package com.test; public class Example { String str = new String( ...

  5. Java中Byte类型数据在运算中的问题

    比如: byte a=1; byte b=2; byte c; c=a+b; //这样是计算不出c,是错误的 c=a+1; //这样也是不能计算c的 c=64+1; //为什么这样就能计算c,在Jav ...

  6. Java中long类型直接赋值大数字 注意事项

    在java中,我们都知道有八种基本数据类型:byte. char. short .int. long. float. double .boolean 下面列出以下四种数据类型及其取值范围: 本文主要讲 ...

  7. 关于JAVA中string直接初始化赋值和new的区别,是否可以联系到int[]的情况

    String str1 = "ABC"; String str2 = new String("ABC"); String str1 = “ABC”;可能创建一个 ...

  8. java中多种写文件方式的效率对比实验

    一.实验背景 最近在考虑一个问题:“如果快速地向文件中写入数据”,java提供了多种文件写入的方式,效率上各有异同,基本上可以分为如下三大类:字节流输出.字符流输出.内存文件映射输出.前两种又可以分为 ...

  9. Java 中 HashMap 初始化时赋值

      1.HashMap 初始化的文艺写法 HashMap 是一种常用的数据结构,一般用来做数据字典或者 Hash 查找的容器.普通青年一般会这么初始化:HashMap<String, Strin ...

随机推荐

  1. 深入理解JVM虚拟机9:JVM监控工具与诊断实践

    转自https://juejin.im/post/59e6c1f26fb9a0451c397a8c jvm优化必知系列——监控工具 微信公众号[Java技术江湖]一位阿里 Java 工程师的技术小站. ...

  2. Hvie SQL 修改表名 注释 列名注释

    一.修改hive表注释 ALTER TABLE 数据库名.表名 SET TBLPROPERTIES('comment' = '新的表备注'); 二.修改hive表字段注释 ALTER TABLE 数据 ...

  3. cat file | while read line的问题

    循环中的重定向 或许你应该在其他脚本中见过下面的这种写法: while read line do        … done < file 刚开始看到这种结构时,很难理解< file是如何 ...

  4. 一个读取C#特性Description方法(zhuan)

    class Program { static void Main(string[] args) { string str= DB.write.ToDescription(); Console.Writ ...

  5. hwclock设置时间的调用过程是怎样的?

    调用过程如下: hwclock -w -> xioctl(RTC_SET_TIME); -> rtc_dev_ioctl() -> rtc_set_time()

  6. 简易的CRM系统案例之SpringMVC+JSP+MySQL+myBatis框架版本

    主要对上一版DAO框架的替换hibernate变成myBatis 简易的CRM系统案例之SpringMVC+JSP+MySQL+hibernate框架版本 src/mybatis.xml <?x ...

  7. spring的事务是什么?与数据库的事务是否一样

    spring的事务是什么?与数据库的事务是否一样 先说一下什么是事务,事务:是对数据库的一些列操作. 之前一直觉得事务只针对于数据库当中,5种隔离级别,7种传播行为,后来才发现这是针对Spring的, ...

  8. Facebook libra开发者文档- 3 -Life of a Transaction交易生命周期

    Life of a Transaction交易的生命周期 https://developers.libra.org/docs/life-of-a-transaction 为了更深入地了解Libra交易 ...

  9. Kafka Connect Architecture

    Kafka Connect's goal of copying data between systems has been tackled by a variety of frameworks, ma ...

  10. 取用户中文名 FDM_CUST_USER_NAME_READ_SINGLE

    DATA:lv_first TYPE ad_namefir,      lv_last  TYPE ad_namelas,      lv_full  TYPE ad_namtext.   CALL  ...