常用API
API概述
API全稱是應用程式編程介面,是Java寫好的程式,程式員可以直接呼叫,
Object類:toString方法
Object是祖宗類,它里面的方法,一切子類物件都可以使用,
public String toString()
-
默認是回傳當前物件的地址資訊,
Student s = new Student("張三",'女', 23);
-
System.out.println(s.toString());-
回傳物件地址
-
-
System.out.println(s);-
直接輸出物件名,默認是呼叫toString方法的
-
toString存在的意義:
-
默認回傳物件的地址其實是沒有意義的
-
真實存在的意義是被子類重寫,以便回傳子類物件的內容,
Object類:equals方法
public boolean equals(Object o )
-
默認是比較2個物件的地址是否一樣,回傳true 或者false
equals存在的意義
-
默認比較物件的地址其實是沒有意義的,因為== 號可以更簡單的完成
-
存在的的真實意義是被子類重寫,以便比較物件的內容,
Object類:clone方法
protected Object clone()
當某個物件呼叫這個方法時,這個方法會復制一個一模一樣的新物件回傳,
分類:
-
淺克隆:拷貝出的新物件,與原物件中的資料一模一樣(參考型別拷貝的只是地址)
-
深克隆:
物件中基本型別的資料直接拷貝,
物件中的字串資料拷貝的還是地址,
物件中還包含的其他物件,不會拷貝地址,會創建新物件,
Objects
Objects是一個工具類,提供了更安全的方式比較2個物件,
Student s = null;
-
s.equals(s2); 空指標例外
-
Objects.equals(s, s2); 回傳false
Objects常見方法:
| 方法名 | 說明 |
|---|---|
| public static boolean equals(Object a, Object b) | 比較兩個物件的,底層會先進行非空判斷,從而可以避免空指標例外,再進行equals比較 |
| public static boolean isNull(Object obj) | 判斷變數是否為null ,為null回傳true ,反之回傳false |
StringBuilder
StringBuilder稱為可變字串容器,操作字串的性能優于String類,
StringBuilder拼接操作字串的手段:性能好
String才是我們的目的:結果資料的型別
StringJoiner
JDK8開始才有的,跟StringBuilder一樣,也是用來操作字串的,也可以看成是一個容器,創建之后里面的內容是可變的,
好處:不僅能提高字串的操作效率,并且在有些場景下使用它操作字串,代碼會更簡潔
public static String getArrayData(int[] arr) { // 拼接最終的結果:[11, 22, 33, 44, 55] // 1.判斷arr是否為null if (arr == null) { return null; } StringJoiner sj = new StringJoiner(", ", "[", "]"); for (int i = 0; i < arr.length; i++) { sj.add(arr[i] + ""); } return sj.toString(); }
Math
Math相當于是一個工具類,提供的方法全部是完成數學操作的靜態方法,直接用類名呼叫即可,
目標:熟悉Math類的方法就行了,
// 目標:看看Math類的方法就行了, // 1、取絕對值(拿到的結果一定是正數) System.out.println(Math.abs(-12)); System.out.println(Math.abs(-12.2)); System.out.println(Math.abs(1443)); ? // 2、向上取整 System.out.println(Math.ceil(3.000001)); // 4.0 System.out.println(Math.ceil(4.0)); // 4.0 ? // 3、向下取整 System.out.println(Math.floor(3.9999999)); // 3.0 System.out.println(Math.floor(3.0)); // 3.0 ? // 4、四舍五入 System.out.println(Math.round(3.45555)); // 3 System.out.println(Math.round(3.500001)); // 4 ? // 5、取較大值 System.out.println(Math.max(10, 20)); ? // 6、取次方 System.out.println(Math.pow(2, 4)); // 16.0 System.out.println(Math.pow(3, 2)); // 9.0 ? // 7、取亂數(用的少) System.out.println(Math.random()); // [0.0 , 1.0) (包前不包后)
System
System代表系統,也是一個工具類的形式,里面的方法都是與系統操作相關的靜態方法,
// 目標:了解下System類的幾個方法, // 1、終止虛擬機(干掉全部Java程式的執行) System.out.println("程式開始,,,"); // System.exit(0); // 0代表是人為認為的正常終止的 (慎用) ? // 2、獲取當前系統的時間資訊的,(時間毫秒值:從1970-1-1 0:0:0開始走到此刻的總的毫秒值,1s = 1000ms) long time = System.currentTimeMillis(); System.out.println(time); ? // 通常用來統計程式執行的性能問題, for (int i = 0; i < 2000; i++) { System.out.println("輸出:" + i); } ? long time2 = System.currentTimeMillis(); System.out.println("耗時:" + (time2 - time) / 1000.0 + "s");
Runtime
public static void main(String[] args) throws IOException, InterruptedException { // 目標:了解下Runtime的幾個常見方法, ? // 1、public static Runtime getRuntime() 回傳與當前Java應用程式關聯的運行時物件, Runtime r = Runtime.getRuntime(); ? // 2、public void exit(int status) 終止當前運行的虛擬機,該引數用作狀態代碼; 按照慣例,非零狀態代碼表示例外終止, // r.exit(0); ? // 3、public int availableProcessors(): 獲取虛擬機能夠使用的處理器數, System.out.println(r.availableProcessors()); ? // 4、public long totalMemory() 回傳Java虛擬機中的記憶體總量, System.out.println(r.totalMemory() / 1024.0 / 1024.0 + "MB"); // 1024 = 1K 1024 * 1024 = 1M ? // 5、public long freeMemory() 回傳Java虛擬機中的可用記憶體量 System.out.println(r.freeMemory() / 1024.0 / 1024.0 + "MB"); ? // 6、public Process exec(String command) 啟動某個程式,并回傳代表該程式的物件, // r.exec("C:\\SoftWare\\XMind2020\\XMind.exe"); Process p = r.exec("QQ"); Thread.sleep(5000); // 讓程式在這里暫停5s后繼續往下走!! p.destroy(); // 銷毀!關閉程式! }
BigDecimal
封裝double型別的資料進行運算的,為了解決計算精度問題
目前:浮點型 double直接運算是不精準的,
-
double a1 = 0.1
-
double b1 = 0.2;
-
double c1 = a1 + b1;
c1: 0.3000000000000001
把浮點型資料進行封裝后再運算
double a = 0.1; double b = 0.2; double c = a + b; System.out.println(c); System.out.println("--------------------------"); // 使用BigDecimal規避浮點數運算程序中可能出現的精度失真問題 BigDecimal a1 = BigDecimal.valueOf(a); BigDecimal b1 = BigDecimal.valueOf(b); // BigDecimal c1 = a1.add(b1); // BigDecimal c1 = a1.subtract(b1); // BigDecimal c1 = a1.multiply(b1); BigDecimal c1 = a1.divide(b1); System.out.println(c1); // 0.3 BigDecimal c2 = a1.divide(b1, 2, RoundingMode.Half_Up);
日期與時間
Date
-
作用:代表當前此刻日期和時間的,
-
構建物件和常用方法:
Date d = new Date(); long time = d.getTime(); Date d2 = new Date(time) // 把時間毫秒值轉換成日期物件, ? public void setTime(long time): // 設計日期物件為當前時間毫秒值對應的日期, d2.setTime(time);
SimpleDateFormat
-
作用:格式化、決議時間的,
-
構建物件:
public SimpleDateFormat(String pattern) -
方法
-
public String format(Date d)
-
格式化日期物件
-
-
public String format(Object o)
-
格式化時間毫秒值
-
-
public Date parse(String date):
-
把字串時間決議成日期物件
-
// 目標:掌握簡單日期格式化類:SimpleDateFormat的使用, // 1、創建一個簡單日期格式化物件:封裝時間格式, SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss:SSS EEE a"); ? // 2、創建日期物件 Date d = new Date(); System.out.println(d); ? // 3、開始使用簡單日期格式化物件負責格式化日期成為我們喜歡的字串時間形式 String rs = sdf.format(d); System.out.println(rs); ? // 4、可以格式化時間毫秒值 long time = d.getTime() + 121 * 1000; System.out.println(sdf.format(time));
-
字串日期決議
public class SimpleDateFormatDemo2 { public static void main(String[] args) throws ParseException { // 目標2:掌握簡單日期格式化的決議操作, // 需要:把字串時間決議成日期物件 String dateStr = "2022-11-11 11:11:12"; // 1、創建簡單日期格式化物件, // 注意、注意、注意: 決議時間的格式必須與被決議時間的格式一模一樣,否則報錯! SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ? // 2、開始決議了(會報錯的,把例外拋出去,什么意思,今天會詳細講解) Date d = sdf.parse(dateStr); System.out.println(d); } }
-
Calendar
-
作用:代表的是系統此刻時間對應的日歷,通過它可以單獨獲取、修改時間中的年、月、日、時、分、秒等
-
構建物件和常用方法:
// 目標:掌握日歷類的使用, // 1、得到日歷物件 Calendar c = Calendar.getInstance(); System.out.println(c); // 2、獲取資訊:public int get(int field): int year = c.get(Calendar.YEAR); System.out.println(year); int days = c.get(Calendar.DAY_OF_YEAR); System.out.println(days); // 3、獲取日期物件(了解) Date d = c.getTime(); System.out.println(d); long time0 = d.getTime(); // 4、時間毫秒值(了解) long time = c.getTimeInMillis(); System.out.println(time); // 5、修改日歷的時間(需求:問89天后是什么日子) // 引數一:資訊欄位:一年中的第幾天 // 引數二:往后加多少天, c.add(Calendar.DAY_OF_YEAR, 89); Date d1 = c.getTime(); System.out.println(d1); c.set(Calendar.DAY_OF_YEAR, 364); // 直接修改日歷到某一天! Date d2 = c.getTime(); System.out.println(d2);
JDK8新增日期類
LocalDate、LocalTime、LocalDateTime
LocalDate:代表本地日期(年、月、日、星期) LocalTime:代表本地時間(時、分、秒、納秒) LocalDateTime:代表本地日期、時間(年、月、日、星期、時、分、秒、納秒)
ZoneId、ZonedDateTime
提供了一些帶時區的相關方法,
Instant
代表時間線上的某個時刻/時間戳
通過獲取Instant的物件可以拿到此刻的時間,該時間由兩部分組成:從1970-01-01 00:00:00 開始走到此刻的總秒數 + 不夠1秒的納秒數
DateTimeFormatter
可以用來格式化或者決議日期時間
public class Demo { // 目標:掌握JDK 8新增的DateTimeFormatter格式化器的用法, public static void main(String[] args) { // 1、創建一個日期時間格式化器物件出來, DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); // 2、對時間進行格式化 LocalDateTime now = LocalDateTime.now(); System.out.println(now); String rs = formatter.format(now); // 正向格式化 System.out.println(rs); // 3、格式化時間,其實還有一種方案, String rs2 = now.format(formatter); // 反向格式化 System.out.println(rs2); // 4、決議時間:決議時間一般使用LocalDateTime提供的決議方法來決議, String dateStr = "2029年12月12日 12:12:11"; LocalDateTime ldt = LocalDateTime.parse(dateStr, formatter); System.out.println(ldt); } }
Period、Duration
Period(一段時期)
l可以用于計算兩個 LocalDate物件 相差的年數、月數、天數,
public class PeriodDemo1 { public static void main(String[] args) { //張二狗的生日是1998年12月3日,請問到今天張二狗活了多長時間? => 基于Period進行差值計算 LocalDate ergouBirthday = LocalDate.of(1998, 12, 3); LocalDate now = LocalDate.now(); //public static Period between(LocalDate l1,LocalDate l2) Period period = Period.between(ergouBirthday, now); //基于get方法獲取差額資訊的資料資訊 getMonths:獲取的差額資訊中的月份【必須和年搭配在一起看】 //如果想查看總月份可以基于toTotalMonth進行獲取 int years = period.getYears(); int months = period.getMonths(); int days = period.getDays(); System.out.println(years + " " + months + " " + days); } }
Duration(持續時間)
可以用于計算兩個時間物件相差的天數、小時數、分數、秒數、納秒數;支持LocalTime、LocalDateTime、Instant等時間,
public class DurationDemo1 { public static void main(String[] args) { //晚上7:30開始考試,小明9:25:30秒交卷了 【計算小明總共答卷的耗時時間】 LocalTime startTime = LocalTime.of(19, 30, 0); LocalTime mingTime = LocalTime.of(21, 25, 30); //獲取兩個時間的差值 Duration duration = Duration.between(startTime, mingTime); //可以基于get方法來獲取差值中的相關資訊 long seconds = duration.getSeconds(); System.out.println("【seconds】:" + seconds); //可以基于to方法來獲取差值中的不同單位的總資訊【總共幾小時】【總共多少分鐘】【總共多少秒】 long hours = duration.toHours(); System.out.println("【hours】:" + hours); long minutes = duration.toMinutes(); System.out.println("【minutes】:" + minutes); long millis = duration.toMillis(); System.out.println("【millis】:" + millis); } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/545155.html
標籤:其他
