導航:首頁 > 使用方法 > java字元串使用方法

java字元串使用方法

發布時間:2023-03-11 10:49:12

1. 求大神,java中字元串的所有方法和用法。

1、length() 字元串的長度
例:char chars[]={'a','b'.'c'};
String s=new String(chars);
int len=s.length();

2、charAt() 截取一個字元
例:char ch;
ch="abc".charAt(1); 返回'b'

3、 getChars() 截取多個字元
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)
sourceStart指定了子串開始字元的下標,sourceEnd指定了子串結束後的下一個字元的下標。因此, 子串包含從sourceStart到sourceEnd-1的字元。接收字元的數組由target指定,target中開始復制子串的下標值是targetStart。
例:String s="this is a demo of the getChars method.";
char buf[]=new char[20];
s.getChars(10,14,buf,0);

4、getBytes()
替代getChars()的一種方法是將字元存儲在位元組數組中,該方法即getBytes()。

5、toCharArray()

6、equals()和equalsIgnoreCase() 比較兩個字元串

7、regionMatches() 用於比較一個字元串中特定區域與另一特定區域,它有一個重載的形式允許在比較中忽略大小寫。
boolean regionMatches(int startIndex,String str2,int str2StartIndex,int numChars)
boolean regionMatches(boolean ignoreCase,int startIndex,String str2,int str2StartIndex,int numChars)

8、startsWith()和endsWith()
startsWith()方法決定是否以特定字元串開始,endWith()方法決定是否以特定字元串結束,以空格區分這些字元串。
9、equals()和==
equals()方法比較字元串對象中的字元,==運算符比較兩個對象是否引用同一實例。
例:String s1="Hello";
String s2=new String(s1);
s1.eauals(s2); //true
s1==s2;//false

10、compareTo()和compareToIgnoreCase() 比較字元串

11、indexOf()和lastIndexOf()
indexOf() 查找字元或者子串第一次出現的地方。
lastIndexOf() 查找字元或者子串是後一次出現的地方。

12、substring()
它有兩種形式,第一種是:String substring(int startIndex)
第二種是:String substring(int startIndex,int endIndex)

13、concat() 連接兩個字元串

14 、replace() 替換
它有兩種形式,第一種形式用一個字元在調用字元串中所有出現某個字元的地方進行替換,形式如下:
String replace(char original,char replacement)
例如:String s="Hello".replace('l','w');
第二種形式是用一個字元序列替換另一個字元序列,形式如下:
String replace(CharSequence original,CharSequence replacement)

15、trim() 去掉起始和結尾的空格

16、valueOf() 轉換為字元串

17、toLowerCase() 轉換為小寫

18、toUpperCase() 轉換為大寫

19、StringBuffer構造函數
StringBuffer定義了三個構造函數:
StringBuffer()
StringBuffer(int size)
StringBuffer(String str)
StringBuffer(CharSequence chars)

(1)、length()和capacity()
一個StringBuffer當前長度可通過length()方法得到,而整個可分配空間通過capacity()方法得到。

(2)、ensureCapacity() 設置緩沖區的大小
void ensureCapacity(int capacity)

(3)、setLength() 設置緩沖區的長度
void setLength(int len)

(4)、charAt()和setCharAt()
char charAt(int where)
void setCharAt(int where,char ch)

(5)、getChars()
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)

(6)、append() 可把任何類型數據的字元串表示連接到調用的StringBuffer對象的末尾。
例:int a=42;
StringBuffer sb=new StringBuffer(40);
String s=sb.append("a=").append(a).append("!").toString();
輸出:a=42!

(7)、insert() 插入字元串
StringBuffer insert(int index,String str)
StringBuffer insert(int index,char ch)
StringBuffer insert(int index,Object obj)
index指定將字元串插入到StringBuffer對象中的位置的下標。

(8)、reverse() 顛倒StringBuffer對象中的字元
StringBuffer reverse()

(9)、delete()和deleteCharAt() 刪除字元
StringBuffer delete(int startIndex,int endIndex)
StringBuffer deleteCharAt(int loc)

