義烏網(wǎng)站優(yōu)化福建seo學(xué)校
1 包裝類
包裝類是8種基本數(shù)據(jù)類型對(duì)應(yīng)的引用類型
作用:后期的集合和泛型不支持基本類型,只能使用包裝類
基本數(shù)據(jù)類型和其對(duì)應(yīng)的引用數(shù)據(jù)類型的變量可以互相賦值
基本數(shù)據(jù)類型 | 引用數(shù)據(jù)類型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
- 包裝類的變量默認(rèn)值可以是null,容錯(cuò)率更高
- 可以把基本類型的數(shù)據(jù)轉(zhuǎn)換成字符串類型(調(diào)用 基本數(shù)據(jù)類型的變量.toString()或Integer.toString(基本數(shù)據(jù)類型的變量)得到字符串)
- 可以把字符串類型的數(shù)值轉(zhuǎn)換成真實(shí)的數(shù)據(jù)類型
//將字符串類型的整數(shù)轉(zhuǎn)為int型 int a = Integer.parseInt(“字符串類型的整數(shù)”); int a2 = Integer.valueOf(“字符串類型的整數(shù)”); //將字符串類型的小數(shù)轉(zhuǎn)為double型 double b = Double.parseDouble(“字符串類型的小數(shù)”); double b2 = Double.valueOf(“字符串類型的小數(shù)”);
2 正則表達(dá)式
字符類(默認(rèn)匹配一個(gè)字符)
[abc] | 只能是a, b, 或c |
[^abc]? | 除了a, b, c之外的任何字符 |
[a-zA-Z]? | a到z A到Z,包括(范圍) |
[a-d[m-p]] | a到d,或m通過(guò)p:([a-dm-p]聯(lián)合) |
[a-z&&[def]]? | d, e, 或f(交集) |
[a-z&&[^bc]] | a到z,除了b和c:([ad-z]減法) |
System.out.println("a".matches("[abc]")); // true
System.out.println("z".matches("[abc]")); // false
System.out.println("ab".matches("[abc]")); // false
System.out.println("ab".matches("[abc]+")); //true
預(yù)定義的字符類(默認(rèn)匹配一個(gè)字符)?
.? | 任何字符 |
\d? | 一個(gè)數(shù)字: [0-9] |
\D? | 非數(shù)字: [^0-9] |
\s? | 一個(gè)空白字符: [ \t\n\x0B\f\r] |
\S? | 非空白字符: [^\s] |
\w 或 [a-zA-Z_0-9] | 英文、數(shù)字、下劃線 |
\W 或?[^\w] | 一個(gè)非單詞字符 |
量詞(多個(gè)字符)
X??? | X一次或根本沒(méi)有 |
X* | X零次或多次 |
X+? | X一次或多次 |
X {n}? | X正好n次 |
X {n, }? | X至少n次 |
X {n,m}? | X至少n但不超過(guò)m次 |
// 驗(yàn)證手機(jī)號(hào)
boolean p = phoneNumber.matches("1[3-9]\\d{9}");
?public String replaceAll(String regex,String newStr) | 按照正則表達(dá)式匹配的內(nèi)容進(jìn)行替換 |
public String[] split(String regex): | 按照正則表達(dá)式匹配的內(nèi)容進(jìn)行分割字符串,反回一個(gè)字符串?dāng)?shù)組。 |
// 將字符串里的字母替換成a
String name = "昨天lllll再見(jiàn)bye";
String na = name.split("\\w+", 'a') // 昨天a再見(jiàn)a
// 遇見(jiàn)字符串里的字母分割
String[] naArr = name.split("\\w+") // [昨天,再見(jiàn)]
/* 正則表達(dá)式獲取信息 */String rs = "明天你好,我是今天電話123-12322424,郵箱" +"123@qq.com,電話13512345678,0203232323" +"郵箱123@qq.com,123-123-1234 ,1231231234";// 需求:從上面的內(nèi)容中獲取電話號(hào)碼和郵箱。// 1.規(guī)則
String regex = "(\\w{1,}@\\w{2,10}(\\.\\w{2,10}){1,2})|" + "(1[3-9]\\d{9})|(0\\d{2,5}-?\\d{5,15})|400-?\\d{3,8}-?\\d{3,8}";// 2.編譯正則表達(dá)式成為一個(gè)匹配規(guī)則對(duì)象
Pattern pattern = Pattern.compile(regex);// 3.通過(guò)匹配規(guī)則對(duì)象得到一個(gè)匹配數(shù)據(jù)內(nèi)容的匹配器對(duì)象
Matcher matcher = pattern.matcher(rs);// 4.通過(guò)匹配器去內(nèi)容中爬取出信息
while(matcher.find()){System.out.println(matcher.group());
}
3 Arrays類
數(shù)組操作工具類,操作數(shù)組元素
public static?String?toString?(類型[]?a) | 返回?cái)?shù)組內(nèi)容的字符串字符串,形狀還是數(shù)組形狀,類型是字符串 |
public static?void?sort?(類型[]?a) | 對(duì)數(shù)組進(jìn)行默認(rèn)升序排序,無(wú)返回值 |
public static?<T>?void?sort?(類型[]?a, Comparator<? super T>?c) | 使用比較器對(duì)象自定義排序 |
public static?int?binarySearch?(int[]?a, int?key) | 二分搜索數(shù)組中的數(shù)據(jù),在排好序的數(shù)組a種查找key,存在返回索引,不存在返回-1 |
排序
public static?void?sort?(類型[]?a) | 對(duì)數(shù)組進(jìn)行默認(rèn)升序排序 |
public static?<T>?void?sort?(類型[]?a, Comparator<? super T>?c) | 使用比較器對(duì)象自定義排序 |
// 自定義數(shù)組降序排,僅支持引用數(shù)據(jù)類型
Integer[] a = [1,3,5,9]
Arrays.sort(a, new Comparator<Integer>(){@Overridepublic int compare(Integer a1, Integer a2){return a2 - a1;// 因?yàn)榉祷刂当仨毷钦麛?shù),若比較的值是浮點(diǎn)型,可以下面這個(gè)寫(xiě)法// return Double.compare(a2, a1)}
});
4 Lambda表達(dá)式
簡(jiǎn)化函數(shù)式接口的匿名內(nèi)部類的寫(xiě)法
(匿名內(nèi)部類被重寫(xiě)方法的形參列表) -> {被重寫(xiě)方法的方法體代碼。
}
函數(shù)式接口:
- 必須是接口,并且接口中有且僅有一個(gè)抽象方法
- 通常我們會(huì)在接口上加上一個(gè)@FunctionalInterface注解,標(biāo)記該接口必須是滿足函數(shù)式接口。
public class LambdaDemo1 {public static void main(String[] args) {goSwimming( new Swimming() {@Overridepublic void swim() {System.out.println("游泳");}} );}public static void goSwimming(Swimming swimming) {swimming.swim();}
}
簡(jiǎn)化后 swim()
public class LambdaDemo1 {public static void main(String[] args) {goSwimming( () -> {System.out.println("游泳") } );}public static void goSwimming(Swimming swimming) {swimming.swim();}
}
// 自定義數(shù)組降序排,僅支持引用數(shù)據(jù)類型
Integer[] a = [1,3,5,9]
/**
Arrays.sort(a, new Comparator<Integer>(){ @Overridepublic int compare(Integer a1, Integer a2){return a2 - a1;
});
**/
// 簡(jiǎn)化后
Arrays.sort(a,(Integer a1, Integer a2) -> {return a2 - a1;
});
表達(dá)式的省略寫(xiě)法
- 參數(shù)類型可以省略不寫(xiě)。
- 如果只有一個(gè)參數(shù),參數(shù)類型可以省略,同時(shí)()也可以省略。
- 如果Lambda表達(dá)式的方法體代碼只有一行代碼??梢允÷源罄ㄌ?hào)不寫(xiě),同時(shí)要省略分號(hào)
- 如果Lambda表達(dá)式的方法體代碼只有一行代碼??梢允÷源罄ㄌ?hào)不寫(xiě)。此時(shí),如果這行代碼是return語(yǔ)句,必須省略return不寫(xiě),同時(shí)也必須省略runturn語(yǔ)句的分號(hào)
// 簡(jiǎn)化后
Arrays.sort(a,(a1, a2) -> a2 - a1);