Day14 常用API
1. String
1.1 概述
java.lang.String :是字符串類 底層就是一個(gè)final修飾的char數(shù)組,所以String很多特性就是數(shù)組的特性,比如一旦確定,長(zhǎng)度 不能更改
1 字符串一旦創(chuàng)建,這個(gè)字符串對(duì)象不能再更改
2 為了提升字符串的訪問(wèn)和存儲(chǔ)效率,java虛擬機(jī)采用了一種緩存機(jī)制,把字符串都保存在了字符串常量池中
3 在程序執(zhí)行過(guò)程中,假如要用到一個(gè)字符串a(chǎn) String s1 = "a"; 先去字符串常量池中檢索,是否有a,如過(guò)沒(méi)有就創(chuàng)建一份
假如 有了 String s2 = "a"; 就不再創(chuàng)建,把已有的這個(gè)a 返回
所以 導(dǎo)致 String s1 = "a" String s2 = "a" 此時(shí) s1 == s2 他也是true,因?yàn)樗麄冎赶蛲粋€(gè)字符串對(duì)象 就是a
1.2 基本使用
// 第一部分 創(chuàng)建1個(gè)對(duì)象,因?yàn)樗麄兌贾赶虺A砍?/p>
String s1 = "a";
String s2 = "a";
// 比較值 true
System.out.println(s1.equals(s2));
// 比較地址 true
System.out.println(s1 == s2);
// String 一旦創(chuàng)建不能更改的意思,并不是這個(gè)s1變量不能更改,二十 變量指向的對(duì)象中的數(shù)據(jù)不能更改
s1 = "b";
// 第二部分,如果使用new的方式,那么會(huì)創(chuàng)建堆內(nèi)存對(duì)象,該字符串對(duì)象會(huì)保存在堆內(nèi)存中
String s3 = new String("a");
String s4 = new String("a");
// 因?yàn)閟3和s4不指向常量池,二十分別指向了堆內(nèi)存,所以地址不同,為false
System.out.println(s3 == s4);
// 但是String中覆寫(xiě)了equals方法.比較值,所以是true
System.out.println(s3.equals(s4));
1.3 不要頻繁拼接
?因?yàn)樽址畡?chuàng)建之后不能更改,如果頻繁拼接的話,效率很低,并且垃圾回收可能也會(huì)出現(xiàn)問(wèn)題
1.4 構(gòu)造方法
?// 1 字面量
String s1 = "asda";
// 2
String s2 = new String("xxx");
// 3 字節(jié)數(shù)組
byte[] bytes = {97,98,99,100,101,102};
String s3 = new String(bytes);
//abcdef
System.out.println(s3);
// 字節(jié)數(shù)組,只截取一部分,4表示起始下標(biāo)(包含),2表示個(gè)數(shù)
String s4 = new String(bytes,4,2):
// ef
System.out.println(s4);
// 5 字符數(shù)組
char[] chars = {'a','b','c','d'};
String s5 = new String(chars);
System.out.println(s5);
// 6 字符數(shù)組,只截取一部分,1表示起始下標(biāo)(包含),2表示個(gè)數(shù)
String s6 = newsString(char,1,2);
System.out.println(s6):
1.5 常用方法
學(xué)習(xí)API:
1 功能是什么
2 入?yún)⒑统鰠⑹鞘裁?/p>
3 怎么用
// 1 charAt(int index): 返回該字符串中,指定位置的字符
String s1 = "qweqweqwe";
char c1 = s1.charAt(2):
// e
System.out.println(c1);
// 2 boolean endsWith(String suffix) : 判斷該字符串是否以指定字符串結(jié)尾
// boolean startWith(String prefix) : 同上,判斷開(kāi)始
System.out.println("Hello.java".endWith(".java"));
// 注意空格 , 有空格就匹配不上了
System.out.println("Hello.java".endsWith(".java"));
// 3 boolean equalsIgnoreCas(String str): 不區(qū)分大小寫(xiě)比較兩個(gè)字符串是否相等
System.out.println("abc".equalsIgnoreCase("aBc"));
// 4 byte[] getBytes(): 把字符串轉(zhuǎn)換為字節(jié)數(shù)組并返回
byte[] bytes = "abc".getBytes();
for(int i = 0;i<bytes.length;i++){
System.out.println(bytes[i]);
}
// 5 char[] toCharArray(); 把字符串轉(zhuǎn)換為字符數(shù)組并返回
char[] chars = "abc".toCharArray();
for(int i = 0;i<char.length;i++){
System.out.println(char[i]);
}
// 6 int indexOf(String str): 獲取該字符串中指定字符串的起始索引,找不到返回-1
System.out.println("dasdsa".indexOf("sd"));// 2?
System.out.println("asdasdas".indexOf("kda")); //-1
// 7 int indexOf(Sting str,int index);
// 從指定位置開(kāi)始查找(包含),獲取該字符串中指定字符串的起始索引,找不到返回-1
System.out.println("askasdasd".indexOf("a",5));// -1
// 8 index lastIndexOf(String str): 同上,最后一次出現(xiàn)的索引 找不到返回-1
System.out.println("asdasd".lastindexOf("a"));// 3
// 9 int length(): 返回該字符串的長(zhǎng)度
System.out.println("abc".length());
// 10 String replaceAll(String regex . String replacement);
// 替換指定字符,支持正則表達(dá)式
// String replace (String str . String replacement); 不支持正則表達(dá)式
// 用 1 把 a 替換了并返回新的字符串
// 支持正則表達(dá)式,但是沒(méi)有寫(xiě)正則表達(dá)式 是沒(méi)有區(qū)別的
System.out.println("hucgasdqweasd".replaceAll("a", "1"));
System.out.println("dhiasdhias",replace("a","1"));
// 因?yàn)?. 在正則表達(dá)式中,代表任意字符
System.out.println("qwe.tre.nfoia.dasnm".replaceAll(".","."));
// 可以使用 \ 轉(zhuǎn)義
System.out.println("qwe.try.yui.uio".replaceAll("\\",","));
System.out.println("qwe.try.yui.uio".replace(".",","));
// 11 String[] split(String regex): 分割字符串,返回字符串?dāng)?shù)組,支持正則表達(dá)式,注意.....
// 點(diǎn),需要轉(zhuǎn)義
String s2 = "2022.1.14";
String[] arr = s2.split("\\.");
for(int i = 0;i<arr.length;i++){
System.out.println(arr[i]);
}
// 12 String substring(int begin); 獲取該字符串中,以某下標(biāo)起始的子字符串(包含)
System.out.println("abcdef".substring(2));// cdef
// 13 String substring(int begin , int end );
// 獲取 該字符串中,以某個(gè)下標(biāo)起始(包含)到某個(gè)下標(biāo)結(jié)束的子字符串(不包含)
System.out.println("abcdef",substring(2,4));// cd
// 14 String trim(): 去除字符串兩邊的空格
System.out.println("? ? ? ?a? ? ? ?dsadas? ? ? ? ? ");
System.out.println("? ? ? ? ? ?a? ? ? ? d? ?asdas? ? ? ? ?.trim()");
// 15 String toUpperCase(): 轉(zhuǎn)大寫(xiě)
// String toLowerCase(); 轉(zhuǎn)小寫(xiě)
System.out.println("asd".toUpperCase());
// 16 static String valueOf(Object obj);
// 調(diào)用該對(duì)象的toString 方法 , 如果為null, 則不再調(diào)用 toString 而是返回字符串null?
String_05 s = null;
// 打印一個(gè)引用類型的時(shí)候,會(huì)自動(dòng)調(diào)用 String 的valueOf 所有 會(huì)自動(dòng)調(diào)用toString方法
System.out.println(s);
1.6 注意
// 1
String a = "a";
String b = "b";
String str = "ab";
// 字面量相加 在編譯階段,就把+去掉了
String d = "a" + "d";
//true
System.out.println(d == str);
//true
System.out.println(d.equals(str));
//變量相加,因?yàn)樽兞康闹凳强勺兊?運(yùn)算之前沒(méi)有辦法確定變量的值,
//所以沒(méi)有辦法優(yōu)化,只能轉(zhuǎn)換為new的方式,重新創(chuàng)建并拼接字串符
String c = a + b ;
String e = a + "b";
//false
System.out.println(c==str);
//true
System.out.println(c.equals(str));
// 上面相加 因?yàn)樽兞康闹?無(wú)法確定 , 如果聲明為常量,則可以優(yōu)化
String str1 = "ab";
final String a1 = "a";
final String b1 = "b";
String c1 = a1 + b1;
System.out.println(c1 == str1);
?// 創(chuàng)建幾個(gè)對(duì)象? 1個(gè)
String xx = "a"+"b"+"c"+"d";
2 StringBuffer和StringBuilder
2.1 概述
?
2.2 基本使用
?2.3 常用方法
?3. 包裝類
3.1 概述
1. 裝箱就是自動(dòng)將基本數(shù)據(jù)類型轉(zhuǎn)換為包裝器類型?
2. 拆箱就是自動(dòng)將包裝器類型轉(zhuǎn)換為基本數(shù)據(jù)類型
?3.2 使用
?3.3 Integer
3.3.1 基本使用
?3.3.2
?3.3.3 常用方法
?3.3.4 自動(dòng)裝箱和自動(dòng)拆箱
?
?3.3.5 深入整型常量池
?
// 判斷當(dāng)前這個(gè)數(shù)值 是否在 -128~127之間
如果不再范圍內(nèi)? 就直接new對(duì)象
?
?
?
?3.3.6 總結(jié)
?
?4. System
4.1 概述
System類提供的public static long currentTimeMillis()用來(lái)返回當(dāng)前時(shí) 間與1970年1月1日0時(shí)0分0秒之間以毫秒為單位的時(shí)間差。
此方法適于計(jì)算時(shí)間差。
?System類代表系統(tǒng),系統(tǒng)級(jí)的很多屬性和控制方法都放置在該類的內(nèi)部。 該類位于java.lang包。
?由于該類的構(gòu)造器是private的,所以無(wú)法創(chuàng)建該類的對(duì)象,也就是無(wú)法實(shí) 例化該類。其內(nèi)部的成員變量和成員方法都是static的,所以也可以很方便 的進(jìn)行調(diào)用。
?成員變量
?System類內(nèi)部包含in、out和err三個(gè)成員變量,分別代表標(biāo)準(zhǔn)輸入流
(鍵盤(pán)輸入),標(biāo)準(zhǔn)輸出流(顯示器)和標(biāo)準(zhǔn)錯(cuò)誤輸出流(顯示器)。
?成員方法
?native long currentTimeMillis():
該方法的作用是返回當(dāng)前的計(jì)算機(jī)時(shí)間,時(shí)間的表達(dá)格式為當(dāng)前計(jì)算機(jī)時(shí)
間和GMT時(shí)間(格林威治時(shí)間)1970年1月1號(hào)0時(shí)0分0秒所差的毫秒數(shù)。
?void exit(int status):
該方法的作用是退出程序。其中status的值為0代表正常退出,非零代表
異常退出。使用該方法可以在圖形界面編程中實(shí)現(xiàn)程序的退出功能等。
4.2 常用方法
?5. Date?
5.1 概述
獲取時(shí)間和時(shí)間操作
5.2 構(gòu)造方法
5.3 常用方法
?
5.4 格式化?
?5.5 Calendar
6. Random
6.1 概述
隨機(jī)數(shù) 從 0 開(kāi)始
6.2 使用
?
總結(jié)
以上是生活随笔為你收集整理的Day14 常用API的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《The Alchemist》阅读笔记
- 下一篇: 找到所有数组中消失的数字_【一点资讯】千