目錄
1.API
? ? 1.1定義:
2.Object類
? ? ?2.1 toString() 方法
? ? ?2.2 equals() 方法
3. Arrays 類
? ? ?3.1 equals() 方法
? ? ?3.2 sort() 方法
? ? ? ?3.2.1排序
? ? ? 3.2.2?自定義對象排序
3.3 binarySearch() 方法
3.4?copyOf() 方法
3.5 fill() 方法
3.6?toString() 方法
4.基本數據類型包裝類
? ? 4.1定義:
? ?4.2?包裝類的兩種主要用途
? ?4.3方法
5. String類
? ? 5.1定義
?? ?5.2 字符串類型創建對象的方式:
? ??5.3 判斷功能
? ??5.4 獲取功能
? ?5.5轉換功能
1.將char數組轉換為字符串對象的方法:
2.把字符串轉換為char數組的方法:
3.轉碼解碼
5.5 其他功能
一.將不同類型的數據轉換為字符串類型的兩種方法
二.大小寫轉換
三.字符串連接?
四.去除字符串空格
五.字符串拆分
六.字符串替換
6.StringBuffer StringBuilder類
6.1 定義
6.2 注意
6.3 功能及源碼
7. 正則表達式
? ? ? 7.1定義
? ? ?7.2使用規范及代碼
8.Random類
? ? 8.1定義
? ? 8.2使用規范及代碼
9.Date類
? ? 9.1 定義
? ? 9.2使用方法及源碼
10.Calendar 類
? ? ? 10.1定義:
? ? ? 10.2使用方法及源碼
11.SimpleDateFormat 類
? ? ? 11.1定義
? ? ? 11.2方法及源碼
? ? ? 11.3格式化表達:
12. BigInteger 類
? ? ? ? 12.1 定義
? ? ? ? 12.2使用方法及源碼
13.BigDecimal 類
? ? ? ? 13.1定義
? ? ? ? 13.2使用方法及源碼
1.API
? ? 1.1定義:
? ? ? ? API(applicant programming interface)應用程序編程接口
? ? ? ? 一般在開發中,api表示java語言中為我們提供的各種類和接口(基礎功能)
?java官方為開發人員提供了一個文檔 ,對語言中提供的接口和類進行說明,我們稱為API文檔
2.Object類
? ? ?2.1 toString() 方法
? ? ? ? ? ? 2.1.1定義:?
? ? ? ?在開發中,經常用到輸出一個對象,但是對象在內存中儲存,是不能直接輸出到控制臺的,一旦要輸出某個對象,那么會默認自動調用類中toString()方法,把對象中的信息,以字符的形式輸出
? ? ? ? ? ? ? 舉例:?
? ? ? ? ? ? ? 如果類中沒有定義toString()方法,那么就會在父類里面調用
? ? ? ? ? ? ? Object類中的toString()默認輸出的是對象在內存中的地址(Object類是所有類的父類)
? ? ??
package Objectdemo.toStringdemo;public class Person {private String name;private int 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;}//Object中的toString()方法輸出的是對象的地址,與我們想要的結果不一樣,那么我們就重寫toString方法@Overridepublic String toString() {return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';}
}
Object中的toString() 輸出的是對象的地址,與我們想要的結果不一樣,那么我們就重寫toString()
package Objectdemo.toStringdemo;public class ToStringDemo {public static void main(String[] args) {Person person = new Person();person.setAge(20);person.setName("Tom");System.out.println(person);}
}
2.2 equals() 方法
? ? ? 2.2.1 定義:
? ? ? ? ? ? ? Object類中 默認的equals(Object obj) 比較兩個對象的地址是否相等 , 與 == 效果相等
? ? ? ? ? ? ? 為了區分,開發人員把equals進行重寫, 從而比較 內容 是否相同??
? ? ? ? ? ? ?如果兩個相等,則返回值為true,否則返回值為false? ?(Boolean類型)
? ? ? 2.2.2 舉例:
package Objectdemo.Equalsdemo;
public class Person {String name;int 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;}//重寫equals方法,用來比較內容是否相等@Overridepublic boolean equals(Object obj) {//Person是自己定義的類,需要重寫equals方法if (obj instanceof Person){Person p = (Person)obj;//判斷,如果類型相同,就向下轉型return this.age == p.age && this.name.equals(p.name);//(name)String類型中的equals已經被重寫了,比較的是內容是否相同}return false;}
}
? 自己定義的類,需要重寫equals方法,系統中定義的類,一般情況下已經重寫過equals()方法了
package Objectdemo.Equalsdemo;public class Demo1 {public static void main(String[] args) {Person p1 = new Person();p1.setName("jim");p1.setAge(20);Person p2 = new Person();p2.setAge(20);p2.setName("jim");//比較p1和p2是否相等//1.比較地址是否相同System.out.println(p1==p2);//==左右,當兩邊是引用數據類型時,比較的是 地址 是否相等//2.比較內容是否相同System.out.println(p1.equals(p2));//默認調用equals(),也是比較對象地址是否相等;重寫后,比較的是內容是否相同}
}
3. Arrays 類
? ? ?3.1 equals() 方法
? ? ? ? ? ? 3.1.1 定義:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?比較兩個數組對象中元素是否相等.
? ? ? ? ? ??舉例:
package Arraysdemo.equalsdemo;import java.util.Arrays;public class Demo1 {public static void main(String[] args) {int[] a={1,2,3,4,5};int[] b={1,2,3,4,5,6};System.out.println(a==b);//比較地址System.out.println(Arrays.equals(a,b));//比較內容(Arrays類中的equals()已被重寫)}
}
3.2 sort() 方法
? ? ? ?3.2.1排序
? ? ? ? 舉例:
package Arraysdemo.Sortdemo;import java.util.Arrays;public class SortDemo1 {public static void main(String[] args) {int a[]={3,2,1,5,4};Arrays.sort(a);////對數組內容進行排序Arrays.sort(a,0,3);//對數組指定的 區間 進行排序(數組,包含開始的位置,不包含結束的位置)System.out.println(Arrays.toString(a));}
}
? ? ? 3.2.2?自定義對象排序
? ? ? ?需要為自定義的對象提供一個排序規則,即指定用哪個屬性(學號,字母...)進行排序
? ? ? ?compareTo()會在Arrays類中的sort()排序時會自動調用,根據返回的結果判斷兩個值誰大誰小;
? ? ? ?舉例:
package Arraysdemo.Sortdemo;public class Student implements Comparable<Student> {private int no;private String name;public Student(String name, int no) {this.name = name;this.no = no;}@Overridepublic String toString() {return "Student{" +"no=" + no +", name='" + name + '\'' +'}';}@Override //實現接口 要重寫抽象方法public int compareTo(Student o) {//用學號排序return this.no-o.no;//返回結果 小于0 等于0 大于0//用name排序//return this.name.compareTo(o.name);}
}
package Arraysdemo.Sortdemo;
import java.util.Arrays;//自定義對象排序
public class SortDemo2 {public static void main(String[] args) {//構造方法賦值Student student1 = new Student("b", 101);Student student2 = new Student("a", 102);Student student3 = new Student("c", 103);Student student4 = new Student("d", 104);Student student5 = new Student("e", 105);//開辟有5個空間的學生數組Student[] students = new Student[5];//將學生隨機裝入數組中students[0] = student3;students[1] = student2;students[2] = student5;students[3] = student1;students[4] = student4;//對學生數組進行排序Arrays.sort(students);System.out.println(Arrays.toString(students));}
}
3.3 binarySearch() 方法
? ? ? ?3.3.1 定義:
? ? ?二分查找算法(折半查找算法)
? ? (1)前提:數組要是有序的
? ? (2)方法:每次找到數組的中間值,用我們將要找的值與中間值進行比較。
? ? ? ? ? ? 如果我們要找的值大于中間值,就繼續向右邊查找 .然后再與右邊的中間值進行比較,以此類推,如果小于中間值就向左查找
? ? (3)舉例:
? ? ? ? ? ?int[] a = {1,2,3,4,5,6,7,8,9......,10000};
? ? ? ? ? ?判斷數組中是否包含 5535 這個元素
? ? ? ? ? ?常用做法是從第一個開始查找,效率低,時間長;但是如果使用
? ? ? ? ? ?二分查找(適合有序的大基數查找)直接從5000開始比較,加快了查找速率
package Arraysdemo.BinarySearchdemo;import java.util.Arrays;public class BinarySearchDemo1 {public static void main(String[] args) {int [] a= {9,5,8,7,2,6,4,3,1};Arrays.sort(a);//1.先排序成{1,2,3,4,5,6,7,8,9}//2.(要查找的數組,要尋找的元素) 如果返回負數,說明要尋找的值不存在System.out.println(Arrays.binarySearch(a, 9));//3.查找區間中的元素(要查找的數組,開始位置,結束位置,查找的元素)System.out.println(Arrays.binarySearch(a,0,5,3));}
}
3.4?copyOf() 方法
? ? ? ?3.4.1定義:
? ? ? ? ? ? ? ?數組復制,將原數組中的內容,復制到一個新創建的指定長度的數組
? ? ? ?舉例:
package Arraysdemo.Copyofdemo;import java.util.Arrays;public class CopyOfDemo {public static void main(String[] args) {int[] a = {1,2,3,4,5};//int[] b = new int[8];//[1,2,3,4,5,0,0,0]int[] b = Arrays.copyOf(a,8);//(原數組,新數組的長度)System.out.println(Arrays.toString(b));}
}
3.5 fill() 方法
? ? ? 3.5.1定義: 數組填充
? ? ? 舉例:
package Arraysdemo.Filldemo;
import java.util.Arrays;
public class FillDemo {public static void main(String[] args) {int[] a = {1,2,3,4,5};//(要填充的數組,要填充的元素)Arrays.fill(a,1);//將a數組中的元素全填充為1System.out.println(Arrays.toString(a));}
}
3.6?toString() 方法
? ? ? 3.6.1定義:
? ? ? ? ? ? ? 返回指定數組內容的字符串的表示形式
4.基本數據類型包裝類
? ? 4.1定義:
? ? ? ? ? ?由于java是面向對象的,但是8中基本類型的數據類型不是面向對象的,使用起來不方便,所以? ? ? ? ? ? ? ?java語言中,為8種基本數據類型,各提供一個包裝類進行表示,?包裝類中可以包含一個基本? ? ? ? ? ? ? ? ?類型值以及一些常用的操作方法(例如: 尋找整數的最大值, 將整數轉為二進制)
4.2?包裝類的兩種主要用途
● 包含每種基本數據類型的相關屬性(最大/小值)以及相關的操作方法
● 作為 與基本數據類型 對應的 類型存在
4.3方法
(1)基本方法和常用靜態方法
package basetypedemo;public class IntegerDemo1 {public static void main(String[] args) {//int類型的包裝類:Integer//基本方法System.out.println(Integer.MAX_VALUE);//最大值System.out.println(Integer.MIN_VALUE);//最小值System.out.println(Integer.BYTES);//4 含有的字節數System.out.println(Integer.SIZE);//32 含有的比特位//常用靜態方法System.out.println(Integer.max(10,5));//返回較大的值System.out.println(Integer.min(10,5));//返回較小的值System.out.println(Integer.toBinaryString(8));//2進制System.out.println(Integer.toHexString(28));//16進制System.out.println(Integer.toOctalString(9));//8進制System.out.println(Integer.compare(11, 10));//兩個數比大小--->返回 -1 0 1String a ="10";String b = "20";//例如 : String a ="10c"; 無法轉換為整數,會報錯int ai = Integer.parseInt(a);int bi = Integer.parseInt(b);System.out.println(ai+bi);//把字符串類型的數值,轉為基本類型數值,轉換時不能出現非數字的字符//同理可以調用其他基本類型的包裝類,就省略了}
}
(2)構造方法和實例方法
package basetypedemo;public class IntegerDemo2 {public static void main(String[] args) {//構造方法Integer i1 = new Integer(20);Integer i2 = new Integer("20");//會調用parseInt(),將Stirng轉為int類型的//實例方法System.out.println(i1.equals(i2));//equals(),比較Integer對象中的內容是否相等System.out.println(i1.compareTo(i2));//compareTo(),比較Integer對象中的數據大小String s = i1.toString();//toString(),將整數類型轉為String類型int a = i1.intValue();//intValue(),把包裝類型轉為基本類型}
}
5. String類
? 5.1定義
? ? ? ? ? ? ? ? ? ? java.lang.String 被final修飾,不能被繼承
? ? ? ? ? ? ? ? ? ? String是java中的字符串(用"? "表示),String類中有一個char數組,用來存儲字符串內容,
? ? ? ? ? ? ? ? ? ? 字符串對象一旦創建后,值就不能改變,改變值就是重新創建一個新的字符串對象
? 舉例:
package Stringdemo.Demo;public class Demo1 {public static void main(String[] args) {String s1 = new String("abc");s1 += "def";s1 += "ghi";s1 += "jkl";System.out.println(s1);}}
?
? ?5.2 字符串類型創建對象的方式:
? ? ? ? ? 1.賦值方式
? ? ? ? ? ? ? ? String s = "abc"; 類似于裝箱,隱式的創建了一個字符串對象
? ? ? ? ? 2.new方式
? ? ? ? ? ? ? ? String s = new String("abc");
package Stringdemo.Demo;public class Demo2 {public static void main(String[] args) {String s1 = "abc";String s2 = "abc";String s3 = new String("abc");String s4 = new String("abc");System.out.println(s1 == s2);//true/* s1和s2指向的是同一個地址,系統認為s1已經創建過一個"abc"對象,放在字符串常量池當中,當s2的值為"abc"時,常量池里如果有,就把s1的地址賦給s2*/System.out.println(s3 == s4);//falseSystem.out.println(s1.equals(s2));System.out.println(s3.equals(s4));}
}
?注意:字符串常量池
5.3 判斷功能
1. equals()方法 : 判斷內容是否一致
? ? equalsIgnoreCase() 方法: 判斷內容是否一致,且忽略大小寫
2.contains()方法 :?判斷是否包含某個內容
3. isEmpty()方法 :?判斷是否為空, 空返回true 否則返回false
4.startWith()方法 :?判斷是否為指定的子串作為開頭
5.endWith()方法 :?判斷是否為指定的子串作為結尾
package Stringdemo.Demo;public class Demo3 {public static void main(String[] args) {String s1 = "abcd";String s2 = "abCd";System.out.println(s1.equals(s2));//看內容是否一致System.out.println(s1.equalsIgnoreCase(s2));//看內容是否一致,且忽略大小寫System.out.println(s1.contains("bd"));//false 判斷是否包含一個整體 “bd”System.out.println(s1.contains("b"));//true 判斷是否包含“b”System.out.println(s1.isEmpty());//判斷是否為空 空返回true 否則返回falseSystem.out.println(s1.startsWith("ab"));//判斷是否為指定的子串作為開頭System.out.println(s1.endsWith("d"));//判斷是否為指定的子串作為結尾}
}
5.4 獲取功能
1.?length() 方法 : 獲取字符串的長度
2. charAt() 方法 : 獲取指定位置上的字符
3. indexOf() 方法:?獲取指定字符出現的位置,從前往后找
? ? lastindexOf()方法 : 獲取指定字符出現的位置,從后往前找
4.?substring() 方法 : 截取字符,從...開始
? ??substring( , )方法 : 截取字符,從...開始,到...結束
package Stringdemo.Demo;public class Demo4 {public static void main(String[] args) {String s1 = "abcdefg";//['a','b','c','d','e','f','g']System.out.println(s1.length());//獲取字符串的長度System.out.println(s1.charAt(2));//獲取指定位置上的字符System.out.println(s1.indexOf("c"));//獲取指定字符出現的位置,從前往后找System.out.println(s1.indexOf("c",3));System.out.println(s1.lastIndexOf("c"));//從后向前找System.out.println(s1.lastIndexOf("c",2));String s2 = s1.substring(2);//截取字符,從第2個位置開始System.out.println(s2);String s3 =s1.substring(3,4);//截取字符,從第3個位置開始,到第4個位置結束System.out.println(s3);}
}
5.5轉換功能
1.將char數組轉換為字符串對象的方法:
(1).構造方法
(2).valueOf()方法
2.把字符串轉換為char數組的方法:
toCharArray()方法
3.轉碼解碼
getBytes()方法
package Stringdemo.Demo;import java.util.Arrays;public class Demo6 {public static void main(String[] args) {//構造方法String s1 = new String();//創建一個字符串對象 this.value = "".value;String s2 = new String("abcd");//創建String類型的char[] chars ={'a','b','c','d'};//將char數組轉為字符串對象的方法:String s3 = String.valueOf(chars);//String類的valueOf()方法String s4 = new String(chars);//構造方法String s5 = "abcd";//把字符串轉為char數組的方法:char[] chars1 = s5.toCharArray();//toCharArray()方法Arrays.sort(chars);//對數組進行排序String s6 = new String(chars1);//把排好序的char數組轉為字符串 (因為字符串沒法排序,只有轉為數組才可以排序)System.out.println(s6);//轉換功能(轉碼解碼)String s7 = "abcd";//數據在傳輸時,都是以數字進行傳遞的byte[] bytes= s7.getBytes();//將看的懂的字符轉為看不懂的編碼System.out.println(Arrays.toString(bytes));//97 98 99 100String s8 = new String(bytes);//再 將看不懂的字節數組轉為看的懂的字符串System.out.println(s8);}
}
5.5 其他功能
?一.將不同類型的數據轉換為字符串類型的兩種方法
1.toString()?
? 用的比較少,如果a的值是整數,就不報錯。但是a的值是null,會報錯
2.valueOf()?----裝箱
? 用的比較多 即使值為null,轉換時也不會報錯
二.大小寫轉換
1.toLowerCase()
? 轉小寫
2.toUpperCase()
? 轉大寫
三.字符串連接?
concat() :?必須傳String類型
四.去除字符串空格
1.trim()?
? 去掉字符串前后的空格 不能去掉中間空格
2.replace()?
? 使用replace(),將中間空格替換
五.字符串拆分
split()?用指定的分隔符,將一個字符串拆分成數組,不會去除中間的空格
六.字符串替換
replace(原來的字符,替換后的字符)
package Stringdemo.Demo;import java.util.Arrays;public class Demo5 {public static void main(String[] args) {//一.將不同類型的數據轉換為字符串類型的兩種方法Integer a = null;/*1.toString()方法用的比較少,如果a的值是整數,就不報錯。但是a的值是null,會報錯。*///String s1 = a.toString();//會報錯/*2.valueOf()方法----裝箱用的比較多 即使值為null,轉換時也不會報錯*/String s = String.valueOf(a);System.out.println(s);//二.大小寫轉換String s3 = "abCD";System.out.println(s3.toLowerCase());// abcd 轉小寫System.out.println(s3.toUpperCase());// ABCD 轉大寫//三.字符串連接String s4 = s3.concat("efg");//concat()中必須傳String類型System.out.println(s4);//abCDefg 連接字符串//四.去除字符串空格//(1)去除前后空格String s5 = s3.trim();//去掉字符串前后的空格 不能去掉中間空格System.out.println(s5.length());//(2)去除中間空格----使用replace(),將中間空格替換//五.字符串拆分 String s6= "ab;cd :efg;hjk";String[] strings = s6.split(";");//用指定的分隔符,將一個字符串拆分成數組,不會去除中間的空格System.out.println(Arrays.toString(strings));//六.字符串替換String s7= "abcecc";String s8 = s7.replace("ce", "CD");//替換字符 (原來的字符,替換后的字符)System.out.println(s8);}
}
6.StringBuffer StringBuilder類
6.1 定義
? ? 由于String聲明的字符串是不可以改變的,每次拼接(+=)都會創建一個對象,效率低
? ? 所以java中提供了兩個值可變的字符串對象: StringBuffer 和 StringBuilder
6.2 注意
? ? ? 1.StringBuffer的創建不能通過賦值? 即StringBuffer stringBuffer =" ";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?只能通過new? 即StringBuffer stringBuffer = new StringBuffer();
? ? ? 2.StringBuffer內部存在一個沒有被final修飾的數組(默認長度16),可以向數組中存放字符
? ? ? ? ?裝滿后,會自動擴容 同時不會創建新的StringBuffer對象 效率高
? ? ? 2.?StringBuffer?: 在多線程場景下是安全的,因為它的方法都加了 鎖,一次只允許進一個
? ? ? ? ? StringBuilder?: 它的方法上,沒有加鎖,所以適合單線程場景
6.3 功能及源碼
? ? ? ? ? ? ? ?添加---刪除---替換---逆序
package Stringdemo.StringBuffer;public class StringBufferDemo {public static void main(String[] args) {StringBuffer stringBuffer1 = new StringBuffer();//無參的構造方法,默認容量是16StringBuffer stringBuffer2 = new StringBuffer("abcd");StringBuffer stringbuffer = new StringBuffer(10);//指定新的容量//String s = new StringBuffer(stringBuffer);//可以將StirngBuffer類型轉為String類,故此類中提供的方法較少//常用方法:stringbuffer.append("ss");//不能用 += 方法添加字符stringbuffer.append("bb");//向末尾添加元素stringbuffer.insert(3, "cnm");//向指定位置添加元素stringbuffer.deleteCharAt(1);//刪除指定位置上的值stringbuffer.delete(0,5);//刪除某個區間stringbuffer.replace(0,2,"cccccc");//把某個區間替換成其他stringbuffer.reverse();//逆序字符串 bmncbssSystem.out.println(stringbuffer);}
}
package Stringdemo.StringBuffer;public class StringBuilderDemo {public static void main(String[] args) {StringBuilder stringBuilder = new StringBuilder();stringBuilder.append("abcd");}}
7. 正則表達式
? ? 7.1定義
? ? ? ? 正則表達式(RegEx)是一種文本格式匹配工具,是計算機語言的一種技術,主流編程語言都支持
? ? ? ? 使用正則表達式中的元素,制定一個規則,用這個規則與字符串進行匹配?matches(),? ? ? ? ? ? ? ? ? 匹配成功返回true,否則返回false
? ? ?7.2使用規范及代碼
package Stringdemo.RegEx;public class RedExDemo {public static void main(String[] args) {//使用正則表達式,就可以很輕松的進行字符串的格式匹配 舉例:驗證手機號是否正確//正常方法 :遍歷字符串,驗證是否存在非數字字符 && 第一位必須為1 && 第二位為3579 && 其他位是數字String s1 = "154sdhsh_54@xxx.com";System.out.println(s1.matches("[0-9]"));//只能匹配一個數字//注意: "-"表示范圍 且要用[]表示System.out.println(s1.matches("[0-9]*"));// * 表示不限數字個數System.out.println(s1.matches("[0-9]{3}"));//只能是三個數字System.out.println(s1.matches("[0-9]{3,}"));//數字的個數可在三個以上System.out.println(s1.matches("[0-9]{3,6}"));//至少三個數字,最多6個System.out.println(s1.matches("\\d{3,6}"));// \\d 相當于[0-9],和上一行表示相同//正則表達式方法:驗證11位手機號是否規范System.out.println(s1.matches("[1][3,5,7,8,9][0-9]{9}"));String s = "bc";System.out.println(s.matches("[a-z]"));//只能是 一個 小寫字母,不能出現兩個字母System.out.println(s.matches("[a-zA-z]"));//表示為任意一個大小寫字母System.out.println(s.matches("[A-z]"));//因為a的值是大于A的值,所以不能表達為[a-Z]System.out.println(s.matches("\\w*"));// \\w 表示為[A-z0-9_]String s2 = "ahidc_ajd@qq.com.cn";//郵箱格式 154sdhsh_54 @ xxx . comSystem.out.println(s2.matches("\\w{6,20}@\\w{2,6}\\.(com|com\\.cn)"));/*注意:1."."可以代表任意字母數字或者符號,所以把 . 替換為 \\. ---->讓其只是單純的 . 而不是任意的字符2.使用正則表達式的時候不要輕易添加空格,可能會格式不正確*/}}
8.Random類
? ? 8.1定義
? ? ? ? ? ? ? ? ? Random類用于產生隨機數
? ? 8.2使用規范及代碼
package randomdemo;import java.util.Arrays;
import java.util.Random;public class RandomDemo {public static void main(String[] args) {Random random = new Random();System.out.println(random.nextInt());//在int類型的取值范圍內隨機返回一個整數System.out.println(random.nextBoolean());System.out.println(random.nextFloat());System.out.println(random.nextDouble());//在double類型的取值范圍內隨機返回一個數System.out.println(random.nextLong());//在0到指定區間內,隨機返回一個數 取值范圍:[0,指定數)System.out.println(random.nextInt(10));//在0到10之間隨機返回一個數//在數組空間中生成隨機數byte[] bytes= new byte[10];//創建一個有10個空間的數組random.nextBytes(bytes);System.out.println(Arrays.toString(bytes));//輸出}
}
9.Date類
? ?9.1 定義
? ? ? ??java.sql.Date 連接數據庫時使用
? ? ? ? java.util.Date 一個Date類的對象,表示當前系統運行那一刻的時間
? ? 9.2使用方法及源碼
package Datedemo;import java.util.Date;public class DateDemo {public static void main(String[] args) {Date date = new Date();System.out.println(date);System.out.println(date.getYear()+1900);//從1900年開始計算System.out.println(date.getMonth()+1);//在英文中1月記憶為0System.out.println(date.getDate());//日System.out.println(date.getDay());//把星期天記為第一周的開始System.out.println(date.getHours());//時System.out.println(date.getMinutes());//分System.out.println(date.getSeconds());//秒//getTime 獲得的是從 1970.1.1 0.0.0.秒 到 date對象創建時 所有的毫秒值System.out.println(date.getTime());Date date1 = new Date();System.out.println(date1.getTime()-date.getTime());//獲得兩次時間的 毫秒差Date date2 = new Date(1739430660659l);//將毫秒差還原成某一時間System.out.println(date2);}
}
10.Calendar 類
? ? ? 10.1定義:
? ? ? ? ? ? ? 相比起Date類中方法,更加全面
? ? ? ? ? ? ? 使用時調用 getInstance() 方法
? ? ? 10.2使用方法及源碼
? ? ? ?舉例:
package Calendardemo;import java.util.Calendar;public class CalendarDemo {public static void main(String[] args) {//創建一個日歷對象Calendar calendar= Calendar.getInstance();//獲得Calender的一個子類對象GregorianCalendar//時間表示System.out.println(calendar.get(Calendar.YEAR));//年System.out.println(calendar.get(Calendar.MONTH)+1);//月System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//日System.out.println(calendar.get(Calendar.HOUR));//時 12小時制System.out.println(calendar.get(Calendar.HOUR_OF_DAY));//時 24小時制System.out.println(calendar.get(Calendar.MINUTE));//分System.out.println(calendar.get(Calendar.SECOND));//秒//第... 中第...System.out.println(calendar.get(Calendar.WEEK_OF_MONTH));//月中的第幾周System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//周中的第多少天System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//今年的第多少天//其他表達省略.....//相當于Date類中的getTime()方法 獲得的是從 1970.1.1 0.0.0.秒 到 date對象創建時 所有的毫秒值System.out.println(calendar.getTimeInMillis());}
}
11.SimpleDateFormat 類
? ? ?11.1定義
? ? ? ?? 日期格式化 (java.text)
? ? ? ? 1.將日期類型轉為指定格式的字符串 format()
? ? ? ? 2.將指定格式的字符串轉為日期類型 parse()
? ? ? 11.2方法及源碼
舉例:
package SimpleDateFormatdemo;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class SimpleDateFormatDemo {public static void main(String[] args) throws ParseException {Date date = new Date();//將日期類型 轉為字符串類型 年 月 日 時 分 秒 毫秒 星期SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss S E");String s1= simpleDateFormat.format(date);System.out.println(s1);//將字符串類型轉為日期類型String dateStr = "2002-02-02";SimpleDateFormat simpleDateFormat1= new SimpleDateFormat("yyyy-MM-dd");Date date1 = simpleDateFormat1.parse(dateStr);System.out.println(date1);}
}
? ? ? 11.3格式化表達:
12. BigInteger 類
? ? ? ?12.1 定義
? ? ? ? ? BigInteger類型是一個數字范圍比Integer , Long類型的數字范圍大得多的類型,它支持任意精度的整數,即 在運算中 BigInteger 類型可以準確地表示任何大小的整數值而不會丟失任何息。
? ? ? ? 12.2使用方法及源碼
package BigIntegerdemo;import java.math.BigInteger;public class BigIntegerDemo {public static void main(String[] args) {System.out.println(Long.MAX_VALUE);BigInteger bigInteger1 = new BigInteger("9999999999999999999999");BigInteger bigInteger2 = new BigInteger("1111111111111111111111");//加法BigInteger bigInteger3 = bigInteger1.add(bigInteger2);System.out.println(bigInteger3);//乘法BigInteger bigInteger4 = bigInteger1.multiply(bigInteger2);System.out.println(bigInteger4);//其他方法省略......}
}
13.BigDecimal 類
? ? ? ?13.1定義
? ? ? 問題: 在計算機中,float?和 double 都是浮點數 , 而計算機是二進制的,浮點數會失去一定的精確度?(根本原因是 十進制浮點值沒有完全與之相同的二進制形式 , 十進制浮點值的二進制表示形式不精確,只能無限接近于那個值.)
? ? ? 舉例 :?在金融項目這種情況很危險,例如涉及金額的計算 , 都必須十分精確,如果你的支付寶賬戶余額顯示 193.99999999999998,那是一種怎么樣的體驗?
? ? ? 解決方法 :?使用BigDecimal類中的方法進行運算
? ? ? ? 13.2使用方法及源碼
package BigDecimaldemo;import java.math.BigDecimal;public class BigDecimalDemo {public static void main(String[] args) {//System.out.println(0.1+0.2);//0.30000000000000004//浮點數運算BigDecimal bigDecimal1 = new BigDecimal("0.1");BigDecimal bigDecimal2 = new BigDecimal("0.2");BigDecimal bigDecimal3 = bigDecimal1.add(bigDecimal2);System.out.println(bigDecimal3);BigDecimal bigDecimal4 = new BigDecimal("10");BigDecimal bigDecimal5 = new BigDecimal("3");BigDecimal bigDecimal6 = bigDecimal4.divide(bigDecimal5,3,3);//方法.(要操作的變量,保留小數的位數,進位的模式 )System.out.println(bigDecimal6);}
}