---------------------------------------- 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培訓、期待與您交流!
------------------------------------