日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础:常见对象

發布時間:2025/4/16 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础:常见对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第一講 ? API

一、API概述

1、API(Application Programming Interface) :應用程序編程接口 2、編寫一個機器人程序去控制機器人踢足球,程序就需要向機器人發出向前跑、向后跑、射門、搶球等各種命令,沒有編過程序的人很難想象這樣的程序如何編寫。但是對于有經驗的開發人員來說,知道機器人廠商一定會提供一些用于控制機器人的Java類,這些類中定義好了操作機器人各種動作的方法。其實,這些Java類就是機器人廠商提供給應用程序編程的接口,大家把這些類稱為Xxx Robot API。本章涉及的Java API指的就是JDK中提供的各種功能的Java類。 3、Java API就是Java提供給我們使用的類,這些類將底層的實現封裝了起來,我們不需要關心這些類是如何實現的,只需要學習這些類如何使用。我們可以通過查幫助文檔來了解Java提供的API如何使用。

二、學習漢語和學習編程的異同點

? ? ? ?學習編程和學習漢語的異同點: ? ? ? ?A:學好漢語,首先必須掌握漢語的語法,學好編程,也必須先學習編程語言的基本語法,我們前面講解的就可以認為的Java的編程語法。 ? ? ? ?B:學好漢語,還要掌握大量的成語,雖然不是要把所有的成語都掌握,但至少掌握的越過,描述事物時用詞就會越恰當,越準確,越快捷,文章也會寫的越流暢。同理,學習編程語言掌握了大量的API,就像掌握的了大量的成語一樣,可以讓我們在處理某些問題時會輕而易舉,同時,我們還能夠從這些API中學到大師們組織Java類的方法,劃分類的技巧。 ? ? ? ?C:學好漢語,除了要掌握語法和成語外,還應該學會寫文章的技巧和手法,比如說議論文該怎么寫(風頭論點明確,豬肚論據充分,豹尾論尾有力),才能寫出好的文章。同理,學習編程,也需要掌握分析和解決問題的手法,養成良好的編程風格和習慣,體會出編程的感覺。學習漢語,我們可以從大量的唐詩宋詞和現代散文中去體會寫文章的技巧,同時聽取老師的講解和分析。同樣,學習編程,也要聽取有經驗的程序的分析和講解,并從別人的優秀的程序中去找感覺和經驗。 當然了,他們還是有一些區別的。最大的區別及時,學習漢語是,好多東西必須先記住了,用的時候,才能有。有句成員不是說:書到用時方恨少嗎。但是,學習編程了,就不用這樣了,可以用的時候,臨時獲取,現學現用,當然這是指我們有了一定的編程感覺和經驗后了。 ? ? ? ?如何算學會呢?很多人都認為我把老師的代碼多敲幾遍就算學會了,我就應該會做很多的東西了,但是,事實是什么呢,是我們老師講解能聽懂,也能看懂很多代碼,就是不會寫,這是正常的現象,因為我們的內功還不夠,還得繼續修煉。我們學習漢語,能看懂一般的文章,能寫篇小文章,就算學會了,同理,學習編程也是這樣的,能看懂老師,在會寫老師寫過的代碼了,然后多思考,多總結,隨著時間的積累,才能真正的走向高手的水平。到那個時刻估計就是:只要給我API,你要做什么,我就能做什么。以前是學好數理化,走遍天下都不怕,現在是掌握API,編程世界我不怕。

第二講 ? ?常用類

一、Object類

1、Object類概述

? ? ?類層次結構的根類,所有類都直接或者間接的繼承自該類。

2、構造方法

? ? ?public Object()
? ? ?回想面向對象中為什么說:子類的構造方法默認訪問的是父類的無參構造方法

3、Object類的成員方法

