Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这是清除StringBuilder的好方法吗?_Java_Android - Fatal编程技术网

Java 这是清除StringBuilder的好方法吗?

Java 这是清除StringBuilder的好方法吗?,java,android,Java,Android,我只想问一下,这是否是清除/清空StringBuilder的好方法?它被包装在一个方法中,并被多次调用,这个线程安全吗?这不会消耗很多内存吗?如果我在方法外部而在类中创建StringBuilder会更好吗 private void callMe(){ StringBuilder builder = new StringBuilder(); builder.delete(0, builder.length()); } builder.append("some ID"); if

我只想问一下,这是否是清除/清空StringBuilder的好方法?它被包装在一个方法中,并被多次调用,这个线程安全吗?这不会消耗很多内存吗?如果我在方法外部而在类中创建StringBuilder会更好吗

private void callMe(){
    StringBuilder builder = new StringBuilder();
    builder.delete(0, builder.length());
}

builder.append("some ID");

if (builder.toString().contains("some other ID"))
    Show("Information")
else
    Show("Invalid ID")

打电话会更有效率

sb.设定长度(0)


因为这只是一个方法调用,而不是两个。

调用

sb.设定长度(0)


因为这只是一个方法调用,而不是两个。

在我发布我的答案之前,我假设您正在循环中使用StringBuilder,并且每隔几次迭代,您可能希望清空它并从一个空的StringBuilder开始。在这种情况下,我可以想到两种方法:

  • 在正在使用的字符串生成器上调用
    setLength(0)
    。我更喜欢这个而不是删除,因为我觉得这更整洁
  • 或者分配一个新的,而不是清除缓冲区。这可能不是一个理想的选择,但仍然是一个选择

在我发布我的答案之前,我假设您正在循环中使用StringBuilder,并且每隔几次迭代,您可能希望清空它并从一个空的StringBuilder开始。在这种情况下,我可以想到两种方法:

  • 在正在使用的字符串生成器上调用
    setLength(0)
    。我更喜欢这个而不是删除,因为我觉得这更整洁
  • 或者分配一个新的,而不是清除缓冲区。这可能不是一个理想的选择,但仍然是一个选择

为什么在创建一个新对象后,要
builder.delete(0,builder.length())?为什么要删除刚刚创建的条目?这只是整个代码的一部分,用于在将字符串与web服务的ID追加后将其与字符串进行比较。我清除了它,因为它被多次调用。整个代码的这一部分不会与代码的其他部分交互。为什么在创建新对象后,要
builder.delete(0,builder.length())?为什么要删除刚刚创建的条目?这只是整个代码的一部分,用于在将字符串与web服务的ID追加后将其与字符串进行比较。我清除了它,因为它被多次调用。整个代码的这一部分不会与代码的其他部分交互。