包裝類
基本數據類型(如:int、float、double、boolean、char 等)是不具備對象的特性的。比如基本類型不能調用方法、功能簡單等等。
為了讓基本數據類型也具備對象的特性, Java 為每個基本數據類型都提供了一個包裝類,這樣我們就可以像操作對象那樣來操作基本數據類型。
基本類型和包裝類之間的對應關系:
包裝類主要提供了兩大類方法:
- 將本類型和其他基本類型進行轉換的方法
- 將字符串和本類型及包裝類互相轉換的方法
如:Integer包裝類的構造方法
Interger包裝類的所有方法:
public class HelloWorld { public static void main(String[] args) { // 定義int類型變量,值為86 int score1 = 86; // 創建Integer包裝類對象,表示變量score1的值 Integer score2=new Integer(score1); // 將Integer包裝類轉換為double類型 double score3=score2.doubleValue(); // 將Integer包裝類轉換為float類型 float score4=score2.floatValue(); // 將Integer包裝類轉換為int類型 int score5 =score2.intValue(); System.out.println("Integer包裝類:" + score2); System.out.println("double類型:" + score3); System.out.println("float類型:" + score4); System.out.println("int類型:" + score5); } }
基本類型和包裝類之間經常需要互相轉換,以 Integer 為例(其他幾個包裝類的操作類似~):
在 JDK1.5 引入自動裝箱和拆箱的機制后,包裝類和基本類型之間的轉換就更加輕松便利了。
裝箱:把基本類型轉換成包裝類,使其具有對象的性質,又可分為手動裝箱和自動裝箱
拆箱:和裝箱相反,把包裝類對象轉換成基本類型的值,又可分為手動拆箱和自動拆箱
public class HelloWorld { public static void main(String[] args) { // 定義double類型變量 double a = 91.5; // 手動裝箱 Double b = new Double(a); // 自動裝箱 Double c = a; System.out.println("裝箱后的結果為:" + b + "和" + c); // 定義一個Double包裝類對象,值為8 Double d = new Double(87.0); // 手動拆箱 double e = d.doubleValue(); // 自動拆箱 double f = d; System.out.println("拆箱后的結果為:" + e + "和" + f); } }
基本類型和字符串之間的轉換
在程序開發中,經常需要在基本數據類型和字符串之間進行轉換。
基本類型轉換為字符串有三種方法:
- 使用包裝類的 toString() 方法
- 使用String類的 valueOf() 方法
- 用一個空字符串加上基本類型,得到的就是基本類型數據對應的字符串
將字符串轉換成基本類型有兩種方法:
- 調用包裝類的 parseXxx 靜態方法
- 調用包裝類的 valueOf() 方法轉換為基本類型的包裝類,會自動拆箱
PS:其他基本類型與字符串的相互轉化方法類似~
public class HelloWorld { public static void main(String[] args) { double m = 78.5; //將基本類型轉換為字符串 String str1 = String.valueOf(m); System.out.println("m 轉換為String型后與整數20的求和結果為: "+(str1+20)); String str = "180.20"; // 將字符串轉換為基本類型 Double a = Double.valueOf(str); System.out.println("str 轉換為double型后與整數20的求和結果為: "+(a+20)); } }
使用 Date 和 SimpleDateFormat 類表示時間
在程序開發中,經常需要處理日期和時間的相關數據,此時我們可以使用 java.util 包中的 Date 類。這個類最主要的作用就是獲取當前時間~
Date 類的使用:
使用 Date 類的默認無參構造方法創建出的對象就代表當前時間,我們可以直接輸出 Date 對象顯示當前的時間,顯示的結果如下:
其中, Fri 代表 Friday (星期五), Apr 代表 April (四月), 24 代表 24 號, CST 代表 China Standard Time (中國標准時間,也就是北京時間,東八區)。
上面的輸出結果中,默認的時間格式不是很友好,與我們日常看到的日期格式不太一樣,如果想要按指定的格式進行顯示,如:2020-04-24 09:48:00 ,該怎么做?
—— 此時就用到了 java.text 包中的 SimpleDateFormat 類。可以使用 SimpleDateFormat 來對日期時間進行格式化,如可以將日期轉換為指定格式的文本,也可將文本轉換為日期。
1. 使用 format() 方法將日期轉換為指定格式的文本
運行結果:
代碼中的 “yyyy-MM-dd HH:mm:ss” 為預定義字符串, yyyy 表示四位年, MM 表示兩位月份, dd 表示兩位日期, HH 表示小時(使用24小時制), mm 表示分鍾, ss 表示秒,這樣就指定了轉換的目標格式,最后調用 format() 方法將時間轉換為指定的格式的字符串。
2. 使用 parse() 方法將文本轉換為日期
運行結果:
代碼中的 “yyyy年MM月dd日 HH:mm:ss” 指定了字符串的日期格式,調用 parse() 方法將文本轉換為日期。
注意:
- 調用 SimpleDateFormat 對象的 parse() 方法時可能會出現轉換異常,即 ParseException ,因此需要進行異常處理
- 使用 Date 類時需要導入 java.util 包,使用 SimpleDateFormat 時需要導入 java.text 包
package com.example.demo; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class HelloWorld { public static void main(String[] args) throws ParseException { // 使用format()方法將日期轉換為指定格式的文本 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒"); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 創建Date對象,表示當前時間 Date now = new Date(); // 調用format()方法,將日期轉換為字符串並輸出 System.out.println( sdf1.format(now)); System.out.println(sdf2.format(now)); System.out.println(sdf3.format(now)); // 使用parse()方法將文本轉換為日期 String d = "2020-4-24 10:15:36"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 調用parse()方法,將字符串轉換為日期 Date date = sdf.parse(d); System.out.println(date); } }
運行結果:
Calendar 類的應用
Date 類最主要的作用就是獲得當前時間,同時這個類里面也具有設置時間以及一些其他的功能,但是由於本身設計的問題,這些方法卻遭到眾多批評,不建議使用,更推薦使用 Calendar 類進行時間和日期的處理。
java.util.Calendar 類是一個抽象類,可以通過調用 getInstance() 靜態方法獲取一個 Calendar 對象,此對象已由當前日期時間初始化,即默認代表當前時間。如:Calendar c = Calendar.getInstance();
使用 Calendar 獲取年、月、日、時間等信息:
運行結果:
其中,調用 Calendar 類的 getInstance() 方法獲取一個實例,然后通過調用 get() 方法獲取日期時間信息,參數為需要獲得的字段的值, Calendar.Year 等為 Calendar 類中定義的靜態常量。
Calendar 類提供了 getTime() 方法,用來獲取 Date 對象,完成 Calendar 和 Date 的轉換,還可通過 getTimeInMillis() 方法,獲取此 Calendar 的時間值,以毫秒為單位。如下所示:
運行結果:
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class HelloWorld { public static void main(String[] args) { // 創建Calendar對象 Calendar c = Calendar.getInstance(); // 將Calendar對象轉換為Date對象 Date date = c.getTime(); // 創建SimpleDateFormat對象,指定目標格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 將日期轉換為指定格式的字符串 String now = sdf.format(date); System.out.println("當前時間:" + now); } }
運行結果:
使用 Math 類操作數據
Math 類位於 java.lang 包中,包含用於執行基本數學運算的方法, Math 類的所有方法都是靜態方法,所以使用該類中的方法時,可以直接使用類名.方法名,如: Math.round();
常用的方法:
如:
運行結果:
PS: Math 類還提供了許多其他方法~
public class HelloWorld { public static void main(String[] args) { // 定義一個整型數組,長度為10 int[] nums = {0,1,2,3,4,5,6,7,8,9}; //通過循環給數組賦值 for (int i = 0; i < nums.length; i++) { // 產生10以內的隨機數 int x = (int)(Math.random()*10); nums[i] = x;// 為元素賦值 } // 使用foreach循環輸出數組中的元素 for ( int num:nums ) { System.out.print(num + " "); } } }
運行結果: