Java中的字元串操作類【String】
7.1.String類如何建立對象,有哪些常用方法?
String類---表示一個字元串類【處理字元串資料的操作方法】
String類是使用final修飾符修飾的,說明它沒有子類,不可被繼承。
public final class String
Java程式中的所有字元串文字(例如"abc" )都被實作為此類的執行個體。
字元串不變; 它們的值在建立後不能被更改。
String類的構造方法:
- String() 初始化新建立的 String對象,使其表示空字元序列。
- String(byte[] bytes, int offset, int length) 通過使用平台的預設字元集解碼指定的位元組子陣列來構造新的 String 。
- String(char[] value, int offset, int count) 配置設定一個新的 String ,其中包含字元數組參數的子陣列中的字元。
4.String(String original) 初始化新建立的String對象,使其表示與參數相同的字元序列; 換句話說,新建立的字元串是參數字元串的副本。
String(StringBuffer buffer) 配置設定一個新的字元串,其中包含目前包含在字元串緩沖區參數中的字元序列。 |
String(StringBuilder builder) 配置設定一個新的字元串,其中包含目前包含在字元串建構器參數中的字元序列。 |
例如:
package com.wangxing.test1;
public class TestString {
public static void main(String[] args) {
//String的構造方法
//1、String()建立一個沒有初始值的空字元串對象
String str1=new String();
//2.String(byte[] bytes, int offset, int length)
//通過位元組數組建立一個字元串對象
//參數1--位元組數組--用來建立字元串資料的位元組數組
//參數2--int--位元組數組的開始位置【位元組數組的下标-0】
//參數3--int--位元組數組中的元素個數
//将位元組數組從開始位置數起,數指定的個數的資料轉換成字元串
byte bytearr[]= {97,98,99,100};
String str2=new String(bytearr,0,4);
System.out.println(str2);
//3.String(char[] value, int offset, int count)
//通過字元數組建立一個字元串對象
//參數1--字元數組--用來建立字元串資料的字元數組
//參數2--int--字元數組的開始位置【位元組數組的下标-0】
//參數3--int--字元數組中的元素個數
char chararr[]= {'h','e','l','l','o'};
String str3=new String(chararr,2,3);
System.out.println(str3); //llo
//4.String(String original)通過字元串常量建立一個字元串對象
//字元串常量--java程式中雙引号包圍的就是字元串常量 例如:"hello", ""
String str4=new String("hello");
//String str4=new String("hello");建立出幾個對象?
//2個對象
//第一個對象"hello"----記憶體中的字元串常量池
//第二個對象new String("hello")---記憶體中的堆區
//5.我們還可以使用與基本資料類型一樣的方式來建立String對象
String str5 = "abc";
//上面的程式等價于
char data[] = {'a', 'b', 'c'};
String st6 = new String(data,0,data.length);
//String str5 = "abc";等價于String str5=new String("abc");?
}
}
String的常用方法:
1.char charAt(int index) 從原始字元串中得到指定位置的字元元素。
2.String concat(String str)将指定的字元串連接配接到該字元串的末尾。
3.boolean contains(CharSequence s)判斷指定的字元串資料是否在原始字元串中存在
4.boolean endsWith(String suffix)測試此字元串是否以指定的字尾結尾。
5.boolean startsWith(String prefix)測試此字元串是否以指定的字首開頭。
6.byte[] getBytes() 将字元串通過預設的字元編碼轉換成位元組數組
byte[] getBytes(String charsetName)将字元串通過指定的字元編碼轉換成位元組數組
7.int indexOf(String str) 傳回指定子字元串第一次出現在字元串内的索引位置
8.lastIndexOf(String str)傳回指定子字元串最後一次出現的字元串中的索引。
9.boolean isEmpty()判斷字元串是否為空串,此方法為true時,字元串長度一定為0
10.int length() 傳回此字元串的長度。
11.boolean matches(String regex) 判斷字元串資料是否符合正規表達式
12.String replace(CharSequence old, CharSequence new) 将與字面目标序列比對的字元串的每個子字元串替換為指定的字面替換序列
13.String[] split(String regex)通過指定的符号将字元串拆分成一個字元串數組
14.String substring(int beginIndex)截取從指定的開始位置到字元串結尾的一個子字元串
String substring(int beginIndex, int endIndex) 截取從指定的開始位置到指定的結束位置的一個子字元串
15.char[] toCharArray() 将此字元串轉換為新的字元數組
16.String toLowerCase() 大寫轉小寫
17.toUpperCase() 小寫轉大寫
18.String trim()去除原始字元串的兩頭空格
例如:
package com.wangxing.test1;
public class TestString2 {
public static void main(String[] args) {
String str=new String("Hello,World");
//1.char charAt(int index) 從原始字元串中得到指定位置的字元元素。
char charAt=str.charAt(5);
System.out.println("charAt=="+charAt);
//2.String concat(String str)将指定的字元串連接配接到該字元串的末尾。[+]
String concat=str.concat(",test");
System.out.println("concat=="+concat);
//3.boolean contains(CharSequence s)判斷指定的字元串資料是否在原始字元串中存在
boolean bool=str.contains("abc");
System.out.println("contains=="+bool);
//4.boolean endsWith(String suffix)測試此字元串是否以指定的字尾結尾。
boolean endsWith=str.endsWith("World");
System.out.println("endsWith=="+endsWith);
//5.boolean startsWith(String prefix)測試此字元串是否以指定的字首開頭。
boolean startsWith=str.startsWith("World");
System.out.println("startsWith=="+startsWith);
//6.byte[] getBytes() 将字元串通過預設的字元編碼轉換成位元組數組
byte bytearray[]=str.getBytes();
for(byte val:bytearray) {
System.out.println("val=="+val);
}
//byte[] getBytes(String charsetName)将字元串通過指定的字元編碼轉換成位元組數組
//7.int indexOf(String str) 傳回指定子字元串第一次出現在字元串内的索引位置
int index=str.indexOf("l");
System.out.println("index=="+index);
//8.lastIndexOf(String str)傳回指定子字元串最後一次出現的字元串中的索引。
int lastIndex=str.lastIndexOf("l");
System.out.println("lastIndex=="+lastIndex);
//9.boolean isEmpty()判斷字元串是否為空串,此方法為true時,字元串長度一定為0
boolean isEmpty=str.isEmpty();
System.out.println("isEmpty=="+isEmpty);
//10.int length() 傳回此字元串的長度。
int len=str.length();
System.out.println("len=="+len);
//11.boolean matches(String regex) 判斷字元串資料是否符合正規表達式
String regex="^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$";
boolean matches="13474682774".matches(regex);
System.out.println("matches=="+matches);
//12.String replace(CharSequence old, CharSequence new) 将與字面目标序列比對的字元串的每個子字元串替換為指定的字面替換序列
String replace=str.replace("World","你好");
System.out.println("replace=="+replace);
//13.String[] split(String regex)通過指定的符号将字元串拆分成一個字元串數組
String infos[]=str.split(",");
for(String info:infos) {
System.out.println("info=="+info);
}
//14.String substring(int beginIndex)截取從指定的開始位置到字元串結尾的一個子字元串
String sub1=str.substring(6);
System.out.println("sub1=="+sub1);
//String substring(int beginIndex, int endIndex) 截取從指定的開始位置到指定的結束位置的一個子字元串
String sub2=str.substring(2, 9);
System.out.println("sub2=="+sub2);
//15.char[] toCharArray() 将此字元串轉換為新的字元數組
char chararray[]=str.toCharArray();
for(char cval:chararray) {
System.out.println("cval=="+cval);
}
//16.String toLowerCase() 大寫轉小寫
String toLowerCase=str.toLowerCase();
System.out.println("toLowerCase=="+toLowerCase);
//17.toUpperCase() 小寫轉大寫
String toUpperCase = str.toUpperCase();
System.out.println("toUpperCase=="+toUpperCase);
//18.String trim()去除原始字元串的兩頭空格
String strtest=new String(" Hello World ");
System.out.println("去除空格之前=="+strtest.length());
String trimstr=strtest.trim();
System.out.println("trimstr="+trimstr);
System.out.println("去除空格之後=="+trimstr.length());
}
}
7.2.什麼是封裝類?
1.隻有8種基本資料類型才有與之對應的封裝類類型
2.8種基本資料類型對應的複合資料類型【對象型】
8種基本資料類型對應的java類。
基本資料類型 | 封裝類類型 |
byte[位元組型] | Byte[類] |
short[短整型] | Short[類] |
int[整型] | Integer[類] |
long[長整型] | Long[類] |
float[單精度浮點型] | Float[類] |
double[雙精度浮點型] | Double[類] |
char[字元型] | Character[類] |
boolean[布爾型] | Boolean[類] |
- 基本資料類型沒有可供調用的方法和變量。封裝類有可供調用的變量和方法
例如:
int num=100;
//int maxnum=num.MAX_VALUE;//錯誤的
Integer numint=new Integer(1234);
int max=numint.MAX_VALUE;
System.out.println(max);
- 基本資料類型隻在記憶體的棧區有資料配置設定,封裝類在【複合資料類型】記憶體的棧區和堆區都有記憶體配置設定。
- 預設初始值不同int---0 Integer---null
基本資料類型與對應封裝類的差別
基本資料類型 | 封裝類 |
資料類型 | 類 |
變量,沒可供調用的方法和變量 | 構造出來都是對象,提供了變量和方法 |
隻在記憶體的棧區有資料配置設定 | 記憶體的棧區和堆區都有記憶體配置設定。 |
有各自預設的資料值 | 預設值為null |
- 封裝類使用的時候要建立對象,new+構造方法
例如:
Integer numint=new Integer(1234);
7.3.什麼是自動裝箱和自動拆箱?
自動裝箱--将基本資料類型轉換成對應的封裝類類型
- 封裝類的構造方法
- 将基本資料類型變量/資料值直接指派給對應的封裝類變量
Double dou1=new Double(12.5); //自動裝箱
double d1=12.5; //基本資料類型
Double dou2=12.5; //自動裝箱
Double dou3=d1; //自動裝箱
自動拆箱--将封裝類類型轉成基本資料類型
Character c=new Character('A');
char charvalu=c;//自動拆箱
7.4.String類與基本資料類型之間的互相轉換
1.将基本資料類型轉換成String【static String valueOf(基本資料類型的資料值/變量)】
package com.wangxing.test1;
public class TestString3 {
public static void main(String[] args) {
int num=1234;
String numstring=String.valueOf(num);
System.out.println("numstring=="+numstring);
}
}
2.将String轉換成基本資料類型【需要依賴于基本資料類型對應的封裝類】
1.每一個基本資料類型的封裝類都有一個轉字元串的方法
byte parseByte(String s)
short parseShort(String s)
int parseInt(String s)
long parseLong(String s)
double parseDouble(String s)
float parseFloat(String s)
boolean parseBoolean(String)
char chatAt(int index)
例如:
String str1=new String("12.5");
double d1=Double.parseDouble(str1);
7.5.String類與位元組數組或者字元數組之間的互相轉換
String類與位元組數組
- String類轉換成位元組數組----
String類的”byte[] getBytes()”/”byte[] getBytes(String charsetName)”
- 位元組數組轉換String類型----
String類的構造方法String(byte[] bytes, int offset, int length)
String類與字元數組
1.String類轉換成字元數組----
String類的”char[] toCharArray()”
- 字元數組轉換String類型----
String類的構造方法”String(char[] value, int offset, int count)”