(10)、replace() 替換
StringBuffer replace(int startIndex,int endIndex,String str)

(11)、substring() 截取子串
String substring(int startIndex)
String substring(int startIndex,int endIndex)

2. java中字元、字元串的常用方法

char的所有方法:
static int charCount(int codePoint)
確定表示指定字元(Unicode 代碼點)所需的 char 值的數量。
char charValue()
返回此 Character 對象的值。
static int codePointAt(char[] a, int index)
返回 char 數組的給定索引上的代碼點。
static int codePointAt(char[] a, int index, int limit)
返回 char 數組的給定索引上的代碼點,該數組中只有那些具有小於 limit 的 index 值的數組元素可以使用。
static int codePointAt(CharSequence seq, int index)
返回 CharSequence 的給定索引上的代碼點。
static int codePointBefore(char[] a, int index)
返回 char 數組的給定索引前面的代碼點。
static int codePointBefore(char[] a, int index, int start)
返回 char 數組的給定索引前面的代碼點,該數組中只有那些具有大於等於 start 的 index 值的數組元素可以使用。
static int codePointBefore(CharSequence seq, int index)
返回 CharSequence 的給定索引前面的代碼點。
static int codePointCount(char[] a, int offset, int count)
返回 char 數組參數的子數組中 Unicode 代碼點的數量。
static int codePointCount(CharSequence seq, int beginIndex, int endIndex)
返回指定字元序列的文本范圍內的 Unicode 代碼點數量。
int compareTo(Character anotherCharacter)
根據數字比較兩個 Character 對象。
static int digit(char ch, int radix)
返回使用指定基數的字元 ch 的數值。
static int digit(int codePoint, int radix)
返回使用指定基數的指定字元(Unicode 代碼點)的數值。
boolean equals(Object obj)
將此對象與指定對象比較。
static char forDigit(int digit, int radix)
確定使用指定基數的特定數字的字元表示形式。
static byte getDirectionality(char ch)
返回給定字元的 Unicode 方向屬性。
static byte getDirectionality(int codePoint)
返回給定字元(Unicode 代碼點)的 Unicode 方向屬性。
static int getNumericValue(char ch)
返回指定的 Unicode 字元表示的 int 值。
static int getNumericValue(int codePoint)
返回指定字元(Unicode 代碼點)表示的 int 值。
static int getType(char ch)
返回一個指示字元的常規類別的值。
static int getType(int codePoint)
返回一個指示字元的常規類別的值。
int hashCode()
返回此 Character 的哈希碼。
static boolean isDefined(char ch)
確定字元是否被定義為 Unicode 中的字元。
static boolean isDefined(int codePoint)
確定字元(Unicode 代碼點)是否被定義為 Unicode 中的字元。
static boolean isDigit(char ch)
確定指定字元是否為數字。
static boolean isDigit(int codePoint)
確定指定字元(Unicode 代碼點)是否為數字。
static boolean isHighSurrogate(char ch)
確定給出的 char 值是否為一個高代理項代碼單元(也稱為前導代理項代碼單元)。
static boolean isIdentifierIgnorable(char ch)
確定是否應該認為指定字元是 Java 標識符或 Unicode 標識符中可忽略的一個字元。
static boolean isIdentifierIgnorable(int codePoint)
確定是否應該認為指定字元(Unicode 代碼點)是 Java 標識符或 Unicode 標識符中可忽略的一個字元。
static boolean isISOControl(char ch)
確定指定字元是否為 ISO 控制字元。
static boolean isISOControl(int codePoint)
確定引用的字元(Unicode 代碼點)是否為 ISO 控制字元。
static boolean isJavaIdentifierPart(char ch)
確定指定字元是否可以是 Java 標識符中首字元以外的部分。
static boolean isJavaIdentifierPart(int codePoint)
確定字元(Unicode 代碼點)是否可以是 Java 標識符中首字元以外的部分。
static boolean isJavaIdentifierStart(char ch)
確定是否允許將指定字元作為 Java 標識符中的首字元。
static boolean isJavaIdentifierStart(int codePoint)
確定是否允許將字元(Unicode 代碼點)作為 Java 標識符中的首字元。
static boolean isJavaLetter(char ch)
已過時。 由 isJavaIdentifierStart(char) 取代。
static boolean isJavaLetterOrDigit(char ch)
已過時。 由 isJavaIdentifierPart(char) 取代。
static boolean isLetter(char ch)
確定指定字元是否為字母。
static boolean isLetter(int codePoint)
確定指定字元(Unicode 代碼點)是否為字母。
static boolean isLetterOrDigit(char ch)
確定指定字元是否為字母或數字。
static boolean isLetterOrDigit(int codePoint)
確定指定字元(Unicode 代碼點)是否為字母或數字。
static boolean isLowerCase(char ch)
確定指定字元是否為小寫字母。
static boolean isLowerCase(int codePoint)
確定指定字元(Unicode 代碼點)是否為小寫字母。
static boolean isLowSurrogate(char ch)
確定給定 char 值是否一個低代理項代碼單元(也稱為尾部代理項代碼單元)。
static boolean isMirrored(char ch)
確定指定字元依據 Unicode 規范是否對稱。
static boolean isMirrored(int codePoint)
確定指定字元(Unicode 代碼點)依據 Unicode 規范是否對稱。
static boolean isSpace(char ch)
已過時。 由 isWhitespace(char) 取代。
static boolean isSpaceChar(char ch)
確定指定字元是否為 Unicode 空白字元。
static boolean isSpaceChar(int codePoint)
確定指定字元(Unicode 代碼點)是否為 Unicode 空白字元。
static boolean isSupplementaryCodePoint(int codePoint)
確定指定字元(Unicode 代碼點)是否在增補字元范圍內。
static boolean isSurrogatePair(char high, char low)
確定指定的 char 值對是否為有效的代理項對。
static boolean isTitleCase(char ch)
確定指定字元是否為首字母大寫字元。
static boolean isTitleCase(int codePoint)
確定指定字元(Unicode 代碼點)是否為首字母大寫字元。
static boolean isUnicodeIdentifierPart(char ch)
確定指定字元是否可以是 Unicode 標識符中首字元以外的部分。
static boolean isUnicodeIdentifierPart(int codePoint)
確定指定字元(Unicode 代碼點)是否可以是 Unicode 標識符中首字元以外的部分。
static boolean isUnicodeIdentifierStart(char ch)
確定是否允許將指定字元作為 Unicode 標識符中的首字元。
static boolean isUnicodeIdentifierStart(int codePoint)
確定是否允許將指定字元(Unicode 代碼點)作為 Unicode 標識符中的首字元。
static boolean isUpperCase(char ch)
確定指定字元是否為大寫字母。
static boolean isUpperCase(int codePoint)
確定指定字元(Unicode 代碼點)是否為大寫字母。
static boolean isValidCodePoint(int codePoint)
確定指定的代碼點是否為從 0x0000 到 0x10FFFF 范圍之內的有效 Unicode 代碼點值。
static boolean isWhitespace(char ch)
確定指定字元依據 Java 標準是否為空白字元。
static boolean isWhitespace(int codePoint)
確定指定字元(Unicode 代碼點)依據 Java 標準是否為空白字元。
static int offsetByCodePoints(char[] a, int start, int count, int index, int codePointOffset)
返回給定 char 子數組中的索引,它是從給定 index 到 codePointOffset 代碼點的偏移量。
static int offsetByCodePoints(CharSequence seq, int index, int codePointOffset)
返回給定字元序列中的索引,它是從給定 index 到 codePointOffset 代碼點的偏移量。
static char reverseBytes(char ch)
返回通過反轉指定 char 值中的位元組順序而獲得的值。
static char[] toChars(int codePoint)
將指定的字元(Unicode 代碼點)轉換成其存儲在 char 數組中的 UTF-16 表示形式。
static int toChars(int codePoint, char[] dst, int dstIndex)
將指定字元(Unicode 代碼點)轉換為其 UTF-16 表示形式。
static int toCodePoint(char high, char low)
將指定的代理項對轉換為其增補代碼點值。
static char toLowerCase(char ch)
使用取自 UnicodeData 文件的大小寫映射信息將字元參數轉換為小寫。
static int toLowerCase(int codePoint)
使用取自 UnicodeData 文件的大小寫映射信息將字元(Unicode 代碼點)參數轉換為小寫。
String toString()
返回表示此 Character 值的 String 對象。
static String toString(char c)
返回一個表示指定 char 值的 String 對象。
static char toTitleCase(char ch)
使用取自 UnicodeData 文件的大小寫映射信息將字元參數轉換為首字母大寫。
static int toTitleCase(int codePoint)
使用取自 UnicodeData 文件的大小寫映射信息將字元(Unicode 代碼點)參數轉換為首字母大寫。
static char toUpperCase(char ch)
使用取自 UnicodeData 文件的大小寫映射信息將字元參數轉換為大寫。
static int toUpperCase(int codePoint)
使用取自 UnicodeData 文件的大小寫映射信息將字元(Unicode 代碼點)參數轉換為大寫。
static Character valueOf(char c)
返回一個表示指定 char 值的 Character 實例

