在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()
方法將字符串構建器轉換爲字符串。