Java常用類筆記(學習尚硅谷java基礎教程)


一、Java根類Object類
1、toString()方法
1)以文本對象返回,故toString()的定義為public String toString() {}
2)默認的字符串輸出是:包.類名@對象的十六進制哈希碼。【每一個java對象都有一個hash Code用於標識對象】
3)可以重寫。比如返回對象的某些屬性等。 return "這個對象的名字是【"+name+"】,年齡是【"+age+"】。";
4)System.out.println(對象名); 自動調用toString()方法。區別System.out.println(變量名)直接打印這個變量的值。

2、equals()方法
1)equals()方法用於比較兩個對象的內容是否相同。而”==“運算符是比較兩個引用變量是否指向同一個實例。
2)可以重寫,比如比較兩個對象的屬性值。

二、String類: (區別於int char和boolean。)
一、常用特性
String聲明為final類,不可被繼承。public final class String……
String接口特性:實現了Serializable接口:表示字符串是支持序列化的。實現了Comparable接口:表示String可以比較大小的。
通過字符數組存儲字符串數據:private final char value[];
String的不可變特性:【出現以下情況時都是在方法區常量池中新建一個地址用於存放新的字符】
1.當對字符串重新賦值時。
2.當對現有的字符串進行連接操作時。
3.當調用String的replace()方法修改指定字符或字符串時。
通過字面量的方式(區別於new)給一個字符串賦值,此時的字符串值聲明在字符串常量池中。
字符串常量池中是不會存儲相同內容的字符串的。
二、String的實例化方法
1、通過字面量的方法聲明的數據被存放在方法區的字符串常量池中。
2、通過new+構造器的方法聲明的數據被存放在開辟的堆空間中。當然具體初始化的數據還是會存放在常量池中,堆中的value指向常量池中的數據。
三、字符串的拼接存儲特性:
 常量與常量的拼接結果在常量池。且常量池中不會存在相同內容的常量。
JVM中字符串常量池存放位置說明:
jdk 1.6(jdk 6.e,java 6.e):字符串常量池存儲在方法區(永久區)
jdk 1.7:字符串常量池存儲在堆空間
jdk 1.8:字符串常量池存儲在方法區(元空間)|
 只要其中有一個是變量,結果就在堆中
 如果拼接的結果調用intern()方法,返回值就在常量池中
String s1="Hello";
String s2="World";
String s3="HelloWorld";
String s4="Hello"+"World";
String s5=s1+"World";
String s6="Hello"+s2;
String s7=s1+s2;

//true
System.out.println(s3 == s4);
//以下都是false
System.out.println(s3 == s5);
System.out.println(s3 == s6);
System.out.println(s3 == s7);
System.out.println(s5 == s6);
System.out.println(s5 == s7);
System.out.println(s6 == s7);

String s8=s5.intern();
//輸出:true。intern返回值在常量池中
System.out.println(s3 == s8);
四、String屬於引用數據類型。在傳遞參數時基本數據類型傳遞時的數據,引用數據類型傳遞的是地址。
String和char[]數組都屬於引用數據類型,但是String有不可變性的屬性。但是當其他變量指向了這個String類型變量,如果后面的變量發生改變,
原來String變量是不會改變的。只會重新開辟一個新的空間來存放,而不影響原有變量。而char[]數組沒有不可變性,當變量變量指向同一個地址時,
其中一個改變會引起另外一個發生改變。
附加:char[]數組輸出后自動拼接字符:
char[] ch = { 't', 'e', 's', 't' };
int[] ints={1,2,3,4,5};
float[] fla={1,2,3};
double[] dou={1,2,3};
System.out.println(ch); //test
System.out.println(ints);//[I@4554617c
System.out.println(fla); //[F@74a14482
System.out.println(dou); //[D@1540e19d
五、String使用陷阱
 String s1 = "a";
說明:在字符串常量池中創建了一個字面量為"a"的字符串。
 s1 = s1 + "b";
說明:實際上原來的“a”字符串對象已經丟棄了,現在在堆空間中產生了一個字符串s1+"b"(也就是"ab")。如果多次執行這些改變串內容的操作,
會導致大量副本字符串對象存留在內存中,降低效率。如果這樣的操作放到循環中,會極大影響程序的性能。
 String s2 = "ab";
