以下是我自己写的测试代码,希望您可以通过代码理解我的意思和疑问:
// 第一种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());
首先,只要你get方法里面没有复杂逻辑,只是一个简单的return this.id;,是基本可以忽略差异的.但是如果是一个有类似要创建一个对象或者查找的方法,那建议可以只执行一次就执行一次.
第二,你的这个测试代码没有参考价值.如果要统计时间,就不要写输出语句,输出语句是个耗时操作,打印同一个内容两次执行时间也不一致.如果你的测试可以忽略这个时间误差就没事,但是你这个测试用例明显是不能忽略的.
不是,,你这个问题问的有点怪异啊
第一种方式你打印时 代码执行get方法都去方法里走了一圈 然后return id 你写了三句那就调用了三次
你get中就一行代码 你多写点代码 比如写一个 延迟3秒后运行 那不就是 9秒 而第二种只需要3秒
第二种只需要调用一次 get方法 。从次数都能看出来啊 这有啥纠结的