string所有方法:
char charAt(int index)
返回指定索引處的 char 值。
int codePointAt(int index)
返回指定索引處的字元(Unicode 代碼點)。
int codePointBefore(int index)
返回指定索引之前的字元(Unicode 代碼點)。
int codePointCount(int beginIndex, int endIndex)
返回此 String 的指定文本范圍中的 Unicode 代碼點數。
int compareTo(String anotherString)
按字典順序比較兩個字元串。
int compareToIgnoreCase(String str)
按字典順序比較兩個字元串,不考慮大小寫。
String concat(String str)
將指定字元串連接到此字元串的結尾。
boolean contains(CharSequence s)
當且僅當此字元串包含指定的 char 值序列時,返回 true。
boolean contentEquals(CharSequence cs)
將此字元串與指定的 CharSequence 比較。
boolean contentEquals(StringBuffer sb)
將此字元串與指定的 StringBuffer 比較。
static String ValueOf(char[] data)
返回指定數組中表示該字元序列的 String。
static String ValueOf(char[] data, int offset, int count)
返回指定數組中表示該字元序列的 String。
boolean endsWith(String suffix)
測試此字元串是否以指定的後綴結束。
boolean equals(Object anObject)
將此字元串與指定的對象比較。
boolean equalsIgnoreCase(String anotherString)
將此 String 與另一個 String 比較,不考慮大小寫。
static String format(Locale l, String format, Object... args)
使用指定的語言環境、格式字元串和參數返回一個格式化字元串。
static String format(String format, Object... args)
使用指定的格式字元串和參數返回一個格式化字元串。
byte[] getBytes()
使用平台的默認字元集將此 String 編碼為 byte 序列,並將結果存儲到一個新的 byte 數組中。
byte[] getBytes(Charset charset)
使用給定的 charset 將此 String 編碼到 byte 序列,並將結果存儲到新的 byte 數組。
void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin)
已過時。 該方法無法將字元正確轉換為位元組。從 JDK 1.1 起,完成該轉換的首選方法是通過 getBytes() 方法,該方法使用平台的默認字元集。
byte[] getBytes(String charsetName)
使用指定的字元集將此 String 編碼為 byte 序列,並將結果存儲到一個新的 byte 數組中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
將字元從此字元串復制到目標字元數組。
int hashCode()
返回此字元串的哈希碼。
int indexOf(int ch)
返回指定字元在此字元串中第一次出現處的索引。
int indexOf(int ch, int fromIndex)
返回在此字元串中第一次出現指定字元處的索引,從指定的索引開始搜索。
int indexOf(String str)
返回指定子字元串在此字元串中第一次出現處的索引。
int indexOf(String str, int fromIndex)
返回指定子字元串在此字元串中第一次出現處的索引,從指定的索引開始。
String intern()
返回字元串對象的規范化表示形式。
boolean isEmpty()
當且僅當 length() 為 0 時返回 true。
int lastIndexOf(int ch)
返回指定字元在此字元串中最後一次出現處的索引。
int lastIndexOf(int ch, int fromIndex)
返回指定字元在此字元串中最後一次出現處的索引,從指定的索引處開始進行反向搜索。
int lastIndexOf(String str)
返回指定子字元串在此字元串中最右邊出現處的索引。
int lastIndexOf(String str, int fromIndex)
返回指定子字元串在此字元串中最後一次出現處的索引,從指定的索引開始反向搜索。
int length()
返回此字元串的長度。
boolean matches(String regex)
告知此字元串是否匹配給定的正則表達式。
int offsetByCodePoints(int index, int codePointOffset)
返回此 String 中從給定的 index 處偏移 codePointOffset 個代碼點的索引。
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
測試兩個字元串區域是否相等。
boolean regionMatches(int toffset, String other, int ooffset, int len)
測試兩個字元串區域是否相等。
String replace(char oldChar, char newChar)
返回一個新的字元串,它是通過用 newChar 替換此字元串中出現的所有 oldChar 得到的。
String replace(CharSequence target, CharSequence replacement)
使用指定的字面值替換序列替換此字元串所有匹配字面值目標序列的子字元串。
String replaceAll(String regex, String replacement)
使用給定的 replacement 替換此字元串所有匹配給定的正則表達式的子字元串。
String replaceFirst(String regex, String replacement)
使用給定的 replacement 替換此字元串匹配給定的正則表達式的第一個子字元串。
String[] split(String regex)
根據給定正則表達式的匹配拆分此字元串。
String[] split(String regex, int limit)
根據匹配給定的正則表達式來拆分此字元串。
boolean startsWith(String prefix)
測試此字元串是否以指定的前綴開始。
boolean startsWith(String prefix, int toffset)
測試此字元串從指定索引開始的子字元串是否以指定前綴開始。
CharSequence subSequence(int beginIndex, int endIndex)
返回一個新的字元序列,它是此序列的一個子序列。
String substring(int beginIndex)
返回一個新的字元串,它是此字元串的一個子字元串。
String substring(int beginIndex, int endIndex)
返回一個新字元串,它是此字元串的一個子字元串。
char[] toCharArray()
將此字元串轉換為一個新的字元數組。
String toLowerCase()
使用默認語言環境的規則將此 String 中的所有字元都轉換為小寫。
String toLowerCase(Locale locale)
使用給定 Locale 的規則將此 String 中的所有字元都轉換為小寫。
String toString()
返回此對象本身(它已經是一個字元串!)。
String toUpperCase()
使用默認語言環境的規則將此 String 中的所有字元都轉換為大寫。
String toUpperCase(Locale locale)
使用給定 Locale 的規則將此 String 中的所有字元都轉換為大寫。
String trim()
返回字元串的副本,忽略前導空白和尾部空白。
static String valueOf(boolean b)
返回 boolean 參數的字元串表示形式。
static String valueOf(char c)
返回 char 參數的字元串表示形式。
static String valueOf(char[] data)
返回 char 數組參數的字元串表示形式。
static String valueOf(char[] data, int offset, int count)
返回 char 數組參數的特定子數組的字元串表示形式。
static String valueOf(double d)
返回 double 參數的字元串表示形式。
static String valueOf(float f)
返回 float 參數的字元串表示形式。
static String valueOf(int i)
返回 int 參數的字元串表示形式。
static String valueOf(long l)
返回 long 參數的字元串表示形式。
static String valueOf(Object obj)
返回 Object 參數的字元串表示形式