(1)public int hashCode()
? ? ? ? A:返回該對象的哈希碼值。默認情況下,該方法會根據對象的地址來計算。
? ? ? ? B:不同對象的,hashCode()一般來說不會相同。但是,同一個對象的hashCode()值肯定相同。
? ? ? ? C:不是對象的實際地址值,可以理解為邏輯地址值。舉例:物體和編號。
(2)public final Class getClass()
? ? ? ? A:返回此 Object 的運行時類。
? ? ? ? B:可以通過Class類中的一個方法,獲取對象的真實類的全名稱:public String getName()
package cn.itcast_01;/** Object:類 Object 是類層次結構的根類。每個類都使用 Object 作為超類。* 每個類都直接或者間接的繼承自Object類。* * Object類的方法:* public int hashCode():返回該對象的哈希碼值。* 注意:哈希值是根據哈希算法計算出來的一個值,這個值和地址值有關,但是不是實際地址值。* 你可以理解為地址值。* * public final Class getClass():返回此 Object 的運行時類* Class類的方法:* public String getName():以 String 的形式返回此 Class 對象所表示的實體*/ public class StudentTest {public static void main(String[] args) {Student s1 = new Student();System.out.println(s1.hashCode()); // 11299397Student s2 = new Student();System.out.println(s2.hashCode());// 24446859Student s3 = s1;System.out.println(s3.hashCode()); // 11299397System.out.println("-----------");Student s = new Student();Class c = s.getClass();String str = c.getName();System.out.println(str); // cn.itcast_01.Student//鏈式編程String str2 = s.getClass().getName();System.out.println(str2);} } 運行結果:
(3)public String toString()
A:返回該對象的字符串表示。
? ? ??底層源碼。
? ? ??public static String valueOf(Object obj) {
? ? ? ? return (obj == null) ? "null" : obj.toString();
? ? ? ? ? }
B:它的值等于:?
? ? ? getClass().getName() + '@' + Integer.toHexString(hashCode())?
C:由于默認情況下的數據對我們來說沒有意義,一般建議重寫該方法。
? ? ? a:手動重寫
? ? ? b:自動生成
package cn.itcast_02;/** public String toString():返回該對象的字符串表示。* * Integer類下的一個靜態方法:* public static String toHexString(int i):把一個整數轉成一個十六進制表示的字符串* * 這個信息的組成我們講解完畢了,但是這個信息是沒有任何意義的。所以,建議所有子類都重寫該方法。* 怎么重寫呢?* 把該類的所有成員變量值組成返回即可。* 重寫的最終版方案就是自動生成toString()方法。* * 注意:* 直接輸出一個對象的名稱,其實就是調用該對象的toString()方法。*/ public class StudentDemo {public static void main(String[] args) {Student s = new Student();System.out.println(s.hashCode());System.out.println(s.getClass().getName());System.out.println("--------------------");System.out.println(s.toString());// cn.itcast_02.Student@42552cSystem.out.println("--------------------");// toString()方法的值等價于它// getClass().getName() + '@' + Integer.toHexString(hashCode())// this.getClass().getName()+'@'+Integer.toHexString(this.hashCode())// cn.itcast_02.Student@42552c// cn.itcast_02.Student@42552cSystem.out.println(s.getClass().getName() + '@'+ Integer.toHexString(s.hashCode()));System.out.println(s.toString());// 直接輸出對象的名稱System.out.println(s);} } 運行結果:
(4)public boolean equals(Object obj)

A:指示其他某個對象是否與此對象“相等”。?
B:默認情況下比較的是對象的引用是否相同。
C:由于比較對象的引用沒有意義,一般建議重寫該方法。
? ? ? a:手動重寫
? ? ? b:自動生成
D:==和equals()的區別。
? ? ? ==:基本類型:比較的就是值是否相同;引用類型:比較的就是地址值是否相同
? ? ? equals:引用類型:默認情況下,比較的是地址值。不過,我們可以根據情況自己重寫該方法。一般重寫都是自動生成,比較對象的成員變量值是否相同
package cn.itcast_03;/** public boolean equals(Object obj):指示其他某個對象是否與此對象“相等”。 * 這個方法,默認情況下比較的是地址值。比較地址值一般來說意義不大,所以我們要重寫該方法。* 怎么重寫呢?* 一般都是用來比較對象的成員變量值是否相同。* 重寫的代碼優化:提高效率,提高程序的健壯性。* 最終版:* 其實還是自動生成。* * 看源碼:* public boolean equals(Object obj) {* //this - s1* //obj - s2* return (this == obj);* }*/ public class StudentDemo {public static void main(String[] args) {Student s1 = new Student("林青霞", 27);Student s2 = new Student("林青霞", 27);System.out.println(s1 == s2); // falseStudent s3 = s1;System.out.println(s1 == s3);// trueSystem.out.println("---------------");System.out.println(s1.equals(s2)); // obj = s2; //falseSystem.out.println(s1.equals(s1)); // trueSystem.out.println(s1.equals(s3)); // trueStudent s4 = new Student("風清揚",30);System.out.println(s1.equals(s4)); //falseDemo d = new Demo();System.out.println(s1.equals(d)); //ClassCastException} }class Demo {} (5)protected void finalize() A:當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。 B:垃圾回收器不會馬上回收垃圾,但是我們可以建議它盡快回收垃圾。(System.gc()方法) C:主要針對堆內存。 (6)protected Object clone() 創建并返回此對象的一個副本,這種克隆機制十分高效,而且二者之間完全隔離。 自定義類實現克隆步驟: A:自定義類實現Cloneable接口,這是一個標記性接口,實現這個接口的類的對象可以實現自我克隆。 B:自定義類中重寫Object類的clone()方法。 C:重寫clone()方法時通過super.clone()調用Object類的clone()方法來得到該對象的副本,并返回該副本。 注意: ? ? ? ? ? A:克隆和兩個引用指向同一個對象的區別? B:Object類clone()方法雖然簡單,易用,但僅僅是一種”淺克隆”,它只克隆該對象所有的Field值,不會對引用類型的Field所引用的對象進行克隆。開發中,我們也可以實現對象的”深度克隆”。 package cn.itcast_04;/** protected void finalize():當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。用于垃圾回收,但是什么時候回收不確定。* protected Object clone():創建并返回此對象的一個副本。* A:重寫該方法** Cloneable:此類實現了 Cloneable 接口,以指示 Object.clone() 方法可以合法地對該類實例進行按字段復制。 * 這個接口是標記接口,告訴我們實現該接口的類就可以實現對象的復制了。*/ public class StudentDemo {public static void main(String[] args) throws CloneNotSupportedException {//創建學生對象Student s = new Student();s.setName("林青霞");s.setAge(27);//克隆學生對象Object obj = s.clone();Student s2 = (Student)obj;System.out.println("---------");System.out.println(s.getName()+"---"+s.getAge());System.out.println(s2.getName()+"---"+s2.getAge());//以前的做法Student s3 = s;System.out.println(s3.getName()+"---"+s3.getAge());System.out.println("---------");//其實是有區別的s3.setName("劉意");s3.setAge(30);System.out.println(s.getName()+"---"+s.getAge());System.out.println(s2.getName()+"---"+s2.getAge());System.out.println(s3.getName()+"---"+s3.getAge());} }運行結果:

二、Scanner類

1、Scanner類概述

? ? ?JDK5以后用于獲取用戶的鍵盤輸入

2、構造方法

? ? ?public Scanner(InputStream source):構造一個新的 Scanner,它生成的值是從指定的輸入流掃描的。
package cn.itcast_01;/** Scanner:用于接收鍵盤錄入數據。* * 前面的時候:* A:導包* B:創建對象* C:調用方法* * System類下有一個靜態的字段:* public static final InputStream in; 標準的輸入流,對應著鍵盤錄入。* * InputStream is = System.in;* * class Demo {* public static final int x = 10;* public static final Student s = new Student();* }* int y = Demo.x;* Student s = Demo.s;* * * 構造方法:* Scanner(InputStream source)*/ import java.util.Scanner;public class ScannerDemo {public static void main(String[] args) {// 創建對象Scanner sc = new Scanner(System.in);int x = sc.nextInt();System.out.println("x:" + x);} } 運行結果:

3、Scanner類的成員方法

(1)基本格式
? ? ? ? hasNextXxx() ?判斷是否還有下一個輸入項,其中Xxx可以是Int,Double等。如果需要判斷是否包含下一個字符串,則可以省略Xxx
? ? ? ? nextXxx() ?獲取下一個輸入項。Xxx的含義和上個方法中的Xxx相同
? ? ? ? 默認情況下,Scanner使用空格,回車等作為分隔符
package cn.itcast_02;import java.util.Scanner;/** 基本格式:* public boolean hasNextXxx():判斷是否是某種類型的元素* public Xxx nextXxx():獲取該元素* * 舉例:用int類型的方法舉例* public boolean hasNextInt()* public int nextInt()* * 注意:* InputMismatchException:輸入的和你想要的不匹配*/ public class ScannerDemo {public static void main(String[] args) {// 創建對象Scanner sc = new Scanner(System.in);// 獲取數據if (sc.hasNextInt()) {int x = sc.nextInt();System.out.println("x:" + x);} else {System.out.println("你輸入的數據有誤");}} } 運行結果:

(2)常用方法
? ? ? ? ?public int nextInt():獲取一個int類型的值
? ? ? ? public String nextLine():獲取一個String類型的值

package cn.itcast_03;import java.util.Scanner;/** 常用的兩個方法:* public int nextInt():獲取一個int類型的值* public String nextLine():獲取一個String類型的值* * 出現問題了:* 先獲取一個數值,在獲取一個字符串,會出現問題。* 主要原因:就是那個換行符號的問題。* 如何解決呢?* A:先獲取一個數值后,在創建一個新的鍵盤錄入對象獲取字符串。* B:把所有的數據都先按照字符串獲取,然后要什么,你就對應的轉換為什么。*/ public class ScannerDemo {public static void main(String[] args) {// 創建對象Scanner sc = new Scanner(System.in);// 獲取兩個int類型的值// int a = sc.nextInt();// int b = sc.nextInt();// System.out.println("a:" + a + ",b:" + b);// System.out.println("-------------------");// 獲取兩個String類型的值// String s1 = sc.nextLine();// String s2 = sc.nextLine();// System.out.println("s1:" + s1 + ",s2:" + s2);// System.out.println("-------------------");// 先獲取一個字符串,在獲取一個int值// String s1 = sc.nextLine();// int b = sc.nextInt();// System.out.println("s1:" + s1 + ",b:" + b);// System.out.println("-------------------");// 先獲取一個int值,在獲取一個字符串// int a = sc.nextInt();// String s2 = sc.nextLine();// System.out.println("a:" + a + ",s2:" + s2);// System.out.println("-------------------");<pre name="code" class="java"> }} 運行結果:

三、Arrays類

1、Arrays類概述

? ? ?針對數組進行操作的工具類。提供了排序,查找等功能。

2、成員方法

? ? ?(1)public static String toString(int[] a):把數組轉成字符串? ? ? ? ? ?(2)public static void sort(int[] a):對數組進行排序? ? ? ? ? ?(3)public static int binarySearch(int[] a,int key):二分查找 package cn.itcast_05;import java.util.Arrays;/** Arrays:針對數組進行操作的工具類。比如說排序和查找。* 1:public static String toString(int[] a) 把數組轉成字符串* 2:public static void sort(int[] a) 對數組進行排序* 3:public static int binarySearch(int[] a,int key) 二分查找*/ public class ArraysDemo {public static void main(String[] args) {// 定義一個數組int[] arr = { 24, 69, 80, 57, 13 };// public static String toString(int[] a) 把數組轉成字符串System.out.println("排序前:" + Arrays.toString(arr));// public static void sort(int[] a) 對數組進行排序Arrays.sort(arr);System.out.println("排序后:" + Arrays.toString(arr));// [13, 24, 57, 69, 80]// public static int binarySearch(int[] a,int key) 二分查找System.out.println("binarySearch:" + Arrays.binarySearch(arr, 57));System.out.println("binarySearch:" + Arrays.binarySearch(arr, 577));} }運行結果:

四、Math類

1、Math類概述

? ? ?Math 類包含用于執行基本數學運算的方法,如初等指數、對數、平方根和三角函數。?

2、成員方法

? ? ?public static int abs(int a):絕對值
? ? ?public static double ceil(double a):向上取整
? ? ?public static double floor(double a):向下取整
? ? ?public static int max(int a,int b) ?:最大值
? ? ?public static double pow(double a,double b):a的b次冪
? ? ?public static double random():隨機數 [0.0,1.0)
? ? ?public static int round(float a) :四舍五入
? ? ?public static double sqrt(double a):正平方根
package cn.itcast_01;/** Math:用于數學運算的類。* 成員變量:* public static final double PI* public static final double E* 成員方法:* public static int abs(int a):絕對值* public static double ceil(double a):向上取整* public static double floor(double a):向下取整* public static int max(int a,int b):最大值 * public static double pow(double a,double b):a的b次冪* public static double random():隨機數 [0.0,1.0)* public static int round(float a) 四舍五入* public static double sqrt(double a):正平方根*/ public class MathDemo {public static void main(String[] args) {// public static final double PISystem.out.println("PI:" + Math.PI);// public static final double ESystem.out.println("E:" + Math.E);System.out.println("--------------");// public static int abs(int a):絕對值System.out.println("abs:" + Math.abs(10));System.out.println("abs:" + Math.abs(-10));System.out.println("--------------");// public static double ceil(double a):向上取整System.out.println("ceil:" + Math.ceil(12.34));System.out.println("ceil:" + Math.ceil(12.56));System.out.println("--------------");// public static double floor(double a):向下取整System.out.println("floor:" + Math.floor(12.34));System.out.println("floor:" + Math.floor(12.56));System.out.println("--------------");// public static int max(int a,int b):最大值System.out.println("max:" + Math.max(12, 23));// 需求:我要獲取三個數據中的最大值// 方法的嵌套調用System.out.println("max:" + Math.max(Math.max(12, 23), 18));// 需求:我要獲取四個數據中的最大值System.out.println("max:"+ Math.max(Math.max(12, 78), Math.max(34, 56)));System.out.println("--------------");// public static double pow(double a,double b):a的b次冪System.out.println("pow:" + Math.pow(2, 3));System.out.println("--------------");// public static double random():隨機數 [0.0,1.0)System.out.println("random:" + Math.random());// 獲取一個1-100之間的隨機數System.out.println("random:" + ((int) (Math.random() * 100) + 1));System.out.println("--------------");// public static int round(float a) 四舍五入(參數為double的自學)System.out.println("round:" + Math.round(12.34f));System.out.println("round:" + Math.round(12.56f));System.out.println("--------------");//public static double sqrt(double a):正平方根System.out.println("sqrt:"+Math.sqrt(4));} } 運行結果:

五、Random類

1、Random類概述

? ? ?此類用于產生隨機數,如果用相同的種子創建兩個 Random 實例,則對每個實例進行相同的方法調用序列,它們將生成并返回相同的數字序列。

2、構造方法

? ? ?public Random():沒有給種子,用的是默認種子,是當前時間的毫秒值
? ? ?public Random(long seed):給出指定的種子

3、成員方法

? ? ?public int nextInt():返回的是int范圍內的隨機數
? ? ?public int nextInt(int n):返回的是[0,n)范圍的內隨機數
package cn.itcast_01;import java.util.Random;/** Random:產生隨機數的類* * 構造方法:* public Random():沒有給種子,用的是默認種子,是當前時間的毫秒值* public Random(long seed):給出指定的種子** 給定種子后,每次得到的隨機數是相同的。** 成員方法:* public int nextInt():返回的是int范圍內的隨機數* public int nextInt(int n):返回的是[0,n)范圍的內隨機數*/ public class RandomDemo {public static void main(String[] args) {// 創建對象// Random r = new Random();Random r = new Random(1111);for (int x = 0; x < 10; x++) {// int num = r.nextInt();int num = r.nextInt(100) + 1;System.out.println(num);}} } 運行結果:

六、System類

1、System類概述

System 類包含一些有用的類字段和方法。它不能被實例化。?

2、成員方法

public static void gc():運行垃圾回收器。 public static void exit(int status):終止當前正在運行的 Java 虛擬機。參數用作狀態碼;根據慣例,非 0 的狀態碼表示異常終止。? public static long currentTimeMillis():返回以毫秒為單位的當前時間 public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):從指定源數組中復制一個數組,復制從指定的位置開始,到目標數組的指定位置結束。 System.gc()可用于垃圾回收。當使用System.gc()回收某個對象所占用的內存之前,通過要求程序調用適當的方法來清理資源。在沒有明確指定資源清理的情況下,Java提高了默認機制來清理該對象的資源,就是調用Object類的finalize()方法。finalize()方法的作用是釋放一個對象占用的內存空間時,會被JVM調用。而子類重寫該方法,就可以清理對象占用的資源,該方法有沒有鏈式調用,所以必須手動實現。 從程序的運行結果可以發現,執行System.gc()前,系統會自動調用finalize()方法清除對象占有的資源,通過super.finalize()方式可以實現從下到上的finalize()方法的調用,即先釋放自己的資源,再去釋放父類的資源。 但是,不要在程序中頻繁的調用垃圾回收,因為每一次執行垃圾回收,jvm都會強制啟動垃圾回收器運行,這會耗費更多的系統資源,會與正常的Java程序運行爭搶資源,只有在執行大量的對象的釋放,才調用垃圾回收最好 package com.itheima;import java.util.Arrays;class Person1 {private String name;private int age;public Person1() {super();}public Person1(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}@Overrideprotected void finalize() throws Throwable {System.out.println("當前的對象被回收了" + this);super.finalize();}}/** System類包含一些有用的類字段和方法。它不能被實例化。* * 方法: public static void gc():運行垃圾回收器。 public static void exit(int* status):終止當前正在運行的 Java 虛擬機。參數用作狀態碼;根據慣例,非 0 的狀態碼表示異常終止。 public static long* currentTimeMillis():返回以毫秒為單位的當前時間 public static void arraycopy(Object src,int* srcPos,Object dest,int destPos,int length)* 從指定源數組中復制一個數組,復制從指定的位置開始,到目標數組的指定位置結束。*/ public class SystemDemo {public static void main(String[] args) {Person1 p = new Person1("趙雅芝", 60);System.out.println(p);p = null; // 讓p不再指定堆內存System.gc();// System.out.println("我們喜歡林青霞(東方不敗)");// System.exit(0);// System.out.println("我們也喜歡趙雅芝(白娘子)");// System.out.println(System.currentTimeMillis());// 單獨得到這樣的實際目前對我們來說意義不大// 那么,它到底有什么作用呢?// 要求:請大家給我統計這段程序的運行時間long start = System.currentTimeMillis();for (int x = 0; x < 100000; x++) {System.out.println("hello" + x);}long end = System.currentTimeMillis();System.out.println("共耗時:" + (end - start) + "毫秒");// 定義數組int[] arr = { 11, 22, 33, 44, 55 };int[] arr2 = { 6, 7, 8, 9, 10 };// 請大家看這個代碼的意思System.arraycopy(arr, 1, arr2, 2, 2);System.out.println(Arrays.toString(arr));System.out.println(Arrays.toString(arr2));} }運行結果:

七、BigInteger類

1、BigInteger類概述

? ? ?可以讓超過Integer范圍內的數據進行運算

2、構造方法

? ? ?public BigInteger(String val):將 BigInteger 的十進制字符串表示形式轉換為 BigInteger

3、成員方法

? ? ?public BigInteger add(BigInteger val):加
? ? ?public BigInteger subtract(BigInteger val):減
? ? ?public BigInteger multiply(BigInteger val):乘
? ? ?public BigInteger divide(BigInteger val):除
? ? ?public BigInteger[] divideAndRemainder(BigInteger val):返回商和余數的數組
package cn.itcast_02;import java.math.BigInteger;/** public BigInteger add(BigInteger val):加* public BigInteger subtract(BigInteger val):減* public BigInteger multiply(BigInteger val):乘* public BigInteger divide(BigInteger val):除* public BigInteger[] divideAndRemainder(BigInteger val):返回商和余數的數組*/ public class BigIntegerDemo {public static void main(String[] args) {BigInteger bi1 = new BigInteger("100");BigInteger bi2 = new BigInteger("50");// public BigInteger add(BigInteger val):加System.out.println("add:" + bi1.add(bi2));// public BigInteger subtract(BigInteger val):加System.out.println("subtract:" + bi1.subtract(bi2));// public BigInteger multiply(BigInteger val):加System.out.println("multiply:" + bi1.multiply(bi2));// public BigInteger divide(BigInteger val):加System.out.println("divide:" + bi1.divide(bi2));// public BigInteger[] divideAndRemainder(BigInteger val):返回商和余數的數組BigInteger[] bis = bi1.divideAndRemainder(bi2);System.out.println("商:" + bis[0]);System.out.println("余數:" + bis[1]);} }運行結果:

八、BigDecimal類

1、BigDecimal類概述

? ? ?由于在運算的時候,float類型和double很容易丟失精度,演示案例。所以,為了能精確的表示、計算浮點數,Java提供了BigDecimal,不可變的、任意精度的有符號十進制數。

2、構造方法

? ? ?public BigDecimal(String val):將 BigDecimal 的字符串表示形式轉換為 BigDecimal

3、成員方法

? ? ?public BigDecimal add(BigDecimal augend):加 ? ? ?public BigDecimal subtract(BigDecimal subtrahend):減
? ? ?public BigDecimal multiply(BigDecimal multiplicand):乘
? ? ?public BigDecimal divide(BigDecimal divisor):除
? ? ?public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):商,幾位小數,如何舍取
package cn.itcast_02;import java.math.BigDecimal;/** 構造方法:* public BigDecimal(String val)* * public BigDecimal add(BigDecimal augend)* public BigDecimal subtract(BigDecimal subtrahend)* public BigDecimal multiply(BigDecimal multiplicand)* public BigDecimal divide(BigDecimal divisor)* public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):商,幾位小數,如何舍取*/ public class BigDecimalDemo {public static void main(String[] args) {// System.out.println(0.09 + 0.01);// System.out.println(1.0 - 0.32);// System.out.println(1.015 * 100);// System.out.println(1.301 / 100);BigDecimal bd1 = new BigDecimal("0.09");BigDecimal bd2 = new BigDecimal("0.01");System.out.println("add:" + bd1.add(bd2));System.out.println("-------------------");BigDecimal bd3 = new BigDecimal("1.0");BigDecimal bd4 = new BigDecimal("0.32");System.out.println("subtract:" + bd3.subtract(bd4));System.out.println("-------------------");BigDecimal bd5 = new BigDecimal("1.015");BigDecimal bd6 = new BigDecimal("100");System.out.println("multiply:" + bd5.multiply(bd6));System.out.println("-------------------");BigDecimal bd7 = new BigDecimal("1.301");BigDecimal bd8 = new BigDecimal("100");System.out.println("divide:" + bd7.divide(bd8));System.out.println("divide:"+ bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP));System.out.println("divide:"+ bd7.divide(bd8, 8, BigDecimal.ROUND_HALF_UP));} } 運行結果:

九、Calendar類

1、Calendar類概述

? ? ?Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日歷字段之間的轉換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。

2、成員方法

? ? ?public static Calendar getInstance():獲取實例
? ? ?public int get(int field):返回給定日歷字段的值。日歷類中的每個日歷字段都是靜態的成員變量,并且是int類型。
? ? ?public void add(int field,int amount):根據給定的日歷字段和對應的時間,來對當前的日歷進行操作。
? ? ?public final void set(int year,int month,int date):設置當前日歷的年月日
package cn.itcast_02;import java.util.Calendar;/** public void add(int field,int amount):根據給定的日歷字段和對應的時間,來對當前的日歷進行操作。* public final void set(int year,int month,int date):設置當前日歷的年月日*/ public class CalendarDemo {public static void main(String[] args) {// 獲取當前的日歷時間Calendar c = Calendar.getInstance();// 獲取年int year = c.get(Calendar.YEAR);// 獲取月int month = c.get(Calendar.MONTH);// 獲取日int date = c.get(Calendar.DATE);System.out.println(year + "年" + (month + 1) + "月" + date + "日");// // 三年前的今天// c.add(Calendar.YEAR, -3);// // 獲取年// year = c.get(Calendar.YEAR);// // 獲取月// month = c.get(Calendar.MONTH);// // 獲取日// date = c.get(Calendar.DATE);// System.out.println(year + "年" + (month + 1) + "月" + date + "日");// 5年后的10天前c.add(Calendar.YEAR, 5);c.add(Calendar.DATE, -10);// 獲取年year = c.get(Calendar.YEAR);// 獲取月month = c.get(Calendar.MONTH);// 獲取日date = c.get(Calendar.DATE);System.out.println(year + "年" + (month + 1) + "月" + date + "日");System.out.println("--------------");c.set(2011, 11, 11);// 獲取年year = c.get(Calendar.YEAR);// 獲取月month = c.get(Calendar.MONTH);// 獲取日date = c.get(Calendar.DATE);System.out.println(year + "年" + (month + 1) + "月" + date + "日");} } 運行結果:

3、Calendar練習

1、獲取任意一年的二月有多少天 package cn.itcast_03;import java.util.Calendar; import java.util.Scanner;/** 獲取任意一年的二月有多少天* * 分析:* A:鍵盤錄入任意的年份* B:設置日歷對象的年月日* 年就是A輸入的數據* 月是2* 日是1* C:把時間往前推一天,就是2月的最后一天* D:獲取這一天輸出即可*/ public class CalendarTest {public static void main(String[] args) {// 鍵盤錄入任意的年份Scanner sc = new Scanner(System.in);System.out.println("請輸入年份:");int year = sc.nextInt();// 設置日歷對象的年月日Calendar c = Calendar.getInstance();c.set(year, 2, 1); // 其實是這一年的3月1日// 把時間往前推一天,就是2月的最后一天c.add(Calendar.DATE, -1);// 獲取這一天輸出即可System.out.println(c.get(Calendar.DATE));} } 運行結果:

總結

以上是生活随笔為你收集整理的Java基础:常见对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。