java用StringBuilder写一段代码
时间: 2024-05-11 11:17:54 浏览: 13
以下是一个简单的 Java 代码示例,使用 StringBuilder 拼接字符串:
```java
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
String result = sb.toString();
System.out.println(result);
```
输出结果为:
```
Hello World
```
相关问题
Java写一段有意思的代码
很高兴回答你的问题。以下是一段有趣的 Java 代码,它可以生成一个随机的密码,并将其输出到控制台上:
import java.util.Random;
public class PasswordGenerator {
public static void main(String[] args) {
String password = generatePassword();
System.out.println("Your password is: " + password);
}
public static String generatePassword() {
String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+";
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = ; i < 10; i++) {
int index = random.nextInt(chars.length());
sb.append(chars.charAt(index));
}
return sb.toString();
}
}
希望这段代码能够为你带来一些乐趣!
Java一段代码证明StringBuilder是线程不安全的
以下是一段Java代码证明StringBuilder是线程不安全的:
```
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class StringBuilderThreadSafetyDemo {
private StringBuilder stringBuilder = new StringBuilder();
public void appendString(String string) {
stringBuilder.append(string);
}
public String toString() {
return stringBuilder.toString();
}
public static void main(String[] args) {
StringBuilderThreadSafetyDemo demo = new StringBuilderThreadSafetyDemo();
ExecutorService executorService = Executors.newFixedThreadPool(2);
for (int i = 0; i < 2; i++) {
executorService.submit(() -> {
for (int j = 0; j < 10000; j++) {
demo.appendString("a");
}
});
}
executorService.shutdown();
while (!executorService.isTerminated()) {}
System.out.println(demo.toString().length());
}
}
```
在这个例子中,我们创建了一个StringBuilderThreadSafetyDemo类,并在该类中定义了一个StringBuilder对象和一个appendString()方法用于向该对象中追加字符串。接着,我们使用了Java的并发编程工具ExecutorService创建了一个包含两个线程的线程池,并在每个线程中调用了10000次demo.appendString("a")来向StringBuilder对象中追加字符"a"。最后,我们打印了追加完所有字符后StringBuilder对象的长度。
如果StringBuilder是线程安全的,那么无论我们创建多少个线程并发地调用demo.appendString()方法,都不会影响StringBuilder对象的内容和长度。然而,运行上述代码后我们会发现,输出的字符串长度约为20000,而不是预期的10000,这意味着只有一个线程能够成功地向StringBuilder对象中添加字符"a",另一个线程的修改被覆盖了。这说明了StringBuilder是线程不安全的。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)