3. java中string怎麼使用

以下是關於string的七種用法,注意哦,記得要時常去查看java的API文檔,那個裡面也有很詳細的介紹

1>獲取

1.1:字元串中包含的字元數,也就是字元串的長度。
int length():獲取長度

1.2:根據位置獲取位置上某個字元。
char charAt(int index)

1.3:根據字元獲取該字元在字元串中的位置。
int indexOf(int ch):返回的是ch在字元串中第一次出現的位置。
int indexOf(int ch,int fromIndex):從fromIndex指定位置開始,獲取ch在字元串中出現的位置。

int indexOf(String str):返回的是str在字元串中第一次出現的位置。
int indexOf(String str,int fromIndex):從fromIndex指定位置開始,獲取str在字元串中出現的位置。

1.4:int lastIndexOf(String str):反向索引。

2>判斷
2.1:字元串中是否包含某一個子串。
boolean contains(str);
特殊之處:indexOf(str):可以索引str第一次出現為止,如果返回-1,表示該str不在字元串中存在。
所以,也可以用於對指定判斷是否包含。
if(str.indexOf("a")!=1)
而且該方法既可以判斷,也可以獲取出現的位置。
2.2:字元串中是否有內容。
boolean isEmpty():原理就是判斷長度是否為0。

2.3:字元串是否以指定內容開頭。
boolean startsWith(str);

