Es gibt Zeiten, in denen ich eine String-Variable im Protokoll anzeigen möchte, indem ich sie mit einem String mit dem Operator "+" kombiniere, aber ich denke oft "das? Ist diese Variable null in Ordnung?" Ich werde. Wenn Sie mit Nurpo für die Protokollausgabe abstürzen, wird es umgestürzt.
Zusammenfassend gibt es kein Problem! !! ist.
String n = null;
System.out.println("fuga:" + n);
// fuga:Ausgabe als null
Es ist in Ordnung, String.format zu verwenden
String n = null;
System.out.println(String.format("hoge:%s",n));
// hoge:Wird als null angezeigt
System.out.println(String.format("fuga:%02d", n));
// fuga:Wird als null angezeigt
import java.util.ArrayList;
public class Main {
public static void main(String[] argv) {
//Deine eigene Klasse ist auch in Ordnung
MyClass myClass = new MyClass();
System.out.println("hoge:" + myClass);
// hoge:MyClass@Wird als 60e53b93 angezeigt(@Danach ändert es sich)
//Eingebaute Klasse ist auch in Ordnung
ArrayList<Object> arrayList = new ArrayList<>();
System.out.println("fuga:" + arrayList);
// fuga:[]Angezeigt als(Ich sehe ich sehe)
//Eingebaute Klasse ist auch ein Würfeljob
Object object = new Object();
System.out.println("piyo:" + object);
// piyo:java.lang.Object@5e2de80c(@Danach ändert es sich)
}
}
class MyClass {
}
Wie wir bisher gesehen haben, wird mit Ausnahme des Fomat-Operators "% s" eine Ausnahme ausgelöst und fällt, wenn es sich um eine Instanz einer Klasse handelt, die nicht konvertiert werden kann.
public class Main {
public static void main(String[] argv) {
MyClass myClass = new MyClass();
System.out.println(String.format("hoge:%s",myClass));
// hoge:MyClass@Wird als 78308db1 angezeigt(@Danach ändert es sich)
System.out.println(String.format("hoge:%d",myClass));
// java.util.Fallen Sie mit IllegalFormatConversionException
}
}
class MyClass {
}
Es war eine verhaltensbasierte Java8-Überprüfung, aber es war in Ordnung, wenn sie mit dem Operator + kombiniert wurde. Ich frage mich, ob Java-Lehrer Vespra kommentieren werden.