1、 String類:由於在實例開發中對字符串的操作非常多,所以Java就把字符串進行了封裝,描述成一個特殊的類,即String類以方便於程序員開發的方便;
2、字符串String:
字符串是一個特殊的對象
字符串是常量,一旦被初始化,就不可以被改變
3、 字符串常用的功能:
a. 字符個數。length
b.查找一個字符出現的位置。如果沒有這個字符呢?返回-1.
int char indexOf
lastIndexOf
c. 根據位置獲取字符。如果沒有該位置呢?
char int
char charAt(index);
d. 將字符串轉成大、小寫。
String toUpperCase();
String toLowerCase();
e. 判斷字符串的開頭,結尾。
boolean startWith(string);
boolean endsWith(string);
f. 字符串中是否包含指定字符串。
boolean contains(string);
g. 截取一部分字符串。
String substring(int start,int end)
h. 將字符串中的c替換成n。如果字符串中沒有c呢?
String replace(char char)
i. 比較大小
記住基本數值比較大小用比較運算符 > <
大寫比較大小使用的是方法 其中一個就是 compareTo();返回的是 正數 、負數、0.
4、 常用功能演示:
public class StringMethodDemo {
public static void main(String[] args) {
String str = "abcdeabc";
//1,獲取a字母出現的位置。
System.out.println("indexOf('a')="+str.indexOf('a'));//0
System.out.println("lastindexOf('a')="+str.lastIndexOf('a'));//5
//2,獲取角標3上的字符。
//System.out.println("charAt(3)="+str.charAt(30));//d//StringIndexOutOfBoundsException
//3,將字符串轉成大寫
String s1 = str.toUpperCase();
System.out.println("uppercase="+s1);//ABCDEABC
//4,該字符串是否已Demo開頭,是否以.java結束。
boolean b1 = str.endsWith(".java");
boolean b2 = str.startsWith("Demo");
//5,該字符串中是否包含cd字符串。
System.out.println("contains(\"cd\")="+str.contains("cd"));//true
//6,截取2,5之間的字符串。
System.out.println("substring(2,5)="+str.substring(2,5));//cde
//7,將字符串中的a替換成k。
System.out.println("replace('a','k')="+str.replace('a', 'k'));//kbcdekbc
//8,字符串比較大小。
System.out.println("compareTo(\"aaa\")="+str.compareTo("abc"));
}
}
5、 可變數組:StringBuffer 字符串緩衝區
特點:
1.可以存儲任意類型的數據;
2.長度不確定;
3.無論存儲什麼類型的元素,最終都會變成字符串。
容器常見功能:
1.添加,插入,append, insert
2.刪除
3.替換
6、StringBuilder 用法與StringBuffer一模一樣
JDK1.5版本出現了StringBuilder
StringBuffer是線程安全的;
StringBuilder是線程不安全的。
7、正則表達式:就是用操作字符串數據的規則表達式。
規則:就是用一些符號組成,每個符號都代表着特有的含義。
其實這些符號相當於對應着底層一段代碼。對外提供符號就是簡化了操作。
弊端:必須要先學習這些符號。符號多了,閱讀性會較差。
8、 字符範圍:[] 字符次數:{}
9、正則表達式對字符串的常見操作:
a. 匹配:使用的是String類中的matchers方法。
b. 切割:使用的是String類中的split方法。
c. 替換:使用的是String類中的replaceAll方法。
d. 獲取:將匹配的規則的內容獲取出來。
10、 正則演示:
/*
* 我我....我....我我..我我..我..要要..要要..要要..要要學..學學學..學學..學編編..編編編.編程程.....程...程程...程程..程程
* 把它還原成 我要學編程。
*/
public static void test1(){
String str = "我我....我....我我..我我..我..要要..要要..要要..要要學..學學學..學學..學編編..編編編.編程程.....程...程程...程程..程程";
/*
* 使用正則的替換功能。
* 1,將 . 去掉。
* 2,將疊詞變成一個。
*/
str = str.replaceAll("\\.+", "");
System.out.println(str);
str = str.replaceAll("(.)\\1+", "$1");
System.out.println(str);
}
/*
* 10.10.10.10 192.168.1.200 3.3.3.3 127.0.0.108
* 對ip地址排序。
*/
public static void test2(){
String ip = "10.10.10.10 192.168.1.200 3.3.3.3 127.0.0.108";
/*
* 爲了排序方便,每一段都補兩個零。保證每一段至少三位。
* 替換就可以了。
*/
ip = ip.replaceAll("(\\d+)", "00$1");
System.out.println(ip);
//將每一段都保留最後三位。
ip = ip.replaceAll("0*(\\d{3})", "$1");
System.out.println(ip);
String[] ips = ip.split(" +");
Arrays.sort(ips);
for(String x : ips){
System.out.println(x.replaceAll("0*(\\d+)", "$1"));
}
}
/*
* 對郵件地址進行校驗。
*/
public static void test3(){
String mail = "[email protected]";
String reg = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{2,}){1,3}";
reg = "\\w+@\\w+(\\.\\w+)+";//[email protected]
//mail.indexOf("@")!=-1
boolean b = mail.matches(reg);
System.out.println(mail+":"+b);
}
11、使用正則表達式對象。Pattern實用步驟:
a. 先將正則表達式編譯成Pattern對象。
b. 通過Pattern對象的matcher方法獲取Matcher匹配器對象。
c. 通過匹配器對象的方法,將正則規則作用到字符串上以便於操作。
12、 正則對象演示:
public static void getString(){
String str = "da jia zhu yi la ,ming tian fang jia la!";
System.out.println(str);
//1,定義規則。
String reg = "\\b[a-z]{3}\\b";
//2,將規則編譯成正則對象。
Pattern p = Pattern.compile(reg);
//3,通過正則對象獲取匹配器對象,並和被操作的字符串相關聯。
Matcher m = p.matcher(str);
//4, 通過匹配器對象的方法對字符串進行規則的匹配。
// boolean b = m.find();
// System.out.println(b);
// System.out.println(m.group());
while(m.find()){
System.out.println(m.start()+"..."+m.group()+"...."+m.end());
}
}
13、 基本數據類型
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
該對象常見場景:
在基本數值和字符串之間做轉換。
基本類型值--->字符串 用加好(+)連接後就是字符串 String.valueof(基本數據類型值) static 字符串toString(基本數據類型)
字符串--->基本類型值 返回基本類型(參數是字符串)
static XXX parseXXX(字符串)
十進制--->其他進制
System.out.println(Integer.toBinaryString(-6));
System.out.println(Integer.toHesString(-6));
其他進制--->十進制
System.out.println(Integer.parseInt("110",2));
基本數據類型--->對象 裝箱
Integer i=new Integer(23);
Integer ii=Integer.valueof(23);
對象--->基本數據類型 拆箱
int num=i.intValue();
JDK1.5以後,基本數據類型對象包有了一個新特性。
自動裝箱拆箱。