2.4:字元串是否以指定內容結尾。
boolean endsWith(str);

2.5:判斷字元內容是否相同,復寫了object類中的equals方法。
boolean equals(str);

2.6:判斷內容是否相同,並忽略大小寫。
boolean.equalsIgnorecase();
3>轉換

3.1:將字元數組轉成字元串。
構造函數:String(char[])
String(char[],offset,count):將字元數組中的一部分轉成字元串
靜態方法:
static String ValueOf(char[]);
static String ValueOf(char[] data,int offset,int count);
static String valueOf(char[]);

3.2:將字元串轉成字元組
char[] tocharArray();
3.3:將位元組數組轉成字元串。
String(byte[])
String(byte[],offset,count):將位元組數組中的一部分轉成字元串

3.4:將字元串轉成位元組數組。
byte[] getBytes()
3.5:將基本數據類型轉成字元串,
static String valueOf(int)
static String valueOf(double)
// 3+"" 與 String.valueOf(3)的值是一樣的
特殊:字元串和位元組數組在轉換過程中,是可以指定編碼的。
4>替換
String replace(oldchar,newchar);
5>切割
String[] split(regex);
6>子串。獲取字元串中的而一部分
String subString(begin);
String subString(begin,end);
7>轉換,去除空格,比較。

7.1:將字元串轉成大寫或小寫
String toUpperCsae() 大轉小
String toLowerCsae() 小轉大
7.2:將字元串兩端的多個空格去除
String trim();
7.3:對兩個字元串進行自然順序的比較
int compareTo(string);
請看如下代碼,下面的代碼都是針對上面string七種用法而進行一一舉例說明:

