代码之家  ›  专栏  ›  技术社区  ›  wvd

特定语言中的字符串类

  •  1
  • wvd  · 技术社区  · 15 年前

    我对API越来越感兴趣,并打算开始编写自己的API,但后来我开始考虑Java的标准库。

    Java的标准库有一个包含大量方法的String类,这不是很糟糕的设计吗?我的意思是,如果我创建一个String类的新实例,它将创建一个包含几十个方法(toUpper、toLower等)的对象;对于这样一个简单的字符串,这不会占用很多内存吗?

    谢谢,

    威廉范多恩

    3 回复  |  直到 15 年前
        1
  •  12
  •   Jon Skeet    15 年前

    String ,那么为什么每个实例都需要一个新的副本呢?

    可以 对有很多方法的对象进行惩罚,这取决于它们的分配方式。。。但你必须询问非常具体的情况。)

    虽然Java中的String类确实有很多方法,但在许多平台上也会出现同样的情况——因为有很多方法可以使用String。

        2
  •  6
  •   Heinzi    15 年前

    a.myMethod() 作为语法糖 myMethod(a) . (当然,幕后还有很多事情要做,但这可能有助于您理解为什么大量方法并不意味着对象创建需要大量内存。)

        3
  •  1
  •   user151323 user151323    15 年前

    方法不会添加到对象内存空间。

    直到他们被召唤。然后为新的堆栈帧占用一些内存,并在方法完成后释放回来。