gpt4 book ai didi

java - 字符串性能-内存

转载 作者:行者123 更新时间:2023-12-01 18:40:00 26 4
gpt4 key购买 nike

在编写代码时,我遇到了一个有趣的问题。

我有一个 PersonPOJO,其 name 作为其 String 成员之一及其 getter 和 setter

class PersonPOJO {

private String name;

public setName(Name) {
this.name = Name;
}
public getName() {
return name;
}
}

现在我在测试类中使用它。其中有两种使用 String getter 的方法。

方法 1:-

class Test1 {

............
String name = personPojo.getName();
logger.debug("....."+name);
if (name.equals("ABC")) {
....
}
}

方法 2:-

class Test2 {
.............
logger.debug("...."+personPojo.getName());
if (personPojo.getName.equals("ABC")) {
..
}
}

因此,在第二种方法中,我没有创建中间字符串变量。不会创建额外的 String 变量有助于提高性能,例如无需创建额外的 String 对象、减少 GC 的负载等。请详细说明哪种方法更好?

谢谢

最佳答案

除了 if 检查中的“ABC”文字之外,没有任何额外的内容被创建。请参阅“名称”只是对 personPojo.getName() 指向的 String 对象的引用。所以就内存而言,没有任何凹痕。

然而,与选项 1 相比,在第二个示例中一次又一次地调用 personPojo.getName() 确实会影响性能。局部变量驻留在堆栈上,与从堆中获取对象然后调用相比,局部变量通常是访问速度最快的一个方法。

关于java - 字符串性能-内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20333677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com