說明:直接在字符串常量池中創建一個字面量為"ab"的字符串。
 String s3 = "a" + "b";
說明:s3指向字符串常量池中已經創建的"ab"的字符串。
 String s4 = s1.intern();
說明:堆空間的s1對象在調用intern()之后,會將常量池中已經存在的"ab"字符串
賦值給s4。
六、常用方法:
int length():返回字符串的長度: return value.length
char charAt(int index): 返回某索引處的字符return value[index]
boolean isEmpty():判斷是否是空字符串:return value.length == 0
String toLowerCase():使用默認語言環境,將 String 中的所有字符轉換為小寫
String toUpperCase():使用默認語言環境,將 String 中的所有字符轉換為大寫
String trim():返回字符串的副本,忽略前導空白和尾部空白
boolean equals(Object obj):比較字符串的內容是否相同
boolean equalsIgnoreCase(String anotherString):與equals方法類似,忽略大小寫
String concat(String str):將指定字符串連接到此字符串的結尾。 等價於用“+”
int compareTo(String anotherString):比較兩個字符串的大小
String substring(int beginIndex):返回一個新的字符串,它是此字符串的從beginIndex開始截取到最后的一個子字符串。
String substring(int beginIndex, int endIndex) :返回一個新字符串,它是此字符串從beginIndex開始截取到endIndex(不包含)的一個子字符串。
boolean endsWith(String suffix):測試此字符串是否以指定的后綴結束
boolean startsWith(String prefix):測試此字符串是否以指定的前綴開始
boolean startsWith(String prefix, int toffset):測試此字符串從指定索引開始的子字符串是否以指定前綴開始
boolean contains(CharSequence s):當且僅當此字符串包含指定的 char 值序列時,返回 true
int indexOf(String str):返回指定子字符串在此字符串中第一次出現處的索引
int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出現處的索引,從指定的索引開始
int lastIndexOf(String str):返回指定子字符串在此字符串中最右邊出現處的索引
int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出現處的索引,從指定的索引開始反向搜索
String replace(char oldChar, char newChar):返回一個新的字符串,它是通過用 newChar 替換此字符串中出現的所有 oldChar 得到的。
String replaceAll(String regex, String replacement):使用給定的 replacement 替換此字符串所有匹配給定的正則表達式的子字符串。
String replaceFirst(String regex, String replacement):使用給定的 replacement 替換此字符串匹配給定的正則表達式的第一個子字符串。
String replace(CharSequence target, CharSequence replacement):使用指定的字面值替換序列替換此字符串所有匹配字面值目標序列的子字符串。
boolean matches(String regex):告知此字符串是否匹配給定的正則表達式。
String[] split(String regex):根據給定正則表達式的匹配拆分此字符串。
String[] split(String regex, int limit):根據匹配給定的正則表達式來拆分此字符串,最多不超過limit個,如果超過了,剩下的全部都放到最后一個元素中。
String 與基本數據類型、包裝類之間的轉換。
String --> 基本數據類型、包裝類:調用包裝類的靜態方法:parseXxx(str)
基本數據類型、包裝類 --> String:調用String重載的valueOf(xxx)
String 與 char[]之間的轉換
String --> char[]:調用String的toCharArray()
char[] --> String:調用String的構造器
七、String、StringBuffer、StringBuilder
java.lang.StringBuffer代表可變的字符序列,JDK1.0中聲明,可以對字符串內容進行增刪,此時不會產生新的對象。很多方法與String相同。作為參數傳遞時,
方法內部可以改變值
1、區別
String:不可變的字符序列; 底層使用char[]存儲
StringBuffer:可變的字符序列;線程安全的,效率低; 底層使用char[]存儲
StringBuilder:可變的字符序列;jdk5.0新增的,線程不安全的,效率高; 底層使用char[]存儲
2、StringBuffer
StringBuffer():初始容量為16的字符串緩沖區
StringBuffer(int size):構造指定容量的字符串緩沖區
StringBuffer(String str):將內容初始化為指定字符串內容
StringBuffer append(xxx):提供了很多的append()方法,用於進行字符串拼接
StringBuffer delete(int start,int end):刪除指定位置的內容
StringBuffer replace(int start, int end, String str):把[start,end)位置替換為str
StringBuffer insert(int offset, xxx):在指定位置插入xxx
StringBuffer reverse() :把當前字符序列逆轉
public int indexOf(String str)
public String substring(int start,int end):返回一個從start開始到end索引結束的左閉右開區間的子字符串
public int length()
public char charAt(int n )
public void setCharAt(int n ,char ch)
3、StringBuilder
StringBuilder 和 StringBuffer 非常類似,均代表可變的字符序列,而且提供相關功能的方法也一樣
4、String與StringBuffer、StringBuilder之間的轉換
string-->StringBuffer、StringBuilder:調用stringBuffer、StringBuilder構造器
StringBuffer、StringBuilder--> 方法一:String:調用String構造器。 方法二: StringBuffer、StringBuilder的toString()方法

