首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java StringBuffer问题

Java StringBuffer问题
EN

Stack Overflow用户
提问于 2010-10-16 17:14:50
回答 4查看 353关注 0票数 0
代码语言:javascript
复制
class MyStringBuffer {
    //TODO explain: why you would need these data members.
    private char[] chars; //character storage.
    private int length;   //number of characters used    

public String toString(){
        //TODO

        //Hint: just construct a new String from the ‘chars’ data member
        //and return this new String – See API online for how create
        //new String from char[]

这只是代码的一部分,我不想发布整个代码。我只想专注于这一点,然后当我完全理解它时再继续前进。

1)他说从'chars‘数据成员构造一个新的String是什么意思?我不知道他想让我做什么。我是不是应该对char charAt(int index)做点什么?或者类似这样的东西:StringBuffer sb = new StringBuffer("test");

2)构造和创建在Java中的含义是一样的吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-16 17:52:07

1)从chars创建字符串的简单方法

代码语言:javascript
复制
String result = new String(chars, 0, length);

注意,您可能不能只使用String(char[])构造函数,因为length成员的存在意味着chars的某些元素可能无法使用。如果不指定要使用的元素,那么在字符串的末尾可能会出现额外的字符(可能是空字符,也可能是垃圾字符)。

2)不完全正确。当对象被创建(为对象本身分配的内存)时,构造函数被调用,这时它只是一个内存块。在构造函数返回之前,该对象并未完全构造(读取:任何类不变式都不一定成立)。这意味着两者之间的区别只适用于构造函数,所以人们通常会将"create“和"construct”几乎互换使用。

票数 1
EN

Stack Overflow用户

发布于 2010-10-16 17:56:32

当他说从‘

’数据成员构造一个新的字符串时,他是什么意思?我不知道他想让我做什么。我是不是应该对char charAt(整型索引)做些什么?或者像这样:测试sb = StringBuffer StringBuffer("test");?

这两件事有没有创建一个字符串呢?(提示:否)

如何在Java中创建特定类的实例?(提示:查看您在new上的笔记。提示2:查看java.lang.String类的javadoc。

在java语言中,

的构造和创建的意思是一样的吗?

Java对象是由构造函数创建的,因此“构造”和“创建”交替使用是合理的。

(从技术上讲,它们的含义并不完全相同。对象是通过分配其内存并调用类构造函数来创建的。因此,如果你是书呆子,构造是创建对象过程的一部分。但没有必要太过学究。)

票数 2
EN

Stack Overflow用户

发布于 2010-10-16 17:45:27

您需要一个字符数组,因为,嗯,您必须将字符存储在某个地方。您可以将它们存储在String中,但这样就不需要StringBuffer了,它的理由是比String更高效(通常使用更高效的StringBuffer来构造字符串,然后使用.toString()来获得真正的String对象)。

该长度将用于指定StringBuffer的长度。你可能会想,你可以只使用字符数组的长度,但实际上,当减少StringBuffer的大小时,不重新分配更小的数组更有效,特别是当你最终可能需要更多的数组时。

此方案所需的String构造函数将是String (char[] value, int offset, int count),其偏移量为零,计数为length。这将允许您仅使用char数组的所需子集。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3948292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档