字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串。在程序开
发中字符串无处不在,如用户登陆时输入的用户名、密码等使用的就是字符串。其实,在前面的章节中我们就已经使
用了字符串,例如我们在控制台中输出的 "Hello World"等。
在Java中,字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中。默认情况下,该包被自动导入
所有的程序。
java.lang.String类代表不可变的字符序列,"xxxx"为该类的一个对象。
String类常见的构造方法有:
1)String(String original):创建一个String对象为original的拷贝;
2)String(char[] value):用一个字符数组创建一个String对象;
3)String(char[] value,int offset,int count):用一个字符数组从offset项开始的count个字符序列创建一个String对
象;
创建字符串的简单的方式如下:
String greeting = "Hello world!";
在代码中遇到字符串常量时,这里的值是"Hello world!",编译器会使用该值创建一个String对象。创建一个字符
串对象greeting="Hello World!";时,Java运行时(运行中JVM)会拿着这个"imooc"Hello World!;在String池中找是否存
在内容相同的字符串对象,如果不存在,则在池中创建一个字符串"Hello World!";,否则,不在池中添加。
和其它对象一样,可以使用关键字和构造方法来创建String对象。String类有11种构造方法,这些方法提供不同
的参数来初始化字符串,使用new关键字来创建对象,则一定会(在堆区或栈区)创建一个新的对象。这里就是直接
创建字符串对象。比如提供一个字符数组参数:
public class Test{
public static void main(String[] args){
//创建字符数组
char[] helloArray = {'h', 'e', 'l', 'l', 'o', '.'};
//使用构造方法创建字符串
String helloString = new String(helloArray);
System.out.println(helloString);
}
}
以上实例编译运行结果如下:
注意:String类是不可改变的,所以你一旦创建了String对象,那它的值就无法改变了。 String 对象创建后则不能
被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。如果需要对字符串做很多修改,
那么应该选择使用StringBuffer类或StringBuilder 类。
用于获取有关对象的信息的方法称为访问器方法。String类的一个访问器方法是length()方法,它返回字符串对象
包含的字符数。
下面的代码执行后,len变量等于17:
public class Test{
public static void main(String[] args){
String palindrome = "Dot saw I was Tod";
int len = palindrome.length();
System.out.println( "String Length is : " + len );
}
}
以上实例编译运行结果如下:
String类提供了连接两个字符串的方法:
(1)string1.concat(string2);
返回string2连接string1的新字符串。也可以对字符串常量使用concat()方法,如:
"My name is ".concat("Zara");
结果如下:
My name is Zara
(2)更常用的是使用'+'操作符来连接字符串,如:
"Hello," + " world" + "!"
结果如下:
"Hello, world!"
下面是一个例子:
public class Test{
public static void main(String[] args){
String string1 = "saw I was ";
System.out.println("Dot " + string1 + "Tod");
}
}
以上实例编译运行结果如下:
Dot saw I was Tod
我们知道输出格式化数字可以使用printf()和format()方法。String类使用静态方法format()返回一个String对象而不
是PrintStream对象。String类的静态方法format()能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。
如下所示:
System.out.printf("The value of the float variable is " +
"%f, while the value of the integer " +
"variable is %d, and the string " +
"is %s", floatVar, intVar, stringVar);
你也可以这样写:
String fs;
fs = String.format("The value of the float variable is " +
"%f, while the value of the integer " +
"variable is %d, and the string " +
"is %s", floatVar, intVar, stringVar);
System.out.println(fs);
下面是String类支持的方法,更多详细,参看Java API文档: