StringBuffer buffer = new StringBuffer();buffer不为空,但是buffer的值是多少?

解决方案 »

  1.   

    buffer的值是指向一段内存空间的地址。
      

  2.   


    回答错误!!!System.out.println("".equals(buffer));
    false
      

  3.   

    StringBuffer和StringBuilder类都没有覆盖equals方法,所以这个方法比较的是引用。明确这两个类的设计目的。要比较内容转换成String再比较。
      

  4.   

    null 没生成对象 内存没指针
    ""   生成了对象 指向的内容为空
    当一个对象为 null 时 不能调用.equals()方法
    -------
    我的理解 欢迎指正
      

  5.   


    buffer当然不和""相等了,一个是String,一个是StringBuffer,类型不同是不可能equal的你试试这个
    System.out.println("".equals(buffer.toString()));
      

  6.   


    楼主问buffer的值是什么,谁说buffer就是""了?
      

  7.   

    刚才查看了一下原码
     StringBuffer中有一个默认构造器
        public StringBuffer() {
    super(16);
        }
    且 StringBuffer 继承 AbstractStringBuilderAbstractStringBuilder类中有
       /**
         * The value is used for character storage.
         */
        char value[];    /**    /** 
         * Creates an AbstractStringBuilder of the specified capacity.
         */
        AbstractStringBuilder(int capacity) {
            value = new char[capacity];
        }
    所以StringBuffer buffer = new StringBuffer();的时候 只是创建了一个长度为16的char数组,
      

  8.   

    buffer的值是StringBuffer对像!
    .toString()后为"";
      

  9.   

    不过toString之后已经不是StringBuffer中的char数组的内容了。