public class NameClass {
private static int x ;
public static void main(String[] args) {
name(x);
System.out.println(x);
}
public static void name(int x){
x ++;
}
}
//請幫忙分析下為什麼這斷代碼的輸出為0?
package cn.com.test2;
public class A {
public static void testMethod(String name){
System.out.println("hello"+name);
}
public static void main(String[] args) {
testMethod("nick");
//?
((A)null).testMethod("tom");//這句話是什麼意思呢?求詳細解答
}
}
第一個程序;name函數操作的x的作用域只在name函數內,與外層的靜態變量x無關。這個靜態變量在類加載時就初始化為0了。
第二個程序:先將null類 強制類型轉換為A類型,然後通過這個A類型來調用靜態方法testMethod。如果你用普通的方法就不能實現。
在java中,對null進行強制類型轉換不會報錯,結果還是null。第二個程序也可以寫成下面這樣:
A obj= null;
obj.testMethod("Gook");