StringBuffer s = new StringBuffer();
我们得到一个StringBuffer对象和一个指向该对象的引用
定义的s只是StringBuffer对象的类指针型引用
那么,jvm是如何分辨一个引用和该引用指向的对象是类型一致的?比如,为什么上面不能是String s = new StringBuffer()?

解决方案 »

  1.   

    jvm可以用反射原理知道是什么类啊,因为StringBuffer可以比String做更多的东西,而引用变量只能调用它本身的方法.String n=null;n是一个String类型的引用变量,它可以引用子类StringBuffer的实例,但是对n的操作还是限制在String的范围内
      

  2.   

    每个类都具有一个惟一的标志(类似ID),每个instance有属于那一个类的标志,强制转换时,如果2个标志不一样,就证明类型不一样,就抛异常了
      

  3.   

    两个字“内存”
    它先创建s,然后创建new StringBuffer(),再把他们建立连接关系,然后,看看他们是否处在同个内存区域。
      

  4.   

    jvm可以用反射原理知道是什么类啊,因为StringBuffer可以比String做更多的东西,而引用变量只能调用它本身的方法.String n=null;n是一个String类型的引用变量,它可以引用子类StringBuffer的实例,但是对n的操作还是限制在String的范围内
    此回答完全错误.
    StringBuffer不是String的子类