java字符串拼接_高效拼接字符串,你会用“+”还是StringBuilder.append?
时间: 2024-04-23 12:25:15 浏览: 138
我会使用StringBuilder.append来高效拼接字符串。因为在使用“+”运算符拼接字符串时,每次操作都会创建一个新的String对象,会造成很多无用的内存开销。而使用StringBuilder类则可以避免这种情况的发生,它会在同一个对象上进行追加操作,不会产生额外的内存开销。所以在处理大量字符串拼接的情况下,使用StringBuilder会比使用“+”运算符更加高效。
相关问题
public String toString() { StringBuilder builder = new StringBuilder(); builder.append(PROTOCOL_HEADER); builder.append(frameNumber).append(PROTOCOL_SEPARATOR); builder.append(systemState).append(PROTOCOL_SEPARATOR); builder.append(northProgress).append(PROTOCOL_SEPARATOR); builder.append(headingAngle).append(PROTOCOL_SEPARATOR); builder.append(pitchAngle).append(PROTOCOL_SEPARATOR); builder.append(rollAngle).append(PROTOCOL_SEPARATOR); builder.append(realTimeData).append(PROTOCOL_NEWLINE); return builder.toString(); }解释每一句代码
这段代码定义了一个 `toString()` 方法,返回一个字符串,其包含了当前对象的各个属性值,并按照一定的协议格式进行了拼接。
具体解释如下:
1. 创建一个 StringBuilder 对象 `builder` ,用于存储生成的字符串。
```java
StringBuilder builder = new StringBuilder();
```
2. 在 `builder` 中添加协议头部信息。
```java
builder.append(PROTOCOL_HEADER);
```
3. 将当前对象中的 `frameNumber` 属性值拼接到 `builder` 中,并在其后添加协议分隔符。
```java
builder.append(frameNumber).append(PROTOCOL_SEPARATOR);
```
4. 将当前对象中的 `systemState` 属性值拼接到 `builder` 中,并在其后添加协议分隔符。
```java
builder.append(systemState).append(PROTOCOL_SEPARATOR);
```
5. 将当前对象中的 `northProgress` 属性值拼接到 `builder` 中,并在其后添加协议分隔符。
```java
builder.append(northProgress).append(PROTOCOL_SEPARATOR);
```
6. 将当前对象中的 `headingAngle` 属性值拼接到 `builder` 中,并在其后添加协议分隔符。
```java
builder.append(headingAngle).append(PROTOCOL_SEPARATOR);
```
7. 将当前对象中的 `pitchAngle` 属性值拼接到 `builder` 中,并在其后添加协议分隔符。
```java
builder.append(pitchAngle).append(PROTOCOL_SEPARATOR);
```
8. 将当前对象中的 `rollAngle` 属性值拼接到 `builder` 中,并在其后添加协议分隔符。
```java
builder.append(rollAngle).append(PROTOCOL_SEPARATOR);
```
9. 将当前对象中的 `realTimeData` 属性值拼接到 `builder` 中,并在其后添加协议换行符。
```java
builder.append(realTimeData).append(PROTOCOL_NEWLINE);
```
10. 返回 `builder` 对象中拼接好的字符串。
```java
return builder.toString();
```
以上就是每一句代码的具体解释。
StringBuilder stringBuilder = new StringBuilder(); if (sysUserPosts.size()>1){ for (int i = 0; i < sysUserPosts.size() - 1; i++) { stringBuilder.append(sysUserPosts.get(i).getPostId()); stringBuilder.append(","); } stringBuilder.append(sysUserPosts.get(sysUserPosts.size()-1).getPostId()); }else { stringBuilder.append(sysUserPosts.get(0).getPostId()); } caOut.setGw(stringBuilder.toString()); if (day>=2){ caOut.setSfzjlsp("1");//领导 需要审批 }else { caOut.setSfzjlsp("0"); //领导 不需要审批 }
这段代码是一段Java代码,主要是对字符串和对象的处理。
首先,创建了一个StringBuilder对象,用于拼接字符串。
然后,判断sysUserPosts集合中元素的个数,如果大于1,就遍历集合中除最后一个元素外的所有元素,将它们的postId属性值用逗号拼接起来,最后再将最后一个元素的postId属性值拼接到字符串末尾。如果集合中只有一个元素,就直接将该元素的postId属性值拼接到字符串末尾。
接着,将拼接好的字符串设置到caOut对象的gw属性中。
最后,根据day的值判断是否需要审批,如果day大于等于2,则设置caOut对象的sfzjlsp属性值为1,表示需要审批;否则,设置为0,表示不需要审批。
总的来说,这段代码的作用是将sysUserPosts集合中的postId属性值拼接成字符串,并根据一定的条件设置caOut对象的属性值。
阅读全文