在Java编程中普遍使用的字符串是一系列字符,在Java编程语言中,字符串是对象。html
Java平台提供String类来建立和操做字符串。java
建立字符串的最直接方法是编写:编程
String greeting = "Hello world!";
在这种状况下,"Hello world!"
是一个字符串文字 — 代码中的一系列字符,用双引号括起来,每当它在代码中遇到字符串文字时,编译器就会建立一个带有其值的String
对象 — 在本例中为Hello world!
。segmentfault
与任何其余对象同样,你能够使用new
关键字和构造函数建立String
对象,String
类有13个构造函数,容许你使用不一样的源提供字符串的初始值,例如字符数组:api
char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.' }; String helloString = new String(helloArray); System.out.println(helloString);
此代码段的最后一行显示hello.
。数组
注意:String
类是不可变的,所以一旦建立,就没法更改String
对象,String
类有许多方法,其中一些将在下面讨论,彷佛能够修改字符串,因为字符串是不可变的,所以这些方法真正作的是建立并返回包含操做结果的新字符串。
用于获取对象信息的方法称为访问器方法,能够与字符串一块儿使用的一种访问器方法是length()
方法,它返回字符串对象中包含的字符数,在执行如下两行代码后,len
等于17
:oracle
String palindrome = "Dot saw I was Tod"; int len = palindrome.length();
palindrome
是一个对称的单词或句子 — 它向前和向后拼写相同,忽略大小写和标点符号,这是一个简短而低效的程序来反转palindrome
字符串,它调用String
方法charAt(i)
,它返回字符串中的第i
个字符,从0开始计数。编程语言
public class StringDemo { public static void main(String[] args) { String palindrome = "Dot saw I was Tod"; int len = palindrome.length(); char[] tempCharArray = new char[len]; char[] charArray = new char[len]; // put original string in an // array of chars for (int i = 0; i < len; i++) { tempCharArray[i] = palindrome.charAt(i); } // reverse array of chars for (int j = 0; j < len; j++) { charArray[j] = tempCharArray[len - 1 - j]; } String reversePalindrome = new String(charArray); System.out.println(reversePalindrome); } }
运行该程序会产生如下输出:函数
doT saw I was toD
要完成字符串反转,程序必须将字符串转换为字符数组(第一个for
循环),将数组转换为第二个数组(第二个for
循环),而后再转换回字符串,String
类包含一个方法getChars()
,用于将字符串或字符串的一部分转换为字符数组,所以咱们能够在上面的程序中替换第一个for
循环:ui
palindrome.getChars(0, len, tempCharArray, 0);
String类包括用于链接两个字符串的方法:
string1.concat(string2);
这将返回一个新字符串,该字符串为string1
,并在末尾添加了string2
。
你还能够将concat()
方法与字符串文字一块儿使用,以下所示:
"My name is ".concat("Rumplestiltskin");
字符串一般使用+
运算符链接,如:
"Hello," + " world" + "!"
结果是:
"Hello, world!"
+
运算符普遍用于打印语句,例如:
String string1 = "saw I was "; System.out.println("Dot " + string1 + "Tod");
这将打印:
Dot saw I was Tod
这种链接能够是任何对象的混合,对于不是String
的每一个对象,调用其toString()
方法将其转换为String
。
注意:Java编程语言不容许文字字符串跨越源文件中的行,所以必须在多行字符串中的每行末尾使用+
链接运算符,例如:
String quote = "Now is the time for all good " + "men to come to the aid of their country.";
使用+
链接运算符在行之间断开字符串在print
语句中很是常见。
你已经看到使用printf()
和format()
方法来打印带有格式化数字的输出,String
类有一个等效的类方法format()
,它返回一个String
对象而不是一个PrintStream
对象。
使用String
的static 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);
字符串是一系列字符,普遍用于Java编程,在Java编程语言中,字符串是对象,String类有60多个方法和13个构造函数。
最多见的状况是,建立一个带有以下语句的字符串:
String s = "Hello world!";
而不是使用其中一个String
构造函数。
String类有许多方法能够查找和检索子字符串,而后能够使用+
链接运算符轻松地将它们从新组合成新的字符串。
String类还包括许多实用方法,其中包括split()
、toLowerCase()
、toUpperCase()
和valueOf()
。后一种方法在将用户输入字符串转换为数字时是必不可少的,Number
子类还具备将字符串转换为数字的方法,反之亦然。
除了String
类以外,还有一个StringBuilder类,使用StringBuilder
对象有时比使用字符串更有效,StringBuilder
类提供了一些对字符串有用的方法,其中包括reverse(),可是,一般,String
类具备更普遍的方法。
能够使用StringBuilder
构造函数将字符串转换为字符串构建器,能够使用toString()
方法将字符串构建器转换为字符串。