急求分析两段JAVA代码(最近笔试碰到的)

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");

第一个程序,你x++修改的是参数的x,而不是静态变量的x

第二个程序,强制类型转换,然后调用静态方法,输出hellotom

第二个程序在线验证:http://ideone.com/Ok7AJe

第一个程序:你需要注意的是Java中都是值传递(没有指针这一说),所以函数里的x和外部的x是不一样的,只是两个同名的不同的基本数据类型对象
第二个程序:这个讲解很详细,http://blog.csdn.net/havedream_one/article/details/49200071

感谢各位的回答,帮我解决了这个问题.感谢!