三、JDK8之前日期時間API
1. java.lang.System類
System類提供的public static long currentTimeMillis()用來返回當前時間與1970年1月1日0時0分0秒之間以毫秒為單位的時間差。 此方法適於計算時間差。
計算世界時間的主要標准有:
UTC(Coordinated Universal Time)
GMT(Greenwich Mean Time)
CST(Central Standard Time)
2、java.util.Date類表示特定的瞬間,精確到毫秒。
構造器:
 Date(): 使用無參構造器創建的對象可以獲取本地當前時間。
 Date(long date): 創建指定毫秒數的date對象。
常用方法
 getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 對象表示的毫秒數。
 toString():把此 Date 對象轉換為以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天
        (Sun, Mon, Tue,Wed, Thu, Fri, Sat),zzz是時間標准。
 其它很多方法都過時了。

3. java.sql.Date類
構造器:
 java.sql.Date(long date): 創建指定毫秒數的date對象。
常用方法
 getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 java.sql.Date 對象表示的毫秒數。
 toString():把此 Date 對象轉換為以下形式:2020-10-11
如何將java.util.Date對象轉換為java.sql.Date對象
//情況一:
Date date = new java.sql.Date(2343243242323L);
java.sql.Date date1 = (java.sql.Date) date;
//情況二:
Date date2 = new Date();
java.sql.Date date3 = new java.sql.Date(date2.getTime());
4. java.text.SimpleDateFormat類
構造器
無參構造器:產生默認的格式,比如”20-10-11 下午7:12“。
有參構造器:可以自定義格式,可以通過指定的方式格式化和解析,參見API。比如SimpleDateFormat simple = new SimpleDateFormat("yyyy年MM月dd日");
方法:
format():從默認時間格式到設置字符格式。
parse(): 從設置字符格式到默認時間格式。
需要拋出 ParseException異常,防止輸入的格式不匹配創建對象時設置的格式。
5. java.util.Calendar(日歷)類 ******Calendar是抽象基類*****
實例化:因為是抽象類,所以不能創建其對象。
方式一:創建其子類(GregorianCalendar)的對象
方式二:調用其靜態方法getInstance()、
這兩種方式創建的對象對位Calendar子類GregorianCalendar的對象
GregorianCalendar gc = new GregorianCalendar();
//getClass()方法輸出當前對象是屬於哪個方法的對象
//輸出class java.util.GregorianCalendar
System.out.println(gc.getClass());

//方式二:調用其靜態方法getInstance()
Calendar cal = Calendar.getInstance();
//輸出class java.util.GregorianCalendar
System.out.println(cal.getClass());
用法:
一個Calendar的實例是系統時間的抽象表示,通過get(int field)方法來取得想要的時間信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND
//運行時間時間:2020年9月11日星期天,20時:43分:24秒
GregorianCalendar calendar = new GregorianCalendar();
System.out.println(calendar.get(Calendar.YEAR)); //2020
System.out.println(calendar.get(Calendar.MONTH)); //9
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); //11
System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); //1
System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); //20
System.out.println(calendar.get(Calendar.MINUTE)); //43
System.out.println(calendar.get(Calendar.SECOND)); //24

注意:
 獲取月份時:一月是0,二月是1,以此類推,12月是11
 獲取星期時:周日是1,周二是2 , 。。。。周六是7

