String類__【概述】【String類的常見操作】

---------------------------------------- android培訓java培訓、期待與您交流! ------------------------------------
String類概念

用於描述字符串;字符串是String類類型的變量,而類類型的變量一定是對象;

1.所以每個字符串都是一個特殊的對象

2.字符串一旦初始化就不可以被改變;是被final修飾的常量

3.在Object中的equals方法比較的是對象的內存地址,即哈希值的方法體中是"==";

在String類中複寫了equals方法,首先比較的是兩個字符串的內存地址是否相同,如果相同返回值等於true,

如果內存地址值不同則比較字符串的內容,如果內容相同,則返回true;

 

創建字符串:

String str =new String("abc");

使用new創建字符串對象的步驟如果,每調用一次就會創建一個新的對象。

1.首先在堆(不是常量池)中創建一個包含指定內容的字符串對象,並將字符串的引用指向該對象

2.去字符串常量池中查看,是否有包含該內容的對象。

3.若有,則將new出來的字符串對象與字符串常量池中的內容相同的對象聯繫起來

4.若沒有,則在字符串常量池中再創建一個包含該內容的字符串對象,並將堆中的對象與字符串常量池中新創建出來的對象聯繫起來。

字符串特殊的內存機制帶來的好處,即是:只比較兩個字符串聯繫的常量池中對性愛那個是否爲同一即可,不論字符串大小,比較速度一樣。

String str ="abc";

1.先在棧中創建一個字符串引用對象str;

2.然後查找堆中常量池裏有沒有存放"abc";

3.如果沒有,則將"abc"存放進常量池,並令str指向"abc"

4.如果已經有"abc",則直接令str指向"abc";

 

String類的方法操作

獲取

1.1--獲得字符串的包含的字符數,即字符串的長度

int length();獲取長度

1.2--根據位置獲取位置上某個字符

char charAt(int index)

1.3--根據字符獲取該字符在字符串中的位置

int indexOf(int ch);返回ch在字符串中第一次出現的位置

int indexOf(int ch,int formIndex);從fromIndex指定位置開始,獲取ch字符在字符串中第一次出現的位置

int indexOf(String str)返回str在字符串中第一次出現的位置

int indexOf(String str,int formIndex)從fromIndex指定位置開始,獲取str字符串中第一次出現的位置

int lastIndexOf(int ch);返回ch在字符串最後一次出現的位置。

 

判斷

2.1--字符串中是否包含某一個字串

boolean contains(str);

特殊之處indexOf(str)可以索引str第一次出現的位置,如果返回-1,表示str不存在該字符串中 ;可以用於對指定判斷是否包含

if (str.indexOf("aa")!= -1);既可以判斷是否存在,又可以獲取出現的位置

2.2--字符串是否爲空

boolean isEmpty();原理就是判斷長度是否爲0

2.3--字符串是否以指定內容開頭  boolea startsWith(str);

2.4--字符串是否以指定內容結尾  boolean endsWith(str);

2.5--判斷字符串內容是否否相同 boolean equals(str);   複寫了Object類中的equals方法

2.6--判斷內容是否相同(忽略大小寫)boolean equalsIgnoreCase();

 

③轉換

3.1字符數組轉換成字符串

構造函數:要注意new

new String (char[]);分配一個新的String,使其包含當前字符數組的字符序列

new String(char[], offset,count)  ;將字符數組中的一部分轉成字符串。offset起點;count數量

靜態方法:

static String copyValueOf(char[]);

static String copyValueOf(char[] data,  int offset ; int count);

static String valueOf(char[]);

3.3字節數組轉成字符串。

String(byte[])
String(byte[],offset,count):將字節數組中的一部分轉成字符串。

3.2將字符串轉成字符數組。char[] toCharArray():

3.4將字符串轉成字節數組。byte[]  getBytes():

3.5將基本數據類型轉成字符串。

