Android StringBuilder vs String Concatenation Android的StringBuilder和字符串连接 When it comes to manipulating strings in Android, there are two common approaches: using the StringBuilder class or using string concatenation. 在Android中操作字符串时,有两种常见的方法:使用StringB

9 浏览
0 Comments

Android StringBuilder vs String Concatenation Android的StringBuilder和字符串连接 When it comes to manipulating strings in Android, there are two common approaches: using the StringBuilder class or using string concatenation. 在Android中操作字符串时,有两种常见的方法:使用StringB

我在阅读这个文档页面:http://developer.android.com/reference/android/util/Log.html

这里的这个部分引起了我的注意:

提示:不要忘记,当你进行如下调用时:

Log.v(TAG, "index=" + i);

在构建要传入Log.d的字符串时,编译器使用了StringBuilder,并且至少会进行三次分配:StringBuilder本身、缓冲区和String对象。

实际上,还会进行另一个缓冲区的分配和复制,对gc的压力也更大。这意味着,如果你的日志消息被过滤掉,你可能在做大量的工作并产生了显著的开销。

这意味着Android编译器会将字符串连接(+)转换为StringBuilder和append语句。

我的假设是正确的吗?或者手动使用StringBuilder仍然更好?

0
0 Comments

在Android开发中,我们经常需要处理字符串的拼接操作。在这种情况下,我们通常可以使用两种方式来完成字符串的拼接:使用String Concatenation(字符串拼接)或使用StringBuilder。

String Concatenation是通过使用"+"操作符来将多个字符串连接在一起,例如:

String myString = "Hello " + "World";

这种方式在后台使用了一个StringBuilder对象进行字符串的拼接,但同时也会进行其他的内存分配操作。因此,对于除了简单的一次性拼接之外的情况,最好使用自己创建的StringBuilder对象进行字符串拼接。

例如:

StringBuilder myString = new StringBuilder();
myString.append("Hello ");
myString.append("to ");
myString.append("everyone ");
myString.append("in ");
myString.append("the ");
myString.append("world!");

这种方式比以下方式更好:

String myString = "Hello " + "to " + "everyone " + "in " + "the " + "world!";

然而,如果我的字符串只是简单的"index=" + i,哪种方式最好(性能最佳)?这是一个很好的问题,取决于具体的上下文。如果这个拼接操作很少被调用,那么使用`"index=" + i`的方式更易读。但是,如果这个拼接操作在一个循环中被调用了1000次,并且性能是一个问题,那么可能使用StringBuilder的方式更好。然而,被接受的答案的主要观点是,当需要多行代码来构建一个字符串时,一定要使用StringBuilder。

需要注意的是,在使用StringBuilder的方式时,我们需要调用`myString.toString()`来获取一个正确的字符串。

总结起来,对于字符串的拼接操作,当需要多行代码来构建字符串时,使用StringBuilder是更好的选择,可以避免不必要的内存分配。而对于简单的拼接操作,使用String Concatenation更易读。根据具体的上下文和性能需求来选择合适的方式。

0
0 Comments

问题:Android中为什么会出现StringBuilder和String Concatenation的比较,以及解决方法是什么?

在Android中,当我们进行字符串的拼接操作时,有两种常用的方法:使用StringBuilder类和使用String的拼接操作。StringBuilder是一个可变的字符串类,可以通过调用其append()方法来拼接字符串。而String的拼接操作则是使用加号(+)进行拼接。

问题的出现是因为在某些情况下,String的拼接操作会导致性能问题。当我们在多行代码中进行字符串拼接时,编译器通常会为每个涉及加号的表达式分配一个单独的StringBuilder对象。这会导致不必要的内存分配和拷贝操作,进而影响性能。

为了解决这个问题,建议在字符串拼接操作涉及多行代码时手动使用StringBuilder类。通过手动创建一个StringBuilder对象,并在每个表达式中调用其append()方法,可以避免不必要的内存分配和拷贝操作,提高性能。

具体来说,可以按照以下步骤进行操作:

1. 创建一个StringBuilder对象:StringBuilder sb = new StringBuilder();

2. 使用append()方法将需要拼接的字符串添加到StringBuilder对象中:sb.append("string1").append("string2").append("string3");

3. 最后,通过调用toString()方法将StringBuilder对象转换为String对象:String result = sb.toString();

通过这种方式,我们可以避免在多行代码中进行字符串拼接时出现的性能问题,提高应用的运行效率。

总之,在Android中,当涉及到多行代码的字符串拼接操作时,使用StringBuilder类手动进行拼接是一个更好的选择,可以提高性能和效率。

0