Object類
Object概念使用方法以及注意事項
Object是根類 是全部類的父類
Object所在的包java.lang.Object,使用時不須要導包
本次學習的兩個成員方法
返回值String 方法名toString() :返回該對象的字符串表示
返回值boolean 方法名equals(Object obj) :指示其餘某個對象是否與此對象"相等" java
toString能夠將對象的內容以字符串的形式打印出來;
可使用子類重寫的方式重寫toString方法;
+ Insert 選擇 toString() 便可重寫 數組
public boolean equals(Object obj) :指示其餘某個對象是否與此對象"相等"
重寫equals()的做用:
不重寫時, 自定義對象默認繼承Object類的equals()方法, 經過 == 比較地址值
但開發時, 通常要重寫equals()方法, 讓對象根據屬性值來判斷是否相等
IDEA快捷鍵: Alt+Insert, 選 equals() and hashCode() app
2:日期時間類 Date、long、String、Calendar
Date: 時間 long:表示時間,精確到毫秒,int數字
String:時間字符串 Calendar:日曆
java.util.Date類: 日期, 表示特定的瞬間, 精確到"毫秒"
// 構造方法
Date(): 建立Date對象, 表示當前系統時間
Date(long date): 建立Date對象, 使用指定的毫秒值做爲時間
// 經常使用成員方法
long getTime(): 獲取Date對象中保存的時間毫秒值
void setTime(long time): 修改Date對象的時間 學習
DateFormat 類及其構造方法
java.text.DateFormat抽象類: 用於格式化和解析時間. 提供了方便的方法
// 經常使用成員方法 (抽象類不能建立對象, 但能夠有非抽象的方法供子類使用)
String format(Date date): 格式化, 從Date對象轉換爲String對象
Date parse(String source): 解析, 從String對象轉換爲Date對象
java.text.SimpleDateFormat類
// 構造方法
SimpleDateFormat(String pattern): 用給定的模式和默認語言環境的日期格式符號建立對象
// 使用指定的模式建立對象
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
y: 年 M: 月 d: 日 H: 時 (24小時制) m: 分
s: 秒 E: 星期 D: 年中的天 K: 小時(12小時制) S: 毫秒
例: ui
[Java]純文本查看__複製代碼翻譯
?code
01orm
02對象
03繼承
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
public
class
Test {
public
static
void
main(String[] args) {
// 建立SimpleDateFormat對象用於格式化日期爲字符串
SimpleDateFormat sdf =
new
SimpleDateFormat(
`"yyyy年MM月dd日 HH:mm:ss"`);
// 建立日期對象(使用當前系統時間)
Date date =
new
Date();
// 格式化
String s = sdf.format(date);
System.out.println(s);
// 2018年07月24日 14:45:48
}
}
parse()解析時間:
將時間字符串解析爲日期對象
// 已知日期字符串"2000-10-01"
String s = "2000-10-01";
// 將該日期字符串解析爲日期對象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(s); // 紅線按 Alt + Enter , 選擇第一項 Add exception to method
signature
而後將date轉化爲long值:
long time = date.getTime();
System.out.println(time)
Calendar抽象類:表明日曆
// 靜態方法
static Calendar getInstance(): 根據當前系統設置獲取合適的Calendar對象, 表示當前系統時間
// 獲取日曆對象的示例
Calendar c = Calendar.getInstance(); // 表明了當前時間
Calendar.getInstance() 會根據當前系統獲取合適的子類對象, 咱們獲取到的是 GregorianCalendar
// 靜態成員變量
static int YEAR :年份
static int MONTH :月份. 注意月份數值是 0-11
static int DAY_OF_MONTH :日期
static int HOUR :小時(12小時制)
static int HOUR_OF_DAY :小時(24小時制)
static int MINITE :分鐘
static int SECOND :秒
// 非靜態成員方法
int get(int field): 獲取指定日曆字段的值 int year = cal.get(Calendar.YEAR)
void set(int field, int value): 修改指定日曆字段爲指定的值
void add(int field, int amount): 調整指定日曆字段的值. 正數增長, 負數減小
Date getTime(): Calendar轉Date
void setTime(Date d): Date轉Calendar
// 示例
// 獲取日期:
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 修改年:
calendar.set(Calendar.YEAR, 2000);
// 修改月:
calendar.set(Calendar.MONTH, 0);
// 日期增長一天:
calendar.add(Calendar.DAY_OF_MONTHY, 1);
// 日期減小一天:
calendar.add(Calendar.DAY_OF_MONTHY, -1);
日期轉換總結:
long (數學計算)
\ SimpleDateFormat
Date -------------------- String (用戶輸入和顯示)
/
Calendar (獲取時間的某個部分)
long和Date對象互轉
利用Date
Date(long millis): long轉Date
long getTime(): Date轉long
String和Date對象互轉
利用SimpleDateFormat
Date parse(String s): String轉Date
String format(Date): Date轉String
Calendar對象和Date對象互轉
利用Calendar
Date getTime(): Calendar轉Date
void setTime(Date d): Date轉Calendar
System類:
System.currentTimeMillis();獲取當前時間毫秒
long now = System.currentTimeMillis();
java.lang.System類: 系統相關功能(數組複製方法)
// 靜態方法
static void arrayCopy(Object src, int srcPos, Object dest, int destPos, int length): 複製源數
組中指定長度個元素到一個新數組中
* Object src: 源數組 (被複制的數組)
* int srcPos: 源數組索引 (從源數組的哪一個索引開始複製)
* Object dest: 目標數組 (要複製到哪一個數組)
* int destPos: 目標數組索引 (指定目標數組接收元素的索引位置)
* int length: 長度 (要複製的元素個數)
StringBuilder類:字符串拼接
以前學習的字符串拼接咱們經常使用「+」號
「+」使用加號進行字符串拼接, 會建立不少額外的對象, 浪費內存空間
實際上+加號在最終執行時, 會被翻譯爲:
new StringBuilder("原字符串").append("要拼接的字符串").toString();
額外建立了多餘的StringBuilder對象
StringBuilder(): 構造一個空的StringBuilder容器
StringBuilder(String str): String轉StringBuilder
StringBuilder append(任意類型): 添加任意類型數據的字符串形式, 並返回當前對象
String toString(): 將當前StringBuilder對象轉換爲String對象
String和StringBuilder互轉: 利用StringBuilder
StringBuilder(String str): String轉StringBuilder
String toString(): StringBuilder轉String
例:
/*
需求:
使用StringBuilder拼接如下內容:
123
true
你好Java
並最終轉換爲String類型, 打印出來
*/
[Java]純文本查看__複製代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public
class
Test {
public
static
void
main(String[] args) {
// 建立StringBuilder對象
StringBuilder sb =
new
StringBuilder();
// 鏈式調用
sb.append(
`123).append(
true).append(
"你好Java"`);
// 轉換爲String
String s = sb.toString();
System.out.println(s);
// 123true你好Java
// 更簡單的配合匿名對象形式
String result =
new
StringBuilder().append(
`123).append(
true`).append("你好
Java").toString();
System.out.println(result);
// 123true你好Java
}
}
次日內容 Collection 泛型
Collection接口
集合與數組的區別有兩點
第一點 數組長度不可變 集合長度可變
第二點 數組只能存儲同一類型的元素,而集合儲存的都是對象,並且對象的類型能夠不同,因此對象多的時候,使用集合。
Collection接口做爲全部單列集合類型的祖類,所含有的方法是全部單列集合都能使用的共性方法,沒有帶索引的方法
分爲list有序接口 和set無序接口
boolean add(E e):添加到集合中 。
void clear():清空集合中。
boolean remove(E e):刪除指定對象。
boolean contains(E e): 判斷是否包含某對象。
boolean isEmpty(): 判斷集合是否爲空。是的話返回true
int size(): 統計集合元素個數。
Object[] toArray(): 轉成數組。
迭代器
Iterator接口用來遍歷數組,也被稱爲迭代器
迭代:即Collection集合元素的通用獲取方式。在取元素以前先要判斷集合中有沒有元素,若是有,就把這個元素取出來,繼續在判斷,若是還有就再取出出來。一直把集合中的全部元素所有取出。這種取出方式專業術語稱爲迭代。
Iterator接口的經常使用方法以下:
next:返回迭代的下一個元素。
hasNext():若是仍有元素能夠迭代,則返回 true。
//迭代器對象
Iterator<String> it = coll.iterator();
// 泛型指的是迭代出元素的數據類型
while(it.hasNext()){ //判斷是否有迭代元素
String s = it.next();//獲取迭代出的元素
System.out.println(s);
}
加強for
加強for循環也叫for each循環,用來遍歷數組和集合。它的內部原理實際上是個Iterator迭代器,不能再遍歷時進行增刪操做。
快捷鍵 集合名.for
泛型
先不肯定類型 等到使用時再肯定類型
泛型<>:
泛型的好處:
一、避免了類型轉換的麻煩
二、將運行時的類型轉換異常,轉移到了編譯時期,更有利於提早發現問題
Collection coll = new ArrayList();
coll.add(1);
for(Object o : coll){
sout(o)
}
方法中的泛型定義位置:
修飾符 和 返回值類型 之間
// 帶有泛型的方法定義格式
修飾符 <表明泛型的名字> 返回值類型 方法名(參數){
}
方法中定義泛型後, 返回值類型和參數類型均可以使用泛型
方法泛型的使用:
在調用方法時肯定泛型的具體類型
定義泛型接口與定義泛型類同樣
// 帶有泛型的類定義格式
修飾符 interface接口名<表明泛型的變量> {
}
實現類實現了泛型接口後能夠有2種選擇:
1. 定義實現類時就肯定泛型的具體類型
2. 定義實現類時仍然沿用泛型, 直到建立該類對象時才肯定泛型的具體類型
泛型定義總結: 定義在類上的泛型: 有效範圍: 整個類中都有效 什麼時候肯定具體類型: 建立該類對象時肯定泛型的具體類型 定義在方法上的泛型: 有效範圍: 方法中(包括返回值類型和參數類型)有效 什麼時候肯定具體類型: 調用方法傳參時肯定泛型的具體類型 定義在接口上的泛型: 有效範圍: 接口中 什麼時候肯定具體類型: 1. 子接口或實現類定義時肯定泛型的具體類型 2. 建立實現類對象時肯定泛型的具體類型