日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Java String 字符串

發布時間:2025/3/21 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java String 字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

轉載自:http://my.oschina.net/brucelee80/blog

String

? ? String是引用類型而非基本數據類型,代表不可變的字符序列。

? ? String對象的創建,比如:

? ? String str1 = new String(“Java”); // 其他構造方法請參考API

? ? 其中的”Java”是字面量(直接量),上面的語句實際創建了兩個String對象,一個是”Java”對象,存儲在常量池中,一個是new時在堆中分配的內存。這顯然有點浪費,由于字符串是比較常用的對象,所以Java提供了一種簡潔有效的特殊語法:

? ? String str2 = “Java SE7”;

? ? 例子:直接量”Java”分配在常量池,且會被復用。

??????????????String?s1?=?"Java";String?s2?=?"Java";System.out.println(s1?==?s2);//?trueString?s3?=?new?String("Java");String?s4?=?new?String("Java");System.out.println(s3?==?s4);//?false.System.out.println(s3.equals(s4));//?true.重寫了object的方法。

?

String常用方法

方法

舉例

int length()

? 返回字符串的長度

"Java".length(); // 4

boolean isEmpty()

? 當且僅當length()為0時,返回true

"Java".isEmpty(); // false

"".isEmpty(); // true

char charAt(int index)

? 返回字符串中索引index(從0開始)的字符。

"Java".charAt(0); // J

"Java".charAt(4); // 報錯,StringIndexOutOfBoundsException,因為最大索引是3

int indexOf(String str)

int indexOf(String str, int fromIndex)

int indexOf(int ch)

int indexOf(int ch, int fromIndex)

? 返回指定字符或字符串的首次出現的索引位置(fromIndex表示從此索引開始的子字符串,否則從0開始,也就是整個字符串),如果沒找到返回-1

"Java".indexOf("a"); // 1

"Java".indexOf("a", 2); // 3

"Java".indexOf('a'); // 1

"Java".indexOf('a', 2); // 3

"Java".indexOf('b', 2); // -1

int lastIndexOf(String str)

int lastIndexOf(String str, int fromIndex)

int lastIndexOf(int ch)

int lastIndexOf(int ch, int fromIndex)

? 與indexOf類似,不同的是反向查找,也就是最后一次而不是首次出現。

"Java".lastIndexOf('a'); // 3

boolean equals(Object obj)

boolean equalsIgnoreCase(String anotherString)

? 返回兩個字符串(對象)是否相等,前者區分大小寫,后者不區分大小寫。

"Java".equals("Java"); // true

"Java".equalsIgnoreCase("JAVA"); // true

boolean matches(String regex)

? 返回字符串是否匹配給定的正則表達式

"Java".matches("^[J][a-zA-Z]*[a]$"); // true

boolean contains(CharSequence s)

? 返回字符串是否包含指定字符序列

"Java".contains("Ja"); // true

boolean startsWith(String prefix)

boolean startsWith(String prefix, int toffset)

boolean endsWith(String suffix)

? 返回字符串是否以指定字符串結束或開始(int toffset表示從此索引開始的子字符串,否則從0開始,也就是整個字符串)

"Java".startsWith("J");// true

"Java".startsWith("a", 1);// true

"Java".endsWith("a");// true

String toUpperCase()

String toLowerCase()

? 返回字符串大寫(小寫)的形式

"Java".toUpperCase();// JAVA

"Java".toLowerCase();// java

String substring(int beginIndex)

String substring(int beginIndex, int endIndex)

? 返回字符串的子串,索引從beginIndex開始,endIndex結束(無endIndex參數,表示到字符串末尾結束)

"Java".substring(2); // va

"Java".substring(0, 2);// Ja

// 包括0,但不包括2

String trim()

? 返回去掉字符串首位空格后的字符串

"?? J? ava?? ? ".trim();// J? ava

返回字符串被替換后的字符串

String replace(char oldChar, char newChar)

? 替換字符oldChar為newChar

String replace(CharSequence target, CharSequence ? replacement)

? 替換字符串target為replacement

String replaceAll(String regex, String replacement)

? 替換所有匹配正則表達式regex的字符串為replacement

String replaceFirst(String regex, String replacement)

? 只替換第一次出現的匹配正則表達式regex的字符串為replacement

"Java".replace('a', 'A'); // JAvA

"Java".replace("Ja", "JA");// JAva

"Java".replaceAll("[a]", "A");// JAvA

"Java".replaceFirst("[a]", "A");// JAva

String valueOf(int i)

String valueOf(long l)

? 返回參數的字符串形式

String.valueOf(123); // "123"

String[] split(String regex)

? 返回字符串按指定分隔符分割之后的字符串數組

"Java".split("[a]");// {"J","v"}

char[] toCharArray()

String valueOf(char[] data)

? 字符串和字符數組進行轉換,字符串其實就是字符序列

char[] c = "Java".toCharArray(); // {'J','a','v','a'}

String.valueOf(c); // Java

String concat(String str)

? 返回兩個字符串連接之后的字符串

"Java".concat(" SE7"); // Java SE7

int compareTo(String anotherString)

int compareToIgnoreCase(String str)

? 返回兩個字符串比較的結果,小于返回-1,大于返回1,等于返回0。比較方法按字典順序(Unicode值)比較

"abc".compareTo("abd");// 1

"abc".compareToIgnoreCase("ABC");// 0

byte[] getBytes()

byte[] getBytes(Charset charset)

? 返回按照指定編碼格式的byte序列,不指定編碼格式表示平臺默認的字符集(字符串是字符序列,字符是由二進制數進行編碼得到)

System.out.println("Java".getBytes()[1]); // 97

?

StringBuilder和StringBuffer

? ? 由于String類是不可變類,任何對String的改變都會引發新的String對象的生成,會生成多余的對象,比如”A”+”B”,實際生成了3個對象,A、B和AB,而我們希望的是不要生成對象AB,而是直接將A對象的內容拼接成AB,為了解決這些效率問題,Java使用了StringBuffer類和StringBuilder類來表示可變的字符序列,對這兩個類進行內容的改變,不會產生中間的臨時對象。

? ? StringBuilder和StringBuffer的區別是:StringBuilder是線程非安全的。而StringBuffer是線程安全的,故此,也降低了它的處理性能。 如果不存在線程安全問題,建議使用StringBuilder,因為StringBuffer因需要保證線程安全而會有性能損耗。

? ? 使用的比較多的是它們的append方法,往后追加字符串;

? ? inset方法,往指定位置插入字符串;

? ? toString()方法,將它們轉換成String類。

??????????????StringBuffer?sb?=?new?StringBuffer("Java");sb.append("SE");?//?JavaSEsb.append("7");?//?JavaSE7sb.insert(4,?"?");?//?Java?SE7String?s?=???sb.toString();?//?Java?SE7

? ?

轉載自:http://my.oschina.net/brucelee80/blog

轉載于:https://my.oschina.net/brucelee80/blog/284256

總結

以上是生活随笔為你收集整理的Java String 字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。