Java基础4–字符串
Java String 类
字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。
创建字符串
创建字符串最简单的方式如下:
String str = "Runoob";
用构造函数创建字符串:
String str2=new String("Runoob");
String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上:
注意:String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了;
如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类.
字符串长度
用于获取有关对象的信息的方法称为访问器方法。
String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数。
public class StringDemo {
public static void main(String args[]) {
String site = "www.runoob.com";
int length = site.length();
System.out.println(length);
}
}
//运行结果为14
连接字符串
String 类提供了连接两个字符串的方法:
//返回 string2 连接 string1 的新字符串
string1.concat(string2);
//更常用的是使用'+'操作符来连接字符串
"Hello," + " runoob" + "!"
创建格式化字符串
String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。
String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。
String fs;
fs = String.format("浮点型变量的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
" %s", floatVar, intVar, stringVar);
String 方法
下面是String的一些常用方法,详情请见Java API文档。
序号 | 方法描述 |
---|---|
1 | char charAt(int index) 返回指定索引处的 char 值。 |
2 | int compareTo(Object o) 把这个字符串和另一个对象比较。 |
3 | String concat(String str) 将指定字符串连接到此字符串的结尾。 |
4 | boolean equals(Object anObject) 将此字符串与指定的对象比较。 |
5 | int hashCode() 返回此字符串的哈希码。 |
6 | int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。 |
7 | int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。 |
8 | int length() 返回此字符串的长度。 |
9 | boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式。 |
10 | String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 |
11 | [String] split(String regex) 根据给定正则表达式的匹配拆分此字符串。 |
12 | [String] split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串。 |
13 | String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。 |
14 | String toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 |
15 | String toString() 返回此对象本身(它已经是一个字符串!)。 |
16 | String toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 |
17 | static String valueOf(primitive data type x) 返回给定data type类型x参数的字符串表示形式。 |
18 | contains(CharSequence chars) 判断是否包含指定的字符系列。 |
19 | isEmpty() 判断字符串是否为空。 |
Java StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。
StringBuilder 和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问),但StringBuilder 相较于 StringBuffer 有速度优势。
实例演示
//StringBuilder类
public class RunoobTest{
public static void main(String args[]){
StringBuilder sb = new StringBuilder(10);
sb.append("Runoob..");
System.out.println(sb);
sb.append("!");
System.out.println(sb);
sb.insert(8, "Java");
System.out.println(sb);
sb.delete(5,8);
System.out.println(sb);
}
}
图解
在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
public class Test{
public static void main(String args[]){
StringBuffer sBuffer = new StringBuffer("网页:");
sBuffer.append("www");
sBuffer.append(".ccut");
sBuffer.append(".com");
System.out.println(sBuffer);
}
}
//运行结果:
//网页:www.ccut.com
StringBuffer 方法
下面是StringBuffer 类支持的主要方法:
序号 | 方法描述 |
---|---|
1 | public StringBuffer append(String s) 将指定的字符串追加到此字符序列。 |
2 | public StringBuffer reverse() 将此字符序列用其反转形式取代。 |
3 | public delete(int start, int end) 移除此序列的子字符串中的字符。 |
4 | public insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中。 |
5 | insert(int offset, String str) 将 str 参数的字符串插入此序列中。 |
6 | replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。 |