Fra*_*ega 17 java string performance string-pool
使用private final static Stringin java和使用本地字符串变量是否有任何性能优势,每次访问该方法时都必须"初始化"?
我确实认为使用private static final字符串是一种很好的做法,可以在类的不同部分重用,但是如果一个字符串仅在一个方法中使用,在一个位置,出于一个非常特殊的原因,没有其他方法涉及关于,我实际上更喜欢用较少的私有成员保持类的内部接口清洁,并且只使用局部变量.
鉴于java具有String interning,并且实际上使用quotes(String s = "some string")声明的每个字符串的单个副本保留一个池,每次访问该方法时,必须声明/初始化/分配变量实际上会有性能损失vs使用静态字符串?
为了使它更清楚,使用SS或之间会有任何区别LS吗?
class c {
private final static String SS = "myString";
private void method(){
//do something with SS
}
private void OtherMethod(){
String LS = "myOtherString"
//do same thing with LS
}
}
Run Code Online (Sandbox Code Playgroud)
使用命名常量可能更好的可维护性.但是,编译时已知的常量可以内联,在这种情况下不可能有任何差异.
注意:如果您使用的是字符串文字,则只需创建一次,无论JVM在何处使用.
在这种情况下,唯一的区别是在堆栈上使用局部变量,这不可能比已经内联的常量更昂贵.
每次访问该方法时,必须声明变量,实际上是否会有性能损失
由于Java使用静态编译器,因此在加载类/方法时,无论方法被调用多少次,变量都只被声明一次(或者每个编译阶段一次).但是,每次都可以初始化变量.
| 归档时间: |
|
| 查看次数: |
3185 次 |
| 最近记录: |