義烏網(wǎng)站優(yōu)化福建seo學(xué)校
1 包裝類
包裝類是8種基本數(shù)據(jù)類型對應(yīng)的引用類型
作用:后期的集合和泛型不支持基本類型,只能使用包裝類
基本數(shù)據(jù)類型和其對應(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,容錯率更高
- 可以把基本類型的數(shù)據(jù)轉(zhuǎn)換成字符串類型(調(diào)用 基本數(shù)據(jù)類型的變量.toString()或Integer.toString(基本數(shù)據(jù)類型的變量)得到字符串)
- 可以把字符串類型的數(shù)值轉(zhuǎn)換成真實的數(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)匹配一個字符)
[abc] | 只能是a, b, 或c |
[^abc]? | 除了a, b, c之外的任何字符 |
[a-zA-Z]? | a到z A到Z,包括(范圍) |
[a-d[m-p]] | a到d,或m通過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)匹配一個字符)?
.? | 任何字符 |
\d? | 一個數(shù)字: [0-9] |
\D? | 非數(shù)字: [^0-9] |
\s? | 一個空白字符: [ \t\n\x0B\f\r] |
\S? | 非空白字符: [^\s] |
\w 或 [a-zA-Z_0-9] | 英文、數(shù)字、下劃線 |
\W 或?[^\w] | 一個非單詞字符 |
量詞(多個字符)
X??? | X一次或根本沒有 |
X* | X零次或多次 |
X+? | X一次或多次 |
X {n}? | X正好n次 |
X {n, }? | X至少n次 |
X {n,m}? | X至少n但不超過m次 |
// 驗證手機(jī)號
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)行分割字符串,反回一個字符串?dāng)?shù)組。 |
// 將字符串里的字母替換成a
String name = "昨天lllll再見bye";
String na = name.split("\\w+", 'a') // 昨天a再見a
// 遇見字符串里的字母分割
String[] naArr = name.split("\\w+") // [昨天,再見]
/* 正則表達(dá)式獲取信息 */String rs = "明天你好,我是今天電話123-12322424,郵箱" +"123@qq.com,電話13512345678,0203232323" +"郵箱123@qq.com,123-123-1234 ,1231231234";// 需求:從上面的內(nèi)容中獲取電話號碼和郵箱。// 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á)式成為一個匹配規(guī)則對象
Pattern pattern = Pattern.compile(regex);// 3.通過匹配規(guī)則對象得到一個匹配數(shù)據(jù)內(nèi)容的匹配器對象
Matcher matcher = pattern.matcher(rs);// 4.通過匹配器去內(nèi)容中爬取出信息
while(matcher.find()){System.out.println(matcher.group());
}
3 Arrays類
數(shù)組操作工具類,操作數(shù)組元素
public static?String?toString?(類型[]?a) | 返回數(shù)組內(nèi)容的字符串字符串,形狀還是數(shù)組形狀,類型是字符串 |
public static?void?sort?(類型[]?a) | 對數(shù)組進(jìn)行默認(rèn)升序排序,無返回值 |
public static?<T>?void?sort?(類型[]?a, Comparator<? super T>?c) | 使用比較器對象自定義排序 |
public static?int?binarySearch?(int[]?a, int?key) | 二分搜索數(shù)組中的數(shù)據(jù),在排好序的數(shù)組a種查找key,存在返回索引,不存在返回-1 |
排序
public static?void?sort?(類型[]?a) | 對數(shù)組進(jìn)行默認(rèn)升序排序 |
public static?<T>?void?sort?(類型[]?a, Comparator<? super T>?c) | 使用比較器對象自定義排序 |
// 自定義數(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;// 因為返回值必須是整數(shù),若比較的值是浮點型,可以下面這個寫法// return Double.compare(a2, a1)}
});
4 Lambda表達(dá)式
簡化函數(shù)式接口的匿名內(nèi)部類的寫法
(匿名內(nèi)部類被重寫方法的形參列表) -> {被重寫方法的方法體代碼。
}
函數(shù)式接口:
- 必須是接口,并且接口中有且僅有一個抽象方法
- 通常我們會在接口上加上一個@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();}
}
簡化后 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;
});
**/
// 簡化后
Arrays.sort(a,(Integer a1, Integer a2) -> {return a2 - a1;
});
表達(dá)式的省略寫法
- 參數(shù)類型可以省略不寫。
- 如果只有一個參數(shù),參數(shù)類型可以省略,同時()也可以省略。
- 如果Lambda表達(dá)式的方法體代碼只有一行代碼??梢允÷源罄ㄌ柌粚?同時要省略分號
- 如果Lambda表達(dá)式的方法體代碼只有一行代碼。可以省略大括號不寫。此時,如果這行代碼是return語句,必須省略return不寫,同時也必須省略runturn語句的分號
// 簡化后
Arrays.sort(a,(a1, a2) -> a2 - a1);