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