public class mytest {
static String str="hello";
mytest getMytest(){

return null;
}
public static void main(String[] args) {
System.out.println(new mytest().getMytest().str);
}}
这道题目结果为什么不出现异常呢?结果为“hello”.
我打印new mytest().getMytest()为null

解决方案 »

  1.   

    static类型的域不依赖于类的对象而存在,只要类被加载了,static域就被初始化了,你去掉static就不行了
      

  2.   

    static常量是 类级的
    无static是对象级的。所以输入为hello,去掉static会报空指针错误
      

  3.   

    static的变量是不依赖你方法的
      

  4.   

    static变量是属于类的,不属于固定方法……
      

  5.   

    应该是hello
    因为static在你创建对象前已经初始化了!
      

  6.   

    其实类创建的时候static最先被初始化一次,数值就定了,mytest.str就已经等于hello,你getMytest是通过 mytest创建 所以getMytest().str 可以看作 mytest.str 这是个定值,不随return 返回值而改变。
      

  7.   

    static不是常量,final才是常量。
    static的变量 类来调用
    非static的变量 对象来调用
    这里虽然方法返回的对象为空,但是类是在的。
      

  8.   

    我是这么理解的。
    null 是一个对象的实例才有的东西,你从来不会有某个类是null,肯定是某个对象是null
    而静态方式是不依赖于对象的实例的,换句话说,只要知道属于哪个类,就能访问类的静态方法
    所以,虽然get方法返回了null,但其类型依然是mytest, 系统不需要根据null,也不需要访问null的任何东西,只需要知道null是mytest类型的就可以直接访问了。所以,不会出空指针问题。
      

  9.   

    什么都不说了,用下面的代码解释
    public class Mytest { 
    static String str="hello"; 
    Mytest getMytest(){ return null; 

    public static void main(String[] args) { 
    Mytest s=new Mytest();
    Mytest ss=s.getMytest();
    String sss=ss.str;
    System.out.println(sss); 

    }
      

  10.   

    str是mytest 类中的一个全局变量,在mytest 方法中肯定可以得到!在main方法中获取的是方法中的变量str,而不是方法本身,所以打印出来的就是hello了!
      

  11.   

    static是在创建类的时候创建的,跟对象无关