Gibt es einen Leistungsvorteil durch die Verwendung einer private final static String
in Java vs Verwendung einer lokalen String-Variable, die jedes Mal, wenn auf die Methode zugegriffen wird, "initialisiert" werden muss?Java-Zeichenfolgen: private statische vs. lokale variable Leistung
Ich denke, dass die Verwendung von private static final
Strings ist eine gute Übung für Konstanten, die in verschiedenen Teilen einer Klasse wiederverwendet werden, aber wenn eine Zeichenfolge nur in einer Methode verwendet werden sollte, an einem Ort, aus einem ganz bestimmten Grund Keine andere Methode interessiert mich, ich bevorzuge es, die interne Schnittstelle der Klasse sauber zu halten mit weniger privaten Mitgliedern und einfach eine lokale Variable zu verwenden.
Vorausgesetzt, dass Java String Interning hat, und tatsächlich einen Pool mit einer einzelnen Kopie jeder Zeichenfolge, die mit Anführungszeichen (String s = "some string"
) deklariert wird, würde es tatsächlich einen Leistungseinbruch von der Deklaration/Initialisierung/zuweisen die Variable jeder Zeit Zugriff auf die Methode vs mit einer statischen Zeichenfolge?
Um es ein wenig klarer zu machen, würde es einen Unterschied zwischen der Verwendung von SS
oder LS
geben?
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
}
}
"* behält einen Pool mit einer einzelnen Kopie jeder anderen Zeichenfolge *" das ist falsch. Die einzigen Strings Java-Praktikanten (es sei denn, Sie rufen 'String.intern()') auf, sind "Anführungszeichen" -Konstanten in Ihrem Code. Zur Laufzeit konstruierte Strings werden im Konstanten-Pool * nicht * interniert. – dimo414
Sie haben Recht, diejenigen, wo diejenigen, die ich bezog, ich bearbeite –