static String valueOf(int)
static String valueOf(double)

//3+"";//String.valueOf(3);
特殊:字符串和字節數組在轉換過程中,是可以指定編碼表的。

 

④替換String replace(oldchar,newchar);

⑤切割String[] split(regex);

⑥子串獲取字符串中的一部分

String substring(begin);
String substring(begin,end);

⑦轉換  去除空格,比較。

7.1 將字符串轉成大寫或則小寫。
String toUpperCase();
String toLowerCase();
7.2 將字符串兩端的多個空格去除。
String trim();
7.3 對兩個字符串進行自然順序的比較。
int compareTo(string);

package string;

public class StringMethodDemo {
	public static void main(String[] args) {
		// method_get();
		// method_is();
		// method_trans();
		// method_replace();
		// method_split();
		// method_sub();
		method7();
	}

	public static void sop(Object obj) {
		System.out.println(obj);
	}

	// 獲取
	public static void method_get() {
		String str = "abcdefgk";
		sop(str.length());
		sop(str.charAt(2));
		sop(str.indexOf('k'));
		// 從下標2開始,獲取'd'第一次出現的位置, 如果沒有這個字符返回-1
		sop(str.indexOf('d', 2));
		sop(str.indexOf("bc"));
		sop(str.indexOf("bc", 1));
		sop(str.lastIndexOf('g', 6));// 從後往前找,
		sop(str.lastIndexOf("g"));

	}

	// 判斷
	private static void method_is() {
		String str = "StringDemo.java";
		String s = "stringDemo.java";
		sop(str.contains("String"));// 區分大小寫
		sop(str.indexOf("String"));// 0
		sop(str.isEmpty());// 判斷是否爲空,默認等於true,爲空,有數據則爲false;
		sop(str.endsWith(".java"));// 判斷後綴名
		sop(str.startsWith("String"));// 判斷前綴名
		sop(str.equals(s));// 判斷兩個字符串的內容
		sop(str.equalsIgnoreCase(s));// 不區分大小寫,所以爲true

	}

	// 轉換
	private static void method_trans() {
		char[] arr = { 'a', 'h', 'k', 'g', 'c', 't', 'y', 'r' };
		// 創建一個匿名的String對象
		sop(new String(arr));// 將字符轉爲字符串
		sop(new String(arr, 0, arr.length));// 從0開始,到最後一個
		// 靜態方法
		sop(String.copyValueOf(arr));
		sop(String.copyValueOf(arr, 0, arr.length));// 結果同上
		sop(String.valueOf(arr));// 將字符數組轉換爲字符串

		String s = "Hello Java";
		char[] ch = s.toCharArray();// 將字符串轉換爲字符數組
		for (int i = 0; i < ch.length; i++) {
			sop("ch:" + ch[i]);
		}
	}

	// 替換
	public static void method_replace() {
		String s = "Hello World!";
		String s1 = s.replace("World", "Java");
		sop(s);
		sop(s1);
	}

	// 切割
	public static void method_split() {
		String s = "xiaojie,shuaige,jiejie";
		String[] arr = s.split("\\,");
		for (int i = 0; i < arr.length; i++) {
			sop(arr[i]);
		}
	}

	// 截取
	private static void method_sub() {
		String str = "asdfghjkl";
		sop(str.substring(0));
		sop(str.substring(3, str.length()));

	}

	// 大小寫轉換
	public static void method7() {
		String s = "             Hello Java!        ";
		sop(s.toLowerCase());// 轉爲小寫
		sop(s.toUpperCase());// 轉爲大寫
		sop(s.trim());// 去掉空格

		String s1 = "abc";// 字典偏移值
		String s2 = "abhjlj";// 返回int 0等於相等,正數大於,負數小於
		sop(s1.compareTo(s2));

	}

}


 

---------------------------------------- android培訓java培訓、期待與您交流! ------------------------------------

 

 

發佈了31 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章