我有下面两个 JAVA 代码片段,想知道哪个在内存/性能方面更好。
第一个片段:
String s1 = "USER.DELETE";
String s2 = "RESOURCE.DELETE";
String s3 = "ENTITY.DELETE";
第二个片段: 一个静态最终变量
private static final String DELETE = ".DELETE";
然后使用这个变量
String s1 = "USER" + DELETE;
String s2 = "RESOURCE" + DELETE;
String s3 = "ENTITY" + DELETE;
最佳答案
第一种方法将在内存中创建 3 个 String 对象实例。 第二种方法将在内存中创建 4 个 String 对象实例。
性能影响: 从性能的角度来看不会有任何影响,因为字符串连接将在给定场景的编译时完成,因为值是已知的。
Java 规范: 由常量表达式(第 15.28 节)计算的字符串在编译时计算,然后被视为文字。 http://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.5
内存影响: 第二种方法会在 java 堆内存空间中创建一个额外的字符串。
从代码可维护性的角度来看,我将采用第二种方法。 假设稍后我们要将 .DELETE 更改为 .ASYNCDELETE。 我们只需要用第二种方法改变一个地方。 但是对于第一种方法,我们必须进行 3 次修改。
关于java - Java 中重复字符串值的字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42089776/