String.class 类public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; /** Cache the hash code for the string */ private int hash; // Default to 0 public String(String original) { this.value = original.value; this.hash = original.hash; }String 初始化为null,会默认转为字符串的null,且他们的hash值相同
http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions.html#15.18.1.1简单说,对 null 执行自动转换时,会转换成 "null" 字符串。
implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage. */
private final char value[]; /** Cache the hash code for the string */
private int hash; // Default to 0 public String(String original) {
this.value = original.value;
this.hash = original.hash;
}String 初始化为null,会默认转为字符串的null,且他们的hash值相同
而你的s的null 被转为String的时候, 就是字符串"null".. 就是这样......
System.out.println(s);字节码 Compiled from "A.java"
public class A {
public A();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":
4: return public static void main(java.lang.String[]);
Code:
0: aconst_null
1: astore_1
2: getstatic #2 // Field java/lang/System.out:Ljava/
5: aload_1
6: invokevirtual #3 // Method java/io/PrintStream.printl
9: return
}aconst_null:解释如下 指令格式: aconst_null
功能描述: null进栈。
指令执行前
指令执行后
栈底
...
...
null
栈顶
注意:JVM并没有为null指派一个具体的值。