java封装类型与基础类型对比示例分析

 更新时间:2023年11月22日 10:17:26   作者:求平安  
这篇文章主要为大家介绍了java封装类型与基础类型对比示例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

封装类型以Long为例,基础类型以long为例

1 比较equals与==

@Test
public void testEquals() {
    Long l1 = 10000L;
    long l2 = 10000l;
    Long l3 = 10000l;
    // 封装类型与基础类型==比较的时候,封装类型会自动转成基本类型做比较
    System.out.println(l1 == l2); // true
    System.out.println(l1 == l3); // false
    System.out.println(l1.longValue() == l3.longValue()); // true
}

总结1:如果使用==号比较,需要把1侧的类型转成基础类型

2 速度equals与==哪个更快呢?

@Test
public void testFast() {
    // string的equals和long的equals,哪个更快
    int N = 1000000;
    long[] l1 = new long[N];
    long[] l2 = new long[N];
    Long[] data1 = new Long[N];
    Long[] data2 = new Long[N];
    String[] str1 = new String[N];
    String[] str2 = new String[N];
    long j = 0;
    for (int i = 0; i < N; i++) {
        data1[i] = j;
        data2[i] = j;
        str1[i] = String.valueOf(j);
        str2[i] = String.valueOf(j++);
    }
    compareL(l1, l2, N); // 10
    compareLong1(data1, data2, N); // 100
    compareLong(data1, data2, N); // 600
    // 总结:Long1.longValue()==Long2.longValue() 比 Long1.equals(Long2) 更快
    compareStr(str1, str2, N); // 1000
}
public void compareL(long[] data1, long[] data2, int N) {
    long startL = System.currentTimeMillis();
    for (int i = 0; i < 100; i++) {
        for (int j = 0; j < N; j++) {
            if (data1[j] == (data2[j])) {
            }
        }
    }
    long endL = System.currentTimeMillis();
    System.out.println("compareL tasks times :" + (endL - startL));
}
public void compareLong(Long[] data1, Long[] data2, int N) {
    long startL = System.currentTimeMillis();
    for (int i = 0; i < 100; i++) {
        for (int j = 0; j < N; j++) {
            if (data1[j].equals(data2[j])) {
            }
        }
    }
    long endL = System.currentTimeMillis();
    System.out.println("compareLong tasks times :" + (endL - startL));
}
public void compareLong1(Long[] data1, Long[] data2, int N) {
    long startL = System.currentTimeMillis();
    for (int i = 0; i < 100; i++) {
        for (int j = 0; j < N; j++) {
            if (data1[j].longValue() == data2[j].longValue()) {
            }
        }
    }
    long endL = System.currentTimeMillis();
    System.out.println("compareLong tasks times :" + (endL - startL));
}
public void compareStr(String[] data1, String[] data2, int N) {
    long startL = System.currentTimeMillis();
    for (int i = 0; i < 100; i++) {
        for (int j = 0; j < N; j++) {
            if (data1[j].equals(data2[j])) {
            }
        }
    }
    long endL = System.currentTimeMillis();
    System.out.println("compareStr tasks times :" + (endL - startL));
}

总结

通过compareLong1和compareLong对比,可以发现在保证数据正确的前提下,==比equals的速度要快。

结合总结1,我们可以在封装类型比较多时候,使用l1.longValue() == l2.longValue();

以上就是java封装类型与基础类型对比示例分析的详细内容,更多关于java封装类型基础类型对比的资料请关注脚本之家其它相关文章!

相关文章

  • Dubbo3的Spring适配原理与初始化流程源码解析

    Dubbo3的Spring适配原理与初始化流程源码解析

    这篇文章主要为大家介绍了Dubbo3的Spring适配原理与初始化流程源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • IDEA个性化设置注释模板详细讲解版

    IDEA个性化设置注释模板详细讲解版

    IDEA自带的注释模板不是太好用,我本人到网上搜集了很多资料系统的整理了一下制作了一份比较完整的模板来分享给大家,下面这篇文章主要给大家介绍了IDEA个性化设置注释模板的相关资料,需要的朋友可以参考下
    2024-01-01
  • java中Map如何根据key的大小进行排序详解

    java中Map如何根据key的大小进行排序详解

    这篇文章主要给大家介绍了关于java中Map如何根据key的大小进行排序的相关资料,有时候我们业务上需要对map里面的值按照key的大小来进行排序的时候我们就可以利用如下方法来进行排序了,需要的朋友可以参考下
    2023-09-09
  • 详解Java集合中的基本数据结构

    详解Java集合中的基本数据结构

    总有小伙伴让我总结一下Java集合中的基本数据结构的相关知识,今天特地整理了本篇文章,文中有非常详细的介绍,需要的朋友可以参考下
    2021-06-06
  • 新手入门Jvm-- JVM对象创建与内存分配机制

    新手入门Jvm-- JVM对象创建与内存分配机制

    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的
    2021-06-06
  • 详解MybatisPlus中@TableLogic注解的使用

    详解MybatisPlus中@TableLogic注解的使用

    @TableLogic一般用于实现数据库数据逻辑删除,本文我们将介绍 @TableLogic 注解的用法,以及每个属性的实际意义和用法,感兴趣的可以了解一下
    2022-06-06
  • java实现哈夫曼压缩的实例

    java实现哈夫曼压缩的实例

    这篇文章主要介绍了java实现哈夫曼压缩的实例的相关资料,需要的朋友可以参考下
    2017-07-07
  • Java中空指针异常的几种解决方案

    Java中空指针异常的几种解决方案

    这篇文章主要介绍了Java中空指针异常的几种解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • 在SpringBoot项目中实现给所有请求加固定前缀

    在SpringBoot项目中实现给所有请求加固定前缀

    这篇文章主要介绍了在SpringBoot项目中实现给所有请求加固定前缀,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Hibernate缓存详解

    Hibernate缓存详解

    本文主要介绍了Hibernate缓存的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02

最新评论