常用方法
get():返回給定日歷字段的值 [例如Calendar.DAY_OF_MONTH 形式叫做一個日歷字段]
GregorianCalendar calendar = new GregorianCalendar();
int days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days);
//輸出:當前時間中這個月的第幾天。

set():將給定的日歷字段設置為給定的值
//calendar可變性:set返回值為void。所以調用set方法時直接改變了對象屬性。
calendar.set(Calendar.DAY_OF_MONTH,22);
days = calendar.get(Calendar.DAY_OF_MONTH);
//輸出:22 不管現在時月的第幾天,已經設置成了22.
System.out.println(days);

add():將指定的(已簽名的)時間添加到給定的日歷字段。正數增加,負數回退。
calendar.add(Calendar.DAY_OF_MONTH,-3);
days = calendar.get(Calendar.DAY_OF_MONTH);
//輸出:19 從22號回退3天即19號。
System.out.println(days);

getTime():日歷類---> Date
Date date = calendar.getTime();
//輸出:Mon Oct 19 21:09:33 CST 2020 與Date類創建的對象輸出類似(獲取星期時:周日是1,周二是2 , 。。。。周六是7):所以相處一天
System.out.println(date);
Date date1 = new Date();
//輸出:Sun Oct 11 21:09:33 CST 2020 跟上面結果格式相同
System.out.println(date1.toString());

setTime():Date ---> 日歷類
Date date2 = new Date();
calendar.setTime(date2);
days = calendar.get(Calendar.DAY_OF_MONTH);
//輸出:11(11號)
System.out.println(days);


四、JDK8中新日期時間API
一、解決問題舊的API問題:
可變性:像日期和時間這樣的類應該是不可變的。
偏移性:Date中的年份是從1900開始的,而月份都從0開始。
格式化:格式化只對Date有用,Calendar則不行。
此外,它們也不是線程安全的;不能處理閏秒等。
二、主要包:
java.time – 包含值對象的基礎包
本地日期(LocalDate)、本地時間(LocalTime)、本地日期時間(LocalDateTime)、時區(ZonedDateTime)和持續時間(Duration)的類。
java.time.chrono – 提供對不同的日歷系統的訪問
java.time.format – 格式化和解析時間和日期
java.time.temporal – 包括底層框架和擴展特性
java.time.zone – 包含時區支持的類
說明:大多數開發者只會用到基礎包和format包,也可能會用到temporal包。因此,盡
管有68個新的公開類型,大多數開發者,大概將只會用到其中的三分之一。
三、重點內容:
一、類:
LocalDate代表IOS格式(yyyy-MM-dd)的日期,可以存儲 生日、紀念日等日期。
LocalTime表示一個時間,而不是日期。
LocalDateTime是用來表示日期和時間的,這是一個最常用的類之一。
Instant是用來表示在時間線上的瞬間點。
DateTimeFormatter:格式化或解析日期、時間類似於SimpleDateFormat
……
二、方法:
LocalTime、、LocalDate、LocalDateTime類的方法
now():靜態方法。獲取當前的日期、時間、日期+時間
of():靜態方法。設置指定的年、月、日、時、分、秒。沒有偏移量
getXxx():獲取相關的屬性
withXxx():將月份天數、年份天數、月份、年份修改為指定的值並返回新的對象(with相當於set的意思)
plusXxx():向當前對象添加幾天、幾周、幾個月、幾年、幾小時並返回新的對象。
minusXxx():從當前對象減去幾月、幾周、幾天、幾年、幾小時並返回新的對象。
Instant類的方法
now() :靜態方法,返回默認UTC時區的Instant類的對象。從指定的時鍾獲取當前時刻。獲取本初子午線對應的標准時間
atOffset(ZoneOffset offset):結合即時的偏移來創建一個 OffsetDateTime
ofEpochMilli(long epochMilli):靜態方法,返回在1970-01-01 00:00:00基礎上加上指定毫秒數之后的Instant類的對象
toEpochMilli():返回1970-01-01 00:00:00到當前時間的毫秒數,即為時間戳
DateTimeFormatter方法
三種格式化方式:
 預定義的標准格式。如:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME
 本地化相關的格式。如:ofLocalizedDateTime(FormatStyle.LONG)。 FormatStyle.LONG / FormatStyle.MEDIUM / FormatStyle.SHORT :適用於LocalDateTime
 自定義的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
