c void main(String[] args) { Person p= new Person(10, "wangke"); p.print(); } class Person { private int ID; private String name; Person(int ID, String name) { this.ID = ID; this.name = name; } public void print() { System.out.println("ID ="+ ID); System.out.println("name ="+ name); }}}答: 不能通过编译。 Person p= new Person(10, "wangke"); 这一句会报错:无法从静态上下文中引用非静态变量 this 。 27、问:阅读下面的 Java 代码,写出打印语句(1) 、(2) 、(3) 的输出结果,并解释原因。 String str1 = new String("wangke"); String str2 = new String("wangke"); System.out.println(str1 == str2); // (1) System.out.println(str1.equals(str2)); // (2) System.out.println(str1.hashCode()==str2.hashCode()); // (3) 答: (1) false 。因为== 比较的是对象句柄,而对象 str1 , str2 是完全独立的两个对象,它们的句柄是不同的。(2) true 。因为 String 类的 equals() 源码实现中重写了 Object 中的 equals() 方法:只要两个 Strin g 对象的字符数组内容相同,就认为两个对象相等。