package com.niit.test;
/**
* @(#)TestString.java
*
*/
import java.util.*;
//首先System.currentTimeMillis()产生一个当前的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒...Date()其实就是相当于Date(System.currentTimeMillis());...
/**
* Java 5种 字符串 拼接方式 性能 比较
*/
public class TestString {
/**
* Creates a new instance of <code>TestString</code>.
*/
public TestString() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Test();testConcat();testJoin() ;testStringBuffer();
testStringBuilder();
}
//String 测试使用 + 号 1
public static void Test()
{
String s = "";
long ts = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
s = s + String.valueOf(i);
}
long te = System.currentTimeMillis();
System.out.println("时间差1:"+(te-ts));
}
//String 测试使用Concat 2
public static void testConcat() {
String s = "";
long ts = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
s = s.concat(String.valueOf(i));
}
long te = System.currentTimeMillis();
System.out.println("时间差2:"+(te-ts));
}
//String 测试使用泛型 3
public static void testJoin() {
List<String> list = new ArrayList<String>();
long ts = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
list.add(String.valueOf(i));
}
long te = System.currentTimeMillis();
System.out.println("时间差3:"+(te-ts));
}
//String 测试使用 StringBuffer 4
public static void testStringBuffer() {
StringBuffer sb = new StringBuffer();
long ts = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
sb.append(String.valueOf(i));
}
sb.toString();
long te = System.currentTimeMillis();
System.out.println("时间差4:"+(te-ts));
}
//String 测试使用 StringBuilder 5
public static void testStringBuilder() {
StringBuilder sb = new StringBuilder();
long ts = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
sb.append(String.valueOf(i));
}
sb.toString();
long te = System.currentTimeMillis();
System.out.println("时间差5:"+(te-ts));
}
//运行结果
/*
时间差1:3016
时间差2:625
时间差3:0
时间差4:15
时间差5:47 100000
10000
时间差1:3016
时间差2:625
时间差3:0
时间差4:0
时间差5:0
*/
/*
特别注意的是:
StringBuilder 循环的次数是其它的10倍,
如果是一样,那么返回 0,可见StringBuilder 的速度之快。
总结:
用 + 的方式效率最差,concat由于是内部机制实现,比+的方式好些。
Join 和 StringBuffer,相差不大,Join方式要快些,
可见这种JavaScript中快速拼接字符串的方式在Java中也非常适用。
StringBuilder 的速度最快,但其有线程安全的问题,
而且只有JDK5 以上 支持。
*/
}
分享到:
相关推荐
JAVA的字符串拼接与性能 概述:本文主要研究的是JAVA的字符串拼接的性能,原文中的测试代码在功能上并不等价,导致concat的测试意义不大。不过原作者在评论栏给了新的concat结果,如果有兴趣的同学建议自己修改代码...
1. **字符串拼接操作符 (+)**: 这是最直观且简单的字符串拼接方式,适用于少量或静态字符串的连接。然而,每次使用`+`操作符时,如果涉及到字符串常量,Java会创建一个新的字符串对象,这在循环中会引发大量的对象...
5. **字符串转换**:Java提供了一种简便的方式将其他数据类型转换为字符串形式,这通常是通过调用`toString()`方法实现的,例如: ```java int i = 42; String s5 = i.toString(); // 将整数转换为字符串 ``` 6...
在Java编程中,字符串连接是常见的操作,尤其是在处理...通过这种方式,`PowerJoin`类提供了灵活性,不仅在连接方式上,也在处理不同类型的集合数据时,可以根据需求定制字符串提取的逻辑,使得代码更加简洁和高效。
- `StringBuilder`和`StringBuffer`类:用于大量字符串拼接,线程安全,性能优于`+`。 5. 查找与替换: - `indexOf()`:查找子字符串首次出现的位置。 - `lastIndexOf()`:查找子字符串最后一次出现的位置。 - ...
而StringBuffer类是可变的,可以使用`append()`方法添加内容,而不必每次都创建新对象,因此在处理大量字符串拼接时,StringBuffer的效率更高。 总结来说,这个实验旨在帮助我们理解和掌握Java中字符串的基本操作,...
"Java 字符串连接的性能问题分析" Java 字符串连接的性能问题分析是 Java 开发中一个常见的问题,特别是在大规模的场景中。 Java 中使用 + 作为字符串连接符是把多个字符串合并成一个字符串的方便途径,但是在大...
本教程将深入探讨两种主要的字符串连接方式:`StringBuffer` 和 `StringBuilder`,并通过实例源代码进行性能比较。这两种类都是Java中用于构建和连接字符串的高效工具,尤其在循环或大量字符串操作时。 首先,我们...
Java提供了两种主要的方式来创建字符串:通过`String`类的构造方法和使用`StringBuilder`或`StringBuffer`类。以下是对这些知识点的详细解释: 1. **String类**: - **不可变性**:Java中的`String`对象是不可变的...
Java中有两种创建字符串的方式:`new String()`构造器和字面量`"..."`。字面量方式会创建一个常量字符串,存储在字符串池中;而构造器则会在堆上创建对象。 2. **字符串不可变性**: Java中的字符串是不可变的,...
相比传统的字符串拼接方式,`StringJoiner`在某些场景下能提供更好的性能和可读性。 最后,我们会探讨Java 8引入的流(Stream)API在处理字符串时的应用。利用流可以实现简洁且高效的字符串处理,例如使用`Collectors...
总结来说,去除Java字符串中的重复字符有多种途径,包括使用HashSet、StringBuilder和Stream API。每种方法都有其适用场景和优缺点。选择哪种方法取决于代码的上下文、性能需求以及对Java特性的熟悉程度。学习这些...
这时,StringBuilder和StringBuffer类就派上用场了,它们提供了可变的字符串操作,适合在循环中进行字符串拼接,性能优于使用"+"运算符。 Java异常处理也是编程中的重要组成部分。在处理字符串相关的问题时,可能会...
在Java中,有多种方式可以实现字符串拼接,比如使用`+`操作符,但当拼接的字符串数量较多时,这种方式的效率较低。因此,更推荐使用`StringBuffer`或`StringBuilder`类,它们提供了一种可扩展且高效的字符串操作方法...
在这种情况下,尽管`s`的值与"javablog"相同,但由于`s`是在运行时通过字符串拼接动态创建的新对象,因此`==`比较返回`false`。 #### 使用`intern()`方法 `intern()`方法可以将一个字符串添加到字符串常量池中,...
本文主要讲解了Java中字符串连接的不同方式以及比较字符串的多种方法。 首先,我们来看字符串的连接。Java提供了多种方式来连接字符串: 1. **使用`+`运算符**:这是最直观的方式,`+`运算符可以用于连接字符串,...
### Java中使用"+"进行字符串拼接的理解 在Java编程语言中,字符串操作是十分常见的需求之一,尤其是在构建动态内容或处理大量文本数据时。...在实际开发过程中,根据应用场景选择合适的字符串拼接方式是非常重要的。
然而,不同的字符串拼接方式在性能上存在显著差异。本篇文章将深入探讨Java中的字符串拼接技术,以及它们对程序效率的影响。 首先,最直观的字符串拼接方式是使用操作符“+”。这种做法简单易懂,但在循环中频繁...
Java提供多种方法来比较字符串: 1. `equals()`:比较字符串的内容是否相等,忽略大小写可使用`equalsIgnoreCase()`。 2. `compareTo()`:根据字典顺序比较字符串,返回值表示字符串的相对位置,0表示相等,负值...