Java String类
在java编程中,字符串属于对象,java提供了String类创建和操作字符串。
1,创建字符串
String name="hello,world";
这里的值是"hello world",编译器会使用该值创建一个String对象(字符串常量)。
注意:String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。
如果需要对字符串做很多修改,那么应该选择使用StringBuffer/StringBuild类
String s = "Google"; System.out.println("s = " + s); s = "Baidu"; System.out.println("s = " + s);
输出结果为:
Google Baidu
从结果上看是改变了,但为什么门说String对象是不可变的呢?
原因在于实例中的 s 只是一个 String 对象的引用,并不是对象本身,当执行 s = "Baidu"; 创建了一个新的对象 "Baidu",而原来的 "Google" 还存在于内存中。
2,字符串长度
String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数。
int size=name.length();
//打印结果
size=11
3,连接字符串
java中String类提供了两种连接字符串的方法
① string1.concat(string2)
②"+"号,拼接字符串
String方法可以查看 Java String API文档 http://www.runoob.com/manual/jdk1.6/java/lang/String.html
Java StringBuffer 类
Java.lang.StringBuffer是线程安全的可变字符序列,一个类似于String的字符串缓冲区,
append和insert()方法修改内容
append 方法始终将这些字符添加到缓冲区的末端;
insert 方法在指定的点添加字符。
Java StringBuilder类
Java.lang.StringBuilder类是单线程可变字符序列
三者的对比
定义 | 可变性 | 效率 | 线程安全 | 操作方法 | |
String | 字符串常量 | 常量,重新赋值会生成新的对象(内存地址) | 常规方法 | ||
StringBuffer | 可变的字符序列 | 可变序列,多次修改不会产生新的未使用对象 | 较高 | 高 | append,insert等 |
StringBuilder | 可变的字符序列 | 可变序列,多次修改不会产生新的未使用对象 | 高 | 较高 | append,insert等 |
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。