一、Java String类
字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。
1.1、创建字符串
创建字符串最简单的方法如下:
String yunban="云班教育";
在代码中遇到字符串常量时,这里的值是 "云班教育"",编译器会使用该值创建一个 String 对象。
和其它对象一样,可以使用关键字和构造方法来创建 String 对象。
String 类有 11 种构造方法,这些方法提供不同的参数来初始化字符串,比如提供一个字符数组参数:
实例:
public class StringDemo{
public static void main(String args[]){
char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'};
String helloString = new String(helloArray);
System.out.println( helloString );
}
}
以上实例运行结果如下:
ronoob
注意:String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。
1.2、字符串长度
用于获取有关对象的信息的方法称为访问器方法。
String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数。
实例:
public class StringDemo {
public static void main(String args[]) {
String site = "www.baidu.com";
int len = site.length();
System.out.println( "百度网址长度 : " + len );
}
}
以上实例运行结果如下:
百度网址长度:13
1.3、连接字符串
String提供了两个连接字符串的方法:
string1.concat(string2);
返回 string2 连接 string1 的新字符串。也可以对字符串常量使用 concat() 方法,如:
"我的名字是 ".concat("Runoob");
更常用的是使用'+'操作符来连接字符串,如:
"Hello," + " runoob" + "!"
结果如下:
Hello,runoob!
实例:
public class StringDemo {
public static void main(String args[]) {
String string1 = "百度网址:";
System.out.println("1、" + string1 + "www.baidu.com");
}
}
以上实例运行结果如下:
百度网址:www.baidu.com
1.4、创建格式化字符串
我们知道输出格式化数字可以使用 printf() 和 format() 方法。
String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。
String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。
如下所示:
System.out.printf("浮点型变量的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
"is %s", floatVar, intVar, stringVar);
也可以这样写:
String fs;
fs = String.format("浮点型变量的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
" %s", floatVar, intVar, stringVar);
二、String方法
2.1、String说明
Java 中使用 String 这个类来表示多个字符,表示方式是用双引号把要表示的字符串引起来,字符串里面的字符数量是任意多个。字符本身符合Unicode标准,且上述char类型的反斜线符号(转义字符)适用于String。与C和C++不同,String不能用 \0作为结束。String 的文字应用双引号封闭。
如下所示:
“The quick brown fox jumped over the lazy dog.” char和String类型变量的声明和初始化如下所示:
char ch = ‘A'; // 声明并初始化一个字符变量
char ch1,ch2 ; //声明两个字符变量
// 声明两个字符串变量并初始化它们
String greeting = "Good Morning !! \n" ;
String err_msg = "Record Not Found !" ;
String str1,str2 ; // 声明两个字符串变量
String s = “12abc”; //基本的字符串型
String s = “”; //表示空串
注意:
1)String 不是原始的数据类型,而是一个类(class)
2)String 包含的字符数量是任意多个,而字符类型只能是一个。要特别注意:”a” 表示的是字符串,而’a’表示的是字符类型,它们具有不同的功能。
3)String 的默认值是 null
2.2、String方法
下面是String 支持的方法
2.3、String 解析实例
String 类是不可改变的解析,例如:
String s = "Google";
System.out.println("s = " + s);
s = "Runoob";
System.out.println("s = " + s);
以上实例运行结果如下:
Runoob
从结果上看是改变了,但为什么门说String对象是不可变的呢?
原因在于实例中的 s 只是一个 String 对象的引用,并不是对象本身,当执行 s = "Runoob"; 创建了一个新的对象 "Runoob",而原来的 "Google" 还存在于内存中。
2.2、length()和size()的区别
1)length()方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法;
2)length属性是针对Java中的数组来说的,要求数组的长度可以用其length属性;
3)java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看。
实例:
public static void main(String[] args) {
String []list={"ma","cao","yuan"};
String a="macaoyuan";
System.out.println(list.length);
System.out.println(a.length());
List array=new ArrayList();
array.add(a);
System.out.println(array.size());
}
以上实例输出结果如下:
3
9
1
三、Java StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
实例:
public class Test{
public static void main(String args[]){
StringBuffer sBuffer = new StringBuffer("百度官网:");
sBuffer.append("www");
sBuffer.append(".baidu");
sBuffer.append(".com");
System.out.println(sBuffer);
}
}
以上实例运行结果如下:
百度官网:www.baidu.com
3.1、StringBuffer方法
StringBuffer主要方法:
3.2、String和StringBuffer的区别
1)Java 中 StringBuffer 和 String 是有一定的区别的,首先,String 是被 final 修饰的,他的长度是不可变的,就算调用 String 的concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象,而 StringBuffer 的长度是可变的,调用StringBuffer 的 append 方法,来改变 StringBuffer 的长度,并且,相比较于 StringBuffer,String 一旦发生长度变化,是非常耗费内存的。
2)String 长度大小不可变
StringBuffer 和 StringBuilder 长度可变
StringBuffer 线程安全 StringBuilder 线程不安全
StringBuilder 速度快