第一章Object類
1.1?概述
1),Object 類是Java語言所有“引用類型”的父類,括我們自定義的類、類庫中的類,數組,集合,字符串。
2),所有的的引用類型都從Object類繼承了一些方法:
如,1).toString() ?2).equals()方法
1.2?toString方法
1),(由于Object類中toString方法返回的結果是內存地址,因此)需要重寫toString方法。重寫后的toString()方法,打印所有的屬性值。
2)?(1),在我們直接使用輸出語句輸出對象名(stu)的時候,其實通過該對象調用了其toString()方法。(輸出結果為:Person{name='張三', age=19} )
println(Object obj)隱式的內部調用stu.toString()方法。
public class Demo {
????public static void main(String[] args) {
????????Student stu = new Student("張三", 19);
????????System.out.println(stu);
????}
}
?????(2)而我們常用的是,println(String s)
1.3?equals方法
1)(如果沒有覆蓋重寫equals方法,那么Object類中默認進行 == 運算符的對象地址比較,只要不是同一個對象,結果必然為false。)需要重寫equals方法,比較“兩個對象”的所有屬性值是否完全相同。
2)重寫equals()方法時,快捷鍵:generate—>equals() and hashCode()—>next,next. ??自動生成。
1.4?Objects類
1)Objects類是Object類的子類,是一個工具類,由一些靜態的實用方法組成。
2)其中一個方法:equals(Object o1,Object o2)。 此方法可以比較兩個對象“是否完全相同”。(需要重寫equals方法,如上)
?注意:此方法也是基于我們對象的equals()方法進行判斷的。對于“空引用”,Objects的equals()方法更安全。
第一章?日期時間類
2.1 Date類
1).java.util.Date(類):代表了一個特定的時間,精度:毫秒(1000毫秒=1秒);
2).構造方法:
1).Date():使用當前系統時間構造一個Date對象。
2).Date(long m):使用一個“毫秒值”構造一個Date對象。(表示自從標準基準時間,即1970年1月1日00:00:00 GMT)以來的指定毫秒數。)
3).成員方法:
1).public long getTime():獲取此Date對象代表的毫秒值;
2).public void setTime(long m):設置此Date對象的毫秒值;此Date對象所表示的日期會被更改;
?
2.2 DateFormat類
1).java.text.DateFormat(抽象類):可以對Date進行“格式化顯示”的一個工具類。
?注:此類是一個“抽象類”,不能直接創建對象,可以使用它的子類:
2).java.text.SimpleDateFormat(子類):
3).構造方法:
???? 1).SimpleDateFormat?(String pattern):
?????? DateFormat format = new SimpleDateFormat("yyyy‐MM‐dd HH:mm:ss")
4).常用方法:
1).public String format(Date date):將一個date對象按照指定的格式轉換為一個string.
2).public Date parse(String str):將一個字符串的日期轉換為Date對象。
2.3 Calendar類
1)概念:Calendar為抽象類,Calendar類在創建對象時并非直接創建,而是通過靜態方法創建,返回子類對象GregorianCalendar,格式:Calendar c = Calendar.getInstance();
2).常用方法:
1).public int get(int field):獲取某個字段的值;
2).public void set(int field,int value):設置某個字段的值;
3).public void add(int field,int value):為某個字段增加指定的值;
?4)Calendar中的getTime方法并不是獲取毫秒時刻,而是拿到對應的Date對象。
3)注意:月從0開始,可以+1使用;周中的天(周幾,周日為1,可以-1使用)
第二章?System類(arraycopy,currentTimeMillis)
1).java.lang.System(類):包含了一些實用的靜態方法:
2).常用方法:
1).public static void arraycopy?(Object src, //原數組
???????????????????????????int srcPos,//原數組的起始位置
???????????????????????????Object dest, //目標數組
???????????????????????????int destPos, //目標數組的索引位置
???????????????????????????int length) ?//復制的數量
2).public static?long currentTimeMillis?():獲取當前系統時間的毫秒值;
常用來計算代碼的執行時間。
相當于:Date date = new Date();
long m = date.getTime();
3)?.public static void exit (int status):結束JVM。也就是結束程序。
?
第三章?StringBuilder類
4.1 StringBuilder概述
(由于String的不可變性,導致做“字符串連接”時,效率低下。)所以,java.lang.StringBuilder(類):專門做“字符串連接”。
4.2 構造方法
StringBuilder():構造一個有16個空位置的StringBuilder對象。
4.3 常用方法
1).public StringBuilder append(各種類型):向StringBuilder中添加數據;
??對象名.append("Hello")..append(10).append(3.14);//方法鏈
可以添加任意類型(可無雙引號)
2).public StringBuilder reverse():將StringBuilder中的數據反轉;
?
第四章?包裝類
5.1 概念
1).基本類型 包裝類
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
2).每個包裝類中都包含很多對此種類型數據進行操作的一些方法:
例如:
將某種類型轉換為字符串;
將字符串轉換為某種類型;
5.2 常見應用
1).將某種類型轉換為字符串:
int a = 24;
String s = Integer.toString(a);
//其它方法:
int a = 24;
String s = a + "";
2).將字符串轉換為某種類型:
String a = "24";
int age = Integer.parseInt(a);
=====================================================
任何包裝類(除Character)都有parseXxx(String s):可以將字符串轉換為自己的那種類型:
byte Byte parseByte(String s)
short Short parseShort(String s)
int ???Integer·parseInt(String s)
long Long parseLong(String s)
float Float parseFloat(String s)
double Double parseDouble(String s)
char Character .......
boolean ???Boolean ????parseBoolean(String s)
?
5.3 裝箱和拆箱
1).裝箱:將"基本類型"賦值給"包裝類型";
2).拆箱:將"包裝類型"賦值給"基本類型":
3).好處:將"包裝類型"與"基本類型"可以等同看待,操作起來比較方便。
?
?
注意:
1,字符串地址比較
(1)
String s1 = new String("abc");
String s2 = "abc";
System.out.println(s1 == s2); ???? //false
System.out.println(s1.equals(s2)); ???? //true
(2)
String s1 = "abc";
?????? String s2 = "abc";
System.out.println(s1 == s2); ???? //true
System.out.println(s1.equals(s2)); //true
(3)
String s1 = "a" + "b" + "c";
?????? String s2 = "abc";
System.out.println(s1 == s2); ??? ?//true
System.out.println(s1.equals(s2)); ?//true
(4)
String s1 = "ab";
????? String s2 = "abc";
????? String s3 = s1 + "c";
System.out.println(s3 == s2); ???? //false
?????? System.out.println(s3.equals(s2)); ?? //true
注意:直接賦值時,字符串在常量池;new一個String字符串時,字符串在堆里。