方法:
format(TemporalAccessor t): 格式化一個日期、時間,返回字符串
parse(CharSequence text): 將指定格式的字符序列解析為一個日期、時間
ofPattern(String pattern):靜態方法 , 返 回 一 個 指 定 字 符 串 格 式 的DateTimeFormatter


四、其它API
ZoneId:該類中包含了所有的時區信息,一個時區的ID,如 Europe/Paris
Clock:使用時區提供對當前即時、日期和時間的訪問的時鍾。
持續時間:Duration,用於計算兩個“時間”間隔
日期間隔:Period,用於計算兩個“日期”間隔
TemporalAdjuster : 時間校正器。有時我們可能需要獲取例如:將日期調整到“下一個工作日”等操作。


五、 Java比較器-----對象數組的排序問題,涉及到對象之間的比較問題
一、前言
ava中的對象,正常情況下,只能進行比較:== 或 != 。不能使用 > 或 < 的但是在開發場景中,我們需要對多個對象進行排序,言外之意,就需要比較對象的大小。
        所以產生了java比較器。
二、實現:
使用兩個接口中的任何一個:Comparable 或 Comparator
三、自然排序:java.lang.Comparable
1、簡明:自定義類來說,如果需要排序,我們可以讓自定義類實現Comparable接口,重寫compareTo(obj)方法。在compareTo(obj)方法中指明如何排序.
2、實現:
 Comparable 的類必須實現 compareTo(Object obj) 方法,兩個對象即通過 compareTo(Object obj) 方法的返回值來比較大小。如果當前對象this大於形參對象obj,則返回正整數,如果當前對象this小於形參對象obj,則返回負整數,如果當前對象this等於形參對象obj,則返回零。
 實現Comparable接口的對象列表(和數組)可以通過 Collections.sort 或Arrays.sort進行自動排序。實現此接口的對象可以用作有序映射中的鍵或有序集合中的元素,無需指定比較器。
 對於類 C 的每一個 e1 和 e2 來說,當且僅當 e1.compareTo(e2) == 0 與e1.equals(e2) 具有相同的 boolean 值時,類 C 的自然排序才叫做與 equals一致。建議(雖然不是必需的)最好使自然排序與 equals 一致。
3、重寫compareTo(obj)的規則:
如果當前對象this大於形參對象obj,則返回正整數,
如果當前對象this小於形參對象obj,則返回負整數,
如果當前對象this等於形參對象obj,則返回零。
4、Comparable 的典型實現:(默認都是從小到大排列的)
String:按照字符串中字符的Unicode值進行比較
Character:按照字符的Unicode值來進行比較
數值類型對應的包裝類以及BigInteger、BigDecimal:按照它們對應的數值大小進行比較
Boolean:true 對應的包裝類實例大於 false 對應的包裝類實例
Date、Time等:后面的日期時間比前面的日期時間大
5、菜雞雜記
Arrays.sort(goodslist);
System.out.println(Arrays.toString(goodslist));
數組的sort方法的調用:
數組的sort方法的定義為 public static void sort(Object[] a) {}。是靜態的,可以直接類名.方法名。
無返回值,而是直接把數組進行了排序
()內為一個數組對象。要對這個數組對象排序那么這個數組類就要實現Comparable 或 Comparator,(Object obj) 方法

四、定制排序:java.util.Comparator
1、簡明
當元素的類型沒有實現java.lang.Comparable接口而又不方便修改代碼(如jdk原有的),或者實現了java.lang.Comparable接口的排序規則不適合當前的操作(如:String從大到小),那么可以考慮使用 Comparator 的對象來排序,強行對多個對象進行整體排序的比較。
2、實現:
重寫compare(Object o1,Object o2)方法,比較o1和o2的大小:如果方法返回正整數,則表示o1大於o2;如果返回0,表示相等;返回負整數,表示o1小於o2。
3、其他:
 可以將 Comparator 傳遞給 sort 方法(如 Collections.sort 或 Arrays.sort),從而允許在排序順序上實現精確控制。
 還可以使用 Comparator 來控制某些數據結構(如有序 set或有序映射)的順序,或者為那些沒有自然順序的對象 collection 提供排序。
