小程式頁面跳轉
系統相關類
Java 程式在不同作業系統上執行時,有可能需要取得平臺相關的屬性,或者呼叫平臺命令來完成特定的功能
Java 提供 System 類和 Runtime 類來與程式執行的平臺進行互動
System 類
表示當前 Java 程式的執行平臺
描述:System 類是一個 final 類,該類的所有屬性和方法都是靜態的,可以不建立物件直接呼叫
屬性:in(標準輸入)、out(標準輸出)、err(錯誤輸出)
常用方法:
- currentTimeMillis( ):記錄程式執行的時間(單位毫秒)
- exit():結束當前正在執行中的 Java 虛擬機器
- getProperties( ):獲取當前系統屬性和環境變數
- gc():提醒虛擬機器,建議進行一次垃圾回收
Runtime 類
表示當前 Java 程式的執行時環境
描述:
- 應用程式不能建立自己的 Runtime 物件例項
- 只能通過 Runtime 類的靜態方法getRuntime( )獲取與之關聯的Runtime 物件
常用方法:
- availableProcessors( ):獲取處理器數量
- freeMemory( ):獲取空閒記憶體大小(位元組)
- totalMemory():獲取總記憶體大小(位元組)
- maxMemory() :獲取可用最大記憶體大小(位元組)
字串相關類
Java 中字串型別是程式中使用範圍最廣的資料型別,字串操作也就成了程式設計師使用得最多的操作
Java 中提供 String 類、StringBuffer 類、StringBuilder 類來處理字串,這三個類提供了大量操作字串物件的方法,能夠滿足程式中各種對字串的處理
String類
表示固定不變的字串
描述:
- String 類是 final 類,不能被子類繼承
- String 類例項化物件包含固定不變的字串
字串特點:
- 字串必須使用雙引號(如“Hello”)
- 字串的字元使用 Unicode 編碼(一個字元或漢字佔兩個位元組)
- 字串是固定不可變的,統一存放在記憶體的字串常量池中
常用方法:
- charAt ( int index ):返回字串指定位置的字元
- indexOf( String s):返回指定字串第一次出現的位置
- startsWith(String s):測試字串是否以指定字首開始
- endsWith(String s):測試字串是否以指定字尾開始
- subString( int index):返回字串的子字串
- replace(char a, char b):替換字串的指定字元
- trim():去掉字串的前後空格
- concat(String str):連線兩個字串
- split(String regex):給定正則表示式的匹配來拆分字串
字串常量池
字串常量池通過共享字串物件,提高字串物件的使用效率
正則表示式
正則表示式是一種用來匹配字串的表示式,Java 中 String 類支援使用正則表示式匹配字串
字元萬用字元
次數萬用字元
其他萬用字元
StringBuffer 類
表示可變長度的字串(執行緒安全)
StringBuffer 類是 Java 提供的另外一種字串操作類,該類允許包含的字串內容改變,用於解決 String 類包含的字串內容不可變的問題(頻繁修改字串內容使用 StringBuffer 類)
常用方法
- append(String str):向字串後面追加指定字串
- toString():返回物件包含的字串
舉例
// StringBuffer 例項化物件
StringBuffer temp = new StringBuffer(“hello ”);
temp.append(“world”); // 追加字串
String str = temp.toString(); // 返回物件包含的字串
System.out.println(str);
StringBuilder 類
表示可變長度的字串(執行緒不安全)
StringBuilder 類是在 JDK1.5 以後 Java 增加的一個新的字串操作類,它同 StringBuffer 類幾乎相同,唯一不同之處是 StringBuilder 類是執行緒不安全的,StringBuffer 類是執行緒安全的
String、StringBuffer 和 StringBuilder 區別
- String 表示固定長度的字串,StringBuffer(執行緒安全) 和 StringBuilder(執行緒不安全) 表示可變長度字元
- 效能由低到高為 String < StringBuffer < StringBuilder
日期時間相關類
在實際軟體專案開發中,經常會遇到處理日期和時間的情況,Java 語言中提供了一系列類專門處理日期和時間類
Date 類(日期時間)
- 表示特定的瞬間(精確到毫秒)
- 時間原點(0毫秒):1970-01-01 08:00:00
- 1天 = 246060 = 86400 秒 = 86400 * 1000 = 86400000 毫秒
//獲取當前系統的時間和日期
Date date = new Date();
//把時間和日期轉換成時間戳(毫秒)
long time = date.getTime();
SimpleDateFormat 類(日期時間格式化)
描述:
- 格式化(日期 -> 文字)
- 解析 (文字 -> 日期)
常用方法:
- format ( Date date ) :按照指定的模式,把 Date 日期格式化為符合模式的字串
- parse ( String source ) :把符合模式的字串,解析為 Date 日期
// 格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
Date date = new Date( );
String str = sdf.format(date);
//解析
sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = simpleDateFormat.parse("2020-10-23");
Calendar 類(日曆)
描述:
- 它呼叫靜態方法 getInstance( ) 獲取例項化物件(單例模式)
- 它提供很多操作日曆欄位的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR)
常用方法:
- int get (int field):獲取日曆(年月日等)
- void set(int field, int value):設定日曆(年月日等)
- void add(int field,int amount):新增或減少日曆(年月日等)
// 獲取日曆物件例項(當前日曆)
Calendar calendar = Calendar.getInstance();
// 獲取日曆年、月
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
//設定日曆年、月
calendar.set ( Calendar.YEAR, 2021 );
calendar.set ( Calendar.MONTH, 9 );
//日曆增加 2 年
calendar.add(Calendar.YEAR, 2);
//把日曆物件轉換為日期物件
Date date = calendar.getTime( );
數學運算相關類
Math 類
描述:
- Math 類包含了用於執行基本數學運算的屬性和方法,如初等指數、對數、平方根和三角函式
- Math 的方法都被定義為 static 形式,可以直接通過 Math.方法名() 進行呼叫,方便程式設計師進行實際的使用
常用方法:
- int abs(int i):返回絕對值
- round(float f):表示四捨五入
- min(int a,int b):返回兩個數最小值
- max(int a,int b): 返回兩個數最大值
- random():返回[0,1)之間的隨機double值
BigInteger 類
- 在 Java 中,基本資料型別儲存的整型最大範圍是 64 位 long 型整數
- BigInteger 類用於表示任意大小的整數,因為它內部有一個 int[ ] 陣列可以儲存一個非常大的整數
BigInteger numA = new BigInteger("1234567890");
BigInteger numB = new BigInteger("12345678901234");
// BigInteger 運算只能呼叫方法
BigInteger sum = NumA.add(NumB);
// BigInteger 可以轉為基本資料型別
long numC = numA.longValue();
BigDecimal 類
BigDecimal 類和 BigInteger 類相似,用於表示一個任意大小且精度完全準確的浮點數(常用於財務計算)
BigDecimal decimalA = new BigDecimal("123.4500");
// 返回小數位數
System.out.println(decimalA.scale()); // 4(4位小數)
//去掉末尾的 0
BigDecimal decimalB = decimalA.stripTrailingZeros();
System.out.println(decimalA.scale()); // 2(兩位小數)
包裝類
什麼是包裝類
包裝類是將 Java 中八種基本資料型別封裝成的類,所有的基本資料型別都能很方便地與對應的包裝類相互轉換,以解決應用中要求使用引用資料型別,而不能使用基本資料型別的情況
包裝類的特點
- 所有包裝類都是 final 型別(不能派生子類)
- 例項化包裝類物件後,物件中儲存的基本型別資料不能再改變
- 包裝類封裝大量有用的方法(如資料型別轉換)
- 除 Character 類和 Boolean 類繼承於 Object 類,其他的包裝類都繼承於 Number 類
基本資料型別與包裝類
包裝類的共同點
- 包裝類中包含的值不可變(包裝類例項化物件後不能修改儲存的數值)
- 包裝類都有兩個構造器
- 包裝類中都有xxxValue()方法
- 包裝類中都有兩個 ValueOf()方法
自動裝箱/拆箱
自動裝箱和自動拆箱是基本資料型別與包裝類之間的一種轉換機制(通過編譯器自動完成)
不要過度使用自動裝箱或自動拆箱功能,因為它們可能會導致程式的效能下降