基本型別包裝類的作用
將基本數據型別封裝成物件的好處在於可以在物件中定義更多的功能方法操作該數據
常用的操作之一:用於基本數據型別與字串之間的轉換
基本型別對應的包裝類
基本數據型別 | 包裝類 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Integer類概述
包裝一個物件中的原始型別 int 的值
Integer類構造方法
方法名 | 說明 |
---|---|
public Integer(int value) | 根據 int 值建立 Integer 物件(過時) |
public Integer(String s) | 根據 String 值建立 Integer 物件(過時) |
public static Integer valueOf(int i) | 返回表示指定的 int 值的 Integer 範例 |
public static Integer valueOf(String s) | 返回一個儲存指定值的 Integer 物件 String |
範例程式碼
public class IntegerDemo {
public static void main(String[] args) {
//public Integer(int value):根據 int 值建立 Integer 物件(過時)
Integer i1 = new Integer(100);
System.out.println(i1);
//public Integer(String s):根據 String 值建立 Integer 物件(過時)
Integer i2 = new Integer("100");
// Integer i2 = new Integer("abc"); //NumberFormatException
System.out.println(i2);
System.out.println("--------");
//public static Integer valueOf(int i):返回表示指定的 int 值的 Integer 範例
Integer i3 = Integer.valueOf(100);
System.out.println(i3);
//public static Integer valueOf(String s):返回一個儲存指定值的Integer物件 String
Integer i4 = Integer.valueOf("100");
System.out.println(i4);
}
}
int轉換爲String
轉換方式
範例程式碼
public class IntegerDemo {
public static void main(String[] args) {
//int --- String
int number = 100;
//方式1
String s1 = number + "";
System.out.println(s1);
//方式2
//public static String valueOf(int i)
String s2 = String.valueOf(number);
System.out.println(s2);
System.out.println("--------");
}
}
String轉換爲int
轉換方式
範例程式碼
public class IntegerDemo {
public static void main(String[] args) {
//String --- int
String s = "100";
//方式1:String --- Integer --- int
Integer i = Integer.valueOf(s);
//public int intValue()
int x = i.intValue();
System.out.println(x);
//方式2
//public static int parseInt(String s)
int y = Integer.parseInt(s);
System.out.println(y);
}
}
案例需求
有一個字串:「91 27 46 38 50」,請寫程式實現最終輸出結果是:「27 38 46 50 91」
程式碼實現
public class IntegerTest {
public static void main(String[] args) {
//定義一個字串
String s = "91 27 46 38 50";
//把字串中的數位數據儲存到一個int型別的陣列中
String[] strArray = s.split(" ");
// for(int i=0; i<strArray.length; i++) {
// System.out.println(strArray[i]);
// }
//定義一個int陣列,把 String[] 陣列中的每一個元素儲存到 int 陣列中
int[] arr = new int[strArray.length];
for(int i=0; i<arr.length; i++) {
arr[i] = Integer.parseInt(strArray[i]);
}
//對 int 陣列進行排序
Arrays.sort(arr);
//把排序後的int陣列中的元素進行拼接得到一個字串,這裏拼接採用StringBuilder來實現
StringBuilder sb = new StringBuilder();
for(int i=0; i<arr.length; i++) {
if(i == arr.length - 1) {
sb.append(arr[i]);
} else {
sb.append(arr[i]).append(" ");
}
}
String result = sb.toString();
//輸出結果
System.out.println(result);
}
}
自動裝箱
把基本數據型別轉換爲對應的包裝類型別
自動拆箱
把包裝類型別轉換爲對應的基本數據型別
範例程式碼
Integer i = 100; // 自動裝箱
i += 200; // i = i + 200; i + 200 自動拆箱;i = i + 200; 是自動裝箱
Date類概述
Date 代表了一個特定的時間,精確到毫秒
Date類構造方法
方法名 | 說明 |
---|---|
public Date() | 分配一個 Date物件,並初始化,以便它代表它被分配的時間,精確到毫秒 |
public Date(long date) | 分配一個 Date物件,並將其初始化爲表示從標準基準時間起指定的毫秒數 |
範例程式碼
public class DateDemo01 {
public static void main(String[] args) {
//public Date():分配一個 Date物件,並初始化,以便它代表它被分配的時間,精確到毫秒
Date d1 = new Date();
System.out.println(d1);
//public Date(long date):分配一個 Date物件,並將其初始化爲表示從標準基準時間起指定的毫秒數
long date = 1000*60*60;
Date d2 = new Date(date);
System.out.println(d2);
}
}
常用方法
方法名 | 說明 |
---|---|
public long getTime() | 獲取的是日期物件從1970年1月1日 00:00:00到現在的毫秒值 |
public void setTime(long time) | 設定時間,給的是毫秒值 |
範例程式碼
public class DateDemo02 {
public static void main(String[] args) {
//建立日期物件
Date d = new Date();
//public long getTime():獲取的是日期物件從1970年1月1日 00:00:00到現在的毫秒值
// System.out.println(d.getTime());
// System.out.println(d.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年");
//public void setTime(long time):設定時間,給的是毫秒值
// long time = 1000*60*60;
long time = System.currentTimeMillis();
d.setTime(time);
System.out.println(d);
}
}
SimpleDateFormat類概述
SimpleDateFormat是一個具體的類,用於以區域設定敏感的方式格式化和解析日期。
我們重點學習日期格式化和解析
SimpleDateFormat類構造方法
方法名 | 說明 |
---|---|
public SimpleDateFormat() | 構造一個SimpleDateFormat,使用預設模式和日期格式 |
public SimpleDateFormat(String pattern) | 構造一個SimpleDateFormat使用給定的模式和預設的日期格式 |
SimpleDateFormat類的常用方法
範例程式碼
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
//格式化:從 Date 到 String
Date d = new Date();
// SimpleDateFormat sdf = new SimpleDateFormat();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = sdf.format(d);
System.out.println(s);
System.out.println("--------");
//從 String 到 Date
String ss = "2048-08-09 11:11:11";
//ParseException
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = sdf2.parse(ss);
System.out.println(dd);
}
}
案例需求
定義一個日期工具類(DateUtils),包含兩個方法:把日期轉換爲指定格式的字串;把字串解析爲指定格式的日期,然後定義一個測試類(DateDemo),測試日期工具類的方法
程式碼實現
public class DateUtils {
private DateUtils() {}
/*
把日期轉爲指定格式的字串
返回值型別:String
參數:Date date, String format
*/
public static String dateToString(Date date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
String s = sdf.format(date);
return s;
}
/*
把字串解析爲指定格式的日期
返回值型別:Date
參數:String s, String format
*/
public static Date stringToDate(String s, String format) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date d = sdf.parse(s);
return d;
}
}
public class DateDemo {
public static void main(String[] args) throws ParseException {
//建立日期物件
Date d = new Date();
String s1 = DateUtils.dateToString(d, "yyyy年MM月dd日 HH:mm:ss");
System.out.println(s1);
String s2 = DateUtils.dateToString(d, "yyyy年MM月dd日");
System.out.println(s2);
String s3 = DateUtils.dateToString(d, "HH:mm:ss");
System.out.println(s3);
System.out.println("--------");
String s = "2048-08-09 12:12:12";
Date dd = DateUtils.stringToDate(s, "yyyy-MM-dd HH:mm:ss");
System.out.println(dd);
}
}
Calendar類概述
Calendar 爲特定瞬間與一組日曆欄位之間的轉換提供了一些方法,併爲操作日曆欄位提供了一些方法
Calendar 提供了一個類方法 getInstance 用於獲取這種型別的一般有用的物件。
該方法返回一個Calendar 物件。
其日曆欄位已使用當前日期和時間初始化:Calendar rightNow = Calendar.getInstance();
Calendar類常用方法
方法名 | 說明 |
---|---|
public int get(int field) | 返回給定日曆欄位的值 |
public abstract 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();
//public int get(int field):返回給定日曆欄位的值
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int date = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
//public abstract void add(int field, int amount):根據日曆的規則,將指定的時間量新增或減去給定的日曆欄位
//需求1:3年前的今天
// c.add(Calendar.YEAR,-3);
// year = c.get(Calendar.YEAR);
// month = c.get(Calendar.MONTH) + 1;
// date = c.get(Calendar.DATE);
// System.out.println(year + "年" + month + "月" + date + "日");
//需求2:10年後的10天前
// c.add(Calendar.YEAR,10);
// c.add(Calendar.DATE,-10);
// year = c.get(Calendar.YEAR);
// month = c.get(Calendar.MONTH) + 1;
// date = c.get(Calendar.DATE);
// System.out.println(year + "年" + month + "月" + date + "日");
//public final void set(int year,int month,int date):設定當前日曆的年月日
c.set(2050,10,10);
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH) + 1;
date = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
}
}
案例需求
獲取任意一年的二月有多少天
程式碼實現
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);
//獲取這一天輸出即可
int date = c.get(Calendar.DATE);
System.out.println(year + "年的2月份有" + date + "天");
}
}