復制代碼 代碼如下:

class StringMethodDemo
{
public static void method_Zhuanhuan_Qukong_Bijiao()
{
String s = " hello Java ";

//列印結果是:(hello和java前後門都有空格)hello java
sop(s.toUpperCase());

//列印結果是:(HELLO和JAVA前後門都有空格)HELLO JAVA
sop(s.toLowerCase());
//列印及結果是:不帶空格的「hello java」
sop(s.trim());
//比較數的大寫,列印結果是:1,因為b對應ascii值是98,
//a對應是97,所以b-a=1
String s1 = "abc";
String s2 = "aaa";
sop(s1.compareTo(s2));
}
public static void method_sub()
{
String s = "abcdef";
//列印結果是:cdef,從指定位置開始到結尾。如果角標不存在,會出現字元串角標越界。
sop(s.substring(2));
//列印結果是:cd,包含頭,不包含尾。
sop(s.substring(2,4));
}
public static void method_split()
{
String s = "zhangsan,lisi,wangwu";
String[] arr = s.split(",");
for(int x=0; x<arr.length; x++)
{
sop(arr[x]);
}
}
public static void method_replace()
{
String s = "hello java";
//String s1 = s.replace('a','n');
//String s1 = s.replace('w','n'); 如果要替換的字元不存在,返回的還是原串

String s1 = s.replace("java","world");//列印結果是:hello world
sop("s="+s); //列印結果是:hello java因為字元串一旦被初始化,值就不可被改變
sop("s1="+s1);//列印結果是:hello jnvn
}
public static void method_trans()
{
char[] arr = {'a','b','c','d','e','f'};
String s = new String(arr,1,3);
sop("s="+s);//列印結果是:bcd
String s1 = "zxcvbnm";
char[] chs = s1.toCharArray();
for(int x=0; x<chs.length; x++)
{
sop("ch="+chs[x]);//列印結果是:ch=z,x,c,v,b,n,m
}
}
public static void method_is()
{
String str = "ArrayDemo.java";
//判斷文件名稱是否是Array單詞開頭
sop(str.startsWith("Array"));

//判斷文件名稱是否是.java的文件
sop(str.endsWith(".java"));

//判斷文件中是否包含Demo
sop(str.contains("Demo"));
}

public static void method_get()
{
String str = "abcdeakpf";
//長度
sop(str.length());
//根據索引獲取字元
sop(str.charAt(4));
//sop(str.charAt(40));當訪問到字元串中不存在的角標時會發生(字元串角標越界異常)
//根據字元獲取索引
//sop(str.indexOf('a'));
sop(str.indexOf('a',3));//列印的是5,因為角標3是d,
//所以從d後面開始找a,第5個角標是a
//sop(str.indexOf('t',3))列印:-1,如果沒有找到角標,返回-1

//反向索引一個字元出現的位置(從右往左查找,但是角標還是從左開始)
sop(str.lastIndexOf("a"));
}
public static void main(String[] args)
{
method_Zhuanhuan_Qukong_Bijiao();
//method_sub();
//method_split();
//method_replace();
//method_trans();
//method_is();
//method_get();
/*
String s1 = "abc";
String s2 = new String("abc");
String s3 = "abc";
System.out.println(s1==s2);
System.out.println(s1==s3);
*/
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}

4. java8中的字元串的用法

1.
首先String不屬於8種基本數據類型,String是一個對象。

因為對象的默認值是null,所以String的默認值也是null;但它又是一種特殊的對象,有其它對象沒有的一些特性。

2.
new String()和new String(「」)都是申明一個新的空字元串,是空串不是null;

3.
String str=」kvill」;
String
str=new String (「kvill」);的區別:

在這里,我們不談堆,也不談棧,只先簡單引入常量池這個簡單的概念。

常量池(constant
pool)指的是在編譯期被確定,並被保存在已編譯的.class文件中的一些數據。它包括了關於類、方法、介面等中的常量,也包括字元串常量。

看例1:

String
s0=」kvill」;
String
s1=」kvill」;
String
s2=」kv」 + 「ill」;
System.out.println(
s0==s1 );
System.out.println(
s0==s2 );
結果為:

true
true
首先,我們要知道Java會確保一個字元串常量只有一個拷貝。

因為例子中的s0和s1中的」kvill」都是字元串常量,它們在編譯期就被確定了,所以s0==s1為true;而」kv」和」ill」也都是字元串常量,當一個字元串由多個字元串常量連接而成時,它自己肯定也是字元串常量,所以s2也同樣在編譯期就被解析為一個字元串常量,所以s2也是常量池中
」kvill」的一個引用。

所以我們得出s0==s1==s2;

用new
String() 創建的字元串不是常量,不能在編譯期就確定,所以new String() 創建的字元串不放入常量池中,它們有自己的地址空間。

看例2:

String
s0=」kvill」;
String
s1=new String(」kvill」);
String
s2=」kv」 + new String(「ill」);
System.out.println(
s0==s1 );
System.out.println(
s0==s2 );
System.out.println(
s1==s2 );
結果為:

false
false
false
例2中s0還是常量池中」kvill」的應用,s1因為無法在編譯期確定,所以是運行時創建的新對象」kvill」的引用,s2因為有後半部分new
String(「ill」)所以也無法在編譯期確定,所以也是一個新創建對象」kvill」的應用;明白了這些也就知道為何得出此結果了。

4.
String.intern():

再補充介紹一點:存在於.class文件中的常量池,在運行期被JVM裝載,並且可以擴充。String的intern()方法就是擴充常量池的一個方法;當一個String實例str調用intern()方法時,Java查找常量池中是否有相同Unicode的字元串常量,如果有,則返回其的引用,如果沒有,則在常量池中增加一個Unicode等於str的字元串並返回它的引用;看例3就清楚了

例3:

String
s0= 「kvill」;
String
s1=new String(」kvill」);
String
s2=new String(「kvill」);
System.out.println(
s0==s1 );
System.out.println(
「**********」 );
s1.intern();
s2=s2.intern();
//把常量池中「kvill」的引用賦給s2
System.out.println(
s0==s1);
System.out.println(
s0==s1.intern() );
System.out.println(
s0==s2 );
結果為:

false
**********
false
//雖然執行了s1.intern(),但它的返回值沒有賦給s1
true
//說明s1.intern()返回的是常量池中」kvill」的引用
true
最後我再破除一個錯誤的理解:

有人說,「使用String.intern()方法則可以將一個String類的保存到一個全局String表中,如果具有相同值的Unicode字元串已經在這個表中,那麼該方法返回表中已有字元串的地址,如果在表中沒有相同值的字元串,則將自己的地址注冊到表中「如果我把他說的這個全局的
String表理解為常量池的話,他的最後一句話,「如果在表中沒有相同值的字元串,則將自己的地址注冊到表中」是錯的:

看例4:

String
s1=new String("kvill");
String
s2=s1.intern();
System.out.println(
s1==s1.intern() );
System.out.println(
s1+" "+s2 );
System.out.println(
s2==s1.intern() );
結果:

false
kvill
kvill
true
在這個類中我們沒有聲名一個」kvill」常量,所以常量池中一開始是沒有」kvill」的,當我們調用s1.intern()後就在常量池中新添加了一個」kvill」常量,原來的不在常量池中的」kvill」仍然存在,也就不是「將自己的地址注冊到常量池中」了。

s1==s1.intern()為false說明原來的「kvill」仍然存在;

s2現在為常量池中「kvill」的地址,所以有s2==s1.intern()為true。

5.
關於equals()和==:

這個對於String簡單來說就是比較兩字元串的Unicode序列是否相當,如果相等返回true;而==是比較兩字元串的地址是否相同,也就是是否是同一個字元串的引用。

6.
關於String是不可變的

這一說又要說很多,大家只要知道String的實例一旦生成就不會再改變了,比如說:String
str=」kv」+」ill」+」 「+」ans」;
就是有4個字元串常量,首先」kv」和」ill」生成了」kvill」存在內存中,然後」kvill」又和」
「 生成 」kvill 「存在內存中,最後又和生成了」kvill
ans」;並把這個字元串的地址賦給了str,就是因為String的「不可變」產生了很多臨時變數,這也就是為什麼建議用StringBuffer的原因了,因為StringBuffer是可改變的。

閱讀全文

與java字元串使用方法相關的資料

熱點內容
寶寶脖子紅疹快速消退方法 瀏覽:14
傳統席架怎麼用草席的編織方法 瀏覽:41
入戶門對人家的門低解決方法圖解 瀏覽:28
常用的墊層中線投測方法有哪些 瀏覽:357
古詩詞鑒賞方法及技巧 瀏覽:55
男膀胱疼痛怎麼治療方法 瀏覽:115
雲南腌豬肉的腌制方法視頻 瀏覽:562
賭運不好怎麼轉運方法 瀏覽:230
數據結構方法的技術有哪些 瀏覽:670
卒中病人的快速判斷方法 瀏覽:620
調色平塗的正確方法 瀏覽:130
防目鏡使用方法視頻 瀏覽:246
襯衣掖入褲子正確方法 瀏覽:657
canmake腮紅使用方法 瀏覽:665
入黨外調最簡單的方法 瀏覽:937
電腦蝸牛快速緩解方法 瀏覽:898
山楂干功效與作用及食用方法 瀏覽:753
如何用簡單的方法掌握值域 瀏覽:35
做信息如何給企業賦能提供方法 瀏覽:915
excel公式的使用方法 瀏覽:995