使用相同变量是每次用get()方法效率高还是使用get后的新变量效率高?

获取同一个变量时,是先用get方法获取后取个变量名后使用这个变量名,还是说每次使用的时候都去调用get方法?我纠结的是效率问题以及代码的可读性和简洁性.

以下是我自己写的测试代码,希望您可以通过代码理解我的意思和疑问:

// 第一种get方式
    Invoices invoices = new Invoices();
        invoices.setId(123456789L);
        System.out.println("开始时间" + System.currentTimeMillis());
        System.out.println(invoices.getId());
        System.out.println(invoices.getId());
        System.out.println(invoices.getId());
        System.out.println("结束时间" + System.currentTimeMillis());

// 第二种取值后使用的方式
        Invoices invoices2 = new Invoices();
        invoices2.setId(123456789L);
        Long id = invoices2.getId();
        System.out.println("开始时间" + System.currentTimeMillis());
        System.out.println(id);
        System.out.println(id);
        System.out.println(id);
        System.out.println("结束时间" + System.currentTimeMillis());
运行多次后发现第二种方式似乎消耗时间更短一点,但是差别不是很大.我的Id是Long类型,这种长数字型才稍微体现了一些性能上的差异,但是如果换成字符串且字符串较短则效率无差异.
期望您的解答谢谢.

首先,只要你get方法里面没有复杂逻辑,只是一个简单的return this.id;,是基本可以忽略差异的.但是如果是一个有类似要创建一个对象或者查找的方法,那建议可以只执行一次就执行一次.

第二,你的这个测试代码没有参考价值.如果要统计时间,就不要写输出语句,输出语句是个耗时操作,打印同一个内容两次执行时间也不一致.如果你的测试可以忽略这个时间误差就没事,但是你这个测试用例明显是不能忽略的.

不是,,你这个问题问的有点怪异啊
第一种方式你打印时 代码执行get方法都去方法里走了一圈 然后return id 你写了三句那就调用了三次
你get中就一行代码 你多写点代码 比如写一个 延迟3秒后运行 那不就是 9秒 而第二种只需要3秒
第二种只需要调用一次 get方法 。从次数都能看出来啊 这有啥纠结的