开发者

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

开发者 https://www.devze.com 2023-11-24 10:20 出处:网络 作者: 求平安
目录封装类型以Long为例,基础类型以long为例1 比较equals与==2 速度equals与==哪个更快呢?总结封装类型以Long为例,基础类型以long为例
目录
  • 封装类型以Long为例,基础类型以long为例
    • 1 比较equals与==
    • 2 速度equals与==哪个更快呢?
  • 总结

    封装类型以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 速度equa编程客栈ls与==哪个更快呢?

    @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++);
        }
      js  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 = offwoiXlk0; 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封装类型基础类型对比的资料请关注编程客栈(www.devze.com)其它相关文章!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号