据我所知toString是把数据表示成字符串类型的,可是我还是不太明白
比如:
class StringBufferdemon {
    public static void main(String[] args){
        StringBuffer s= new StringBuffer();
        s.append("Hello");
        s.append("World");
        s.toString();
        System.out.println(s);
    }
}上面的s.toString()启到了什么作用,还有就是最后一句输出s的时候,s的数据类型是什么呢?

解决方案 »

  1.   

    toString就是描述实例的信息,一般默认的是Object类中的方法.需要是自己要重写的
    class Student {
        int num;
        String name;
        Student(int num, String name) {
            this.num = num;
            this.name = name;
        }
        public String toString() {
            return "Num:"+num+" , Name:"+name;
        }
    }
      

  2.   

    如果没有写toString()这句话,输出结果完全一样。
      

  3.   

    最后一句输出s的时候,s的数据类型还是StringBuffer
      

  4.   

    谢谢各位的回答我上面问的问题其实就是想引出我现在遇到的问题:
    比如:
    class StringBufferdemon {
        public static void main(String[] args){
            StringBuffer s= new StringBuffer();
            s.append("Hello");
            s.append("World");
            String a=s.toString();
            System.out.println(a);
        }
    }
    是不是这段代码实现了由StringBuffer类型转换成了String类型,现在我想问的是:toString()这个方法是不是不可以使s的数据类型发生根本改变?
    比如我想把s的StringBuffer类型转换成 String类型的,应该怎么实现呢?以下的代码报错,能够指出会编译错误的原因吗?(数据类型不符)
    class StringBufferdemon {
        public static void main(String[] args){
            StringBuffer s= new StringBuffer();
            s.append("Hello");
            s.append("World");
            String s=s.toString();
            System.out.println(a);
        }
    }
    上面的String s=s.toString()这个用法在这用肯定是错的,可以说下错的原因是什么吗?由于我概念不是很清楚,但是我很想弄明白一些,谢谢大家指教了。我想实现StringBuffer转换成String类型,那应该用什么方法实现呢?
      

  5.   

    class StringBufferdemon {
        public static void main(String[] args){
            StringBuffer s= new StringBuffer();
            s.append("Hello");
            s.append("World");
            String s=s.toString();
            System.out.println(s);
        }
    }
      

  6.   

    String s=s.toString() ;明显重复定义了!
      

  7.   

    System.out.println(a);?????????????????????????
      

  8.   

    能说明白一些吗? 是不是java语言里不能重复定义,还是在这个程序里的s已经是String类型了?
      

  9.   

    怎么可以在一个block中定义两个相同名字的局部变量,是不是打错了阿
    你是不要写
    class StringBufferdemon {
        public static void main(String[] args){
            StringBuffer s= new StringBuffer();
            s.append("Hello");
            s.append("World");
            String a=s.toString();//这个地方是a 不是 s
            System.out.println(a);
        }
    }
      

  10.   

    在这个程序中 s 是 StringBuffer 类型的,在后面又将其定义为 String 类型的了,显然这里出错了,在一个方法体内不允许定义重复的变量。
      

  11.   

    --------------------------------例一------------------
    String s="第一次定义";
    for(int i=0;i<1;i++)
    {
        String s="第二次定义";
        System.out.println(s);//输出结果: 第二次定义
    }
    System.out.println(s);//输出结果 : 第一次定义
    ---------------------------------例二-----------------
    String s="第一次定义";String s="第二次定义";System.out.println(s);//编译无法通过!