4、案例:
public void comparatorTest(){
String[] arr = new String[]{"AA","CC","KK","MM","GG","JJ","DD"};
Arrays.sort(arr, new Comparator<String>() {
@Override
//改變compareTo默認的從小到大排列,按照字符串從大到小的順序排列
public int compare(String o1, String o2) {
return -o1.compareTo(o2);
}
});
//輸出結果:[MM, KK, JJ, GG, DD, CC, AA]
System.out.println(Arrays.toString(arr));
}
五、Comparable接口與Comparator的使用的對比:
*Comparable接口的方式一旦一定,保證Comparable接口實現類的對象在任何位置都可以比較大小。
*Comparator接口屬於臨時性的比較。

六、System類
 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代表正常退出,非零代表異常退出。使用該方法可以在圖形界面編程中實現程序的退出功能等。
 void gc():該方法的作用是請求系統進行垃圾回收。至於系統是否立刻回收,則取決於系統中垃圾回收算法的實現以及系統執行時的情況。
 String getProperty(String key):該方法的作用是獲得系統中屬性名為key的屬性對應的值。系統中常見的屬性名以及屬性的作用如下表所示:
java.version Java運行時環境版本
java.home Java安裝目錄
os.name 操作系統的名稱
os.version 操作系統的版本
user.name 用戶的賬戶名稱
user.home 用戶的主目錄
user.dir 用戶的當前工作目錄

七、Math類
一、初始:java.lang.Math提供了一系列靜態方法用於科學計算。其方法的參數和返回值類型一般為double型。
二、常用方法:
abs 絕對值
acos,asin,atan,cos,sin,tan 三角函數
sqrt 平方根
pow(double a,doble b) a的b次冪
log 自然對數
exp e為底指數
max(double a,double b)
min(double a,double b)
random() 返回0.0到1.0的隨機數
long round(double a) double型數據a轉換為long型(四舍五入)
toDegrees(double angrad) 弧度—>角度
toRadians(double angdeg) 角度—>弧度

九、BigInteger
 Integer類作為int的包裝類,能存儲的最大整型值為2^31-1,Long類也是有限的,最大為2^63-1。如果要表示再大的整數,不管是基本數據類型還是他們的包裝類都無能為力,更不用說進行運算了。
 java.math包的BigInteger可以表示不可變的任意精度的整數。BigInteger 提供所有 Java 的基本整數操作符的對應物,並提供 java.lang.Math 的所有相關方法。另外,BigInteger 還提供以下運算:模算術、GCD 計算、質數測試、素數生成、位操作以及一些其他操作。
 構造器:BigInteger(String val):根據字符串構建BigInteger對象
 常用方法
 public BigInteger abs():返回此 BigInteger 的絕對值的 BigInteger。
 BigInteger add(BigInteger val) :返回其值為 (this + val) 的 BigInteger
 BigInteger subtract(BigInteger val) :返回其值為 (this - val) 的 BigInteger
 BigInteger multiply(BigInteger val) :返回其值為 (this * val) 的 BigInteger
 BigInteger divide(BigInteger val) :返回其值為 (this / val) 的 BigInteger。整數相除只保留整數部分。
 BigInteger remainder(BigInteger val) :返回其值為 (this % val) 的 BigInteger。
 BigInteger[] divideAndRemainder(BigInteger val):返回包含 (this / val) 后跟(this % val) 的兩個 BigInteger 的數組。
 BigInteger pow(int exponent) :返回其值為 (thisexponent) 的 BigInteger。

十、BigDecimal
 一般的Float類和Double類可以用來做科學計算或工程計算,但在商業計算中,要求數字精度比較高,故用到java.math.BigDecimal類。
 BigDecimal類支持不可變的、任意精度的有符號十進制定點數。
 構造器
 public BigDecimal(double val)
 public BigDecimal(String val)
 常用方法
 public BigDecimal add(BigDecimal augend)
 public BigDecimal subtract(BigDecimal subtrahend)
 public BigDecimal multiply(BigDecimal multiplicand)
 public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)





視頻網址:https://www.bilibili.com/video/BV1Kb411W75N









免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM