为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕村225694 2021-12-10 15:12:37
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类是如何单独通过名字获取它们的值的呢?它与什么机制一起工作?
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

当您将对象传递给 的println方法时System.out,调用的是toStringObject类中声明的方法。这只是为了System.out.println弄清楚要打印什么。

的方式toString方法中所定义Object并不是很有益的-它打印出一堆通常涉及到对象的存储位置,而不是它的内容的字符集。

然而,包括 在内的一些类StringBuffer有自己的版本,toString它们覆盖了Object. 所以,如果你System.out.println并通过它StringBuffer,你会真正看到缓冲区的内容,而不是字符,你会得到,如果版本toStringObject类被调用。

您的IntReference类没有自己的toString方法,因此当您将IntReference对象传递给 时System.out.println,会调用类中的toString方法Object。这不是很有用,这就是为什么你要做这样的事情System.out.println(intref.getA())


查看完整回答
反对 回复 2021-12-10
?
侃侃无极

TA贡献2051条经验 获得超10个赞

String表示固定长度的、不可变的字符序列,而StringBuffer表示可增长和可写的字符序列。 StringBuffer可能有字符和子字符串插入中间或附加到末尾。它会自动增长,为此类添加腾出空间,并且通常会预先分配比实际需要更多的字符,以留出增长空间。

StringBuffer(String str):它接受一个 String 参数,该参数设置 StringBuffer 对象的初始内容,并为 16 个以上的字符保留空间而无需重新分配。有关更多基础知识,请参阅此链接:https : //www.tutorialspoint.com/java/lang/java_lang_stringbuffer.htm


查看完整回答
反对 回复 2021-12-10
  • 2 回答
  • 0 关注
  • 299 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信