我想知道 Java 中的字符串类是如何返回字符串的

Java语言中有一些字符串相关的类,比如String和StringBuffer,可以只加载对象的名字


就像这样:


public static void main(String[] args) {

    StringBuffer msg = new StringBuffer("Hello JAVA");

    printMsg(msg);

}

public static void printMsg(StringBuffer msg) {

    msg.append("I like JAVA");

    System.out.println("printMsg: " + msg);

}

但是,其他类和自定义类对于对象的名称是不够的

所以当你加载一个值时,你必须写:


public class IntReference {

    private int a;

    public void setA(int a) {

        this.a=a;

    }

    public int getA() {

        return a;

    }

    public void add(int y) {

        a+=y;

    }

}

public static void main(String[] args) {

    // TODO Auto-generated method stub

    IntReference intref = new IntReference();

    int a=10;


    intref.setA(a);     

    System.out.println(intref.getA());

    plus(intref);

    System.out.println(intref.getA());


}

public static void plus(IntReference intref) {

    intref.add(10);

    System.out.println(intref.getA());

}

那么String和StringBuffer类是如何单独通过名字获取它们的值的呢?

它与什么机制一起工作?


慕村225694
浏览 305回答 2
2回答

临摹微笑

当您将对象传递给 的println方法时System.out,调用的是toString在Object类中声明的方法。这只是为了System.out.println弄清楚要打印什么。的方式toString方法中所定义Object并不是很有益的-它打印出一堆通常涉及到对象的存储位置,而不是它的内容的字符集。然而,包括 在内的一些类StringBuffer有自己的版本,toString它们覆盖了Object. 所以,如果你System.out.println并通过它StringBuffer,你会真正看到缓冲区的内容,而不是字符,你会得到,如果版本toString从Object类被调用。您的IntReference类没有自己的toString方法,因此当您将IntReference对象传递给 时System.out.println,会调用类中的toString方法Object。这不是很有用,这就是为什么你要做这样的事情System.out.println(intref.getA())。

侃侃无极

String表示固定长度的、不可变的字符序列,而StringBuffer表示可增长和可写的字符序列。 StringBuffer可能有字符和子字符串插入中间或附加到末尾。它会自动增长,为此类添加腾出空间,并且通常会预先分配比实际需要更多的字符,以留出增长空间。StringBuffer(String str):它接受一个 String 参数,该参数设置 StringBuffer 对象的初始内容,并为 16 个以上的字符保留空间而无需重新分配。有关更多基础知识,请参阅此链接:https : //www.tutorialspoint.com/java/lang/java_lang_stringbuffer.htm
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java