1、內部類
在一個類內部再定義一個類(class)
特點:
- 編譯後可生成獨立的位元組碼檔案
- 內部類也可訪問外部類的私有(private)成員且不破壞封裝
- 可為外部類提供必要的功能元件
1.1成員內部類
package inner;
//成員內部類
public class menberOuter
1.2靜態內部類
package inner;
//靜態內部類
public class stOuter
1.3區域性內部類
package inner;
//區域性內部類
public class pOuter
1.4匿名內部類
package inner;
//介面實現多繼承,需要重寫介面中得方法再實現,這裡講透過區域性內部類來實現(但只能使用一次——透過區域性內部類來最佳化)
public class Utest
2、Object類
根類——預設所有類都繼承
2.1getClass(){}方法
返回引用中儲存得實際物件型別,通常用來判斷兩個引用中實際儲存物件型別是否一致
2.2hashCode(){}方法
返回物件得雜湊碼值(根據物件得地址或字串或數字計算出來得int數字)
一般情況下返回相同得雜湊碼值
2.3toString(){}方法
返回該物件的字串表示
可以進行覆蓋該,如:展示物件各個屬性值
2.4equals(){}方法
boolean型別,預設實現為(this==obj),比較兩個物件地址是否相同
可以進行覆蓋,比較兩個物件內容是否相同
- 比較兩個引用是否指向同一個物件
- 判斷obj是否為null
- 判斷兩個引用型別指向的實際物件是否一致
- 強制型別轉換
- 依次比較各個屬性值是否相同
2.5finalize(){}方法
-
一般當物件判定為垃圾物件時,由JVM自動呼叫此方法,用以標記為垃圾物件行列
-
垃圾物件:沒有有效引用指向此物件時
-
垃圾回收:由GC銷燬垃圾物件,釋放資料儲存空間
-
自動回收機制:JVM記憶體耗盡 ,一次性回收所有垃圾物件
-
手動回收機制:使用System.gc();通知JVM執行垃圾回收
package ob1; import java.util.Objects; //getClass 通常用來判斷兩個引用中實際儲存物件型別是否一致 //hashCode 返回物件得雜湊碼值(根據物件得地址或字串或數字計算出來得int數字),一般情況下相同 public class Stuent
3、包裝類
- 基本資料型別所對應的引用資料型別
- Object可統一所有資料型別 , 包裝類的預設值為null
- 八大基本型別包裝類首字母大寫,除int——Integer,char——Character
在JDK版本包(中文版)可以檢視詳細內容
3.1型別轉換-裝箱和拆箱
基本型別(棧)與引用型別-包裝類(堆)的轉換
棧——>堆(裝箱),反之拆箱
- Number父類提供的6個共性方法
3.2基本型別和字串轉換
- paraseXXX()靜態方法
在做轉換時,保證型別相容
package cast;
/*
轉換方法
1.Number父類提供的6個共性方法
2.paraseXXX()靜態方法
3.valueOf()靜態方法
*/
public class Demo1
4、Integer緩衝區
Java預先建立了256個常用的整數包裝型別物件
Integer integer3 = 100;//自動裝箱,shif+f4檢視程式碼詳細語句-實際調的Integer.valueOf(100)方法,點住語句Control鍵檢視原始碼-128到127
package cast;
//Integer緩衝區-Java預先建立了256個常用的整數包裝型別物件
//shif+f4檢視程式碼詳細語句
public class Demo2
5、String字串
5.1String
- 字串建立以後不可以改變
- 字串儲存在字串池中,可以共享
- 字串的另一種建立方式String str = new String("另一種建立方式")
5.2String常用方法
5.2.1字串返回控制
-
length();返回字串的長度,從0開始,一個字元算一個(空格也算一個字元)
-
charAt(int index);返回某個位置的字串,最後一個字元要減一(因為從0開始),否則會報錯
-
contains(String str);判斷是否包含某個字串
-
toCharArray();返回字串對應的數值
-
indexOf(String str);返回字串首次出現的位置-還可以指定開始
-
lastIndexOf(String str);返回字串最後出現的位置
5.2.2字串修改
-
trim();去掉字串前後的空格
-
toUpperCase();把小寫改成大寫,toLowerCase();把大寫改成小寫
-
endWith(String str);判斷是否以str結尾,startswith(str);判斷是否以str開頭
-
replace(char oldChar,char newChar);用新的字元或字串替換舊的字元或字串
-
split(String str);對字串進行拆分
-
equals();比較內容,equalsIgnoreCase();compare();忽略大小寫的比較,比較字典表中的大小
package str; import java.util.Arrays; //String public class Demo1
5.3案例演示
已知String str = "this is a text"
-
將str中的單詞單獨提取出來
-
將str中的text替換為practice
-
在text前面加入一個easy
-
將每個單詞的首字母改為大寫
package str; /* 已知String str = "this is a text" 1. 將str中的單詞單獨提取出來 2. 將str中的text替換為practice 3. 在text前面加入一個easy 4. 將每個單詞的首字母改為大寫 */ public class Demo2
5.4StringBuffer和String Builder
-
StringBuffer,可變長字串,效率慢,執行緒安全
-
String Builder,可變長字串,效率快,執行緒不安全——推薦使用
效率比String高並且更節省空間
-
append();追加
-
insert();新增
-
replace();指定位置替換
-
delete();刪除
-
清空,sb.delete(0,sb.length());
package str; /* - StringBuffer,可變長字串,效率慢,執行緒安全 - String Builder,可變長字串,效率快,執行緒不安全——推薦使用 效率比String高並且更節省空間 */ public class Demo3
6、BigDecimal類的使用
小數型別在儲存時採用的近似——使用BigDecimal精度更高
進行計算時採用的呼叫方法
-
subtract();減法
-
add();加法
-
multiply();乘法
-
複合運算的div();除法—注意這裡除不得是除盡的,用除中的BigDecimal保留,BigDecimal.ROUND_HALF_UP(四捨五入)
package bd; /* 小數型別在儲存時採用的近似——使用BigDecimal精度更高 進行計算時採用的呼叫方法 */ import java.math.BigDecimal; import java.math.RoundingMode; public class Demo1
7、Date類的使用
表示特定的瞬間,精確到毫秒,但已被Calender類所替代
但有些還在用
列印當前時間
Date date1 = new Date();
System.out.println(date1.toString());
1.after(); ,before();
2.comparedTo();
3.equals();
package dt;
/*
Date
表示特定的瞬間,精確到毫秒,但已被Calender類所替代
但有些還在用
*/
import java.util.Date;
public class Demo1
8、Calender類的使用
Calender提供了獲取或者設定各種日曆欄位的方法
構造方法protected Canlender();由於修飾符是protected,所以無法直接建立該物件
2.獲取引數值-點進Calendar進去看可以獲得引數值
3.set();修改時間
4.add();方法修改時間
5.補充方法,getActualMaxinum();這個月的最大天,getActualMininum();這個月的最小天
package bd;
/*
Calender提供了獲取或者設定各種日曆欄位的方法
構造方法protected Canlender();由於修飾符是protected,所以無法直接建立該物件
*/
import java.util.Calendar;
public class Demo2
9、SimpleDateFormat類的使用
格式化(把日期轉成字串),解析(把字串轉成日期)
y,M,d,H(24小時),m,s,S(毫秒)
package bd;
/*
格式化(把日期轉成字串),解析(把字串轉成日期)
y,M,d,H(24小時),m,s,S(毫秒)
*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo3
10、System類
System系統類,主要用於獲取系統的屬性資料和其他操作,構造方法是私有的(直接引用)
10.1static void arraycopy();-複製陣列
- arraycopy();-複製陣列,src-源陣列,srcPos-從那個位置開始複製(第一位置是0),dest-目標陣列,destPose-目標陣列的位置,length-複製的長度
- Arrays.copyOf與之的區別:效率更高
10.2static long currentTimeMillis();以毫秒返回當前時間
10.3static void gc();啟動垃圾回收站(JVM)
10.4、static void exit(int status);退出(JVM),0表示正常,非0表示異常
package st;
//System
public class Demo1