JAVASE常用的類及其方法總結
以下內容均為學習動力節點視訊過程中的總結:
陣列Arrays
常用靜態方法:
Arrays.sort() 對陣列進行升序排序,
Arrays.binarySearch(arr,key) 二分法查詢,返回index,沒找到返回負數(查詢的前提是排好序)
String類常用方法
方法 | 解釋 |
---|---|
charAt(int index) | 返回索引處的字元值 |
toCharArray() | 將一個字串轉換成char陣列 |
toLowerCase() | 轉換成小寫 |
toUpperCase() | 轉換成大寫 |
getBytes() | 得到位元組陣列 abcdef變為97 98 99 100 |
indexOf() | 判斷某個子字串在當前字串第一次出現處的索引 |
lastindexOf() | 判斷某個子字串在當前字串最後一次出現處的索引 |
repleac(“”,“”) | 替換當前字串中某個字串為另外一個字串,返回String |
split() | 以某個字串拆分,返回String,(用Strirng陣列來接收) |
trim() | 去除字串的前後空白,中間的不行 |
subString(int beginindex) | 擷取從索引出開始的子字串 |
subString(intbeginindex,endindex) | 擷取從起始索引到終止索引的子字串,前閉後開 |
compareTo() | 比較兩個字串大小,字元依次比,前面比後面大,返回1;小,返回-1,等於,返回0,比到不一樣的就結束,剩下的不比了。按照英文字母順序比較 |
equals() | 是否相等,比較的是值,返回true/false;看不出誰大誰小 |
equalsIgnoreCase | 是否相等,忽略大小寫 |
contaings() | 是否包含後面的字串,返回true/false |
endsWith() | 是否以某個字串結尾,返回true/false |
startsWith() | 是否以某個字串開始,返回true/false |
isEmpty() | 是否為空字串,底層呼叫的是length()方法,返回true/false;和null不一樣(空指標異常) |
String中只有一個靜態方法,不需要new物件的:
valueOf():將非字串轉換成字串,底層呼叫toString方法,直接用類呼叫String.valueOf(隨便寫個啥),若傳進去一個引用,該引用沒有重寫toString的話,輸出的是引用的地址。
System.out.println(引用)時,為什麼會調toString方法?
println呼叫valueOf,valuesOf呼叫的又是toString。本質上:sout這個方法輸出任何資料時都實現轉換成字串再輸出。
String比較容易出錯的地方:
String a = "Hello";
String b = "Hello";
a==b ?//true,字串變數同一個,地址也是同一個,“==”任何情況下比較的都是地址。
String a=new String("Hello");
String b=new String("Hello");
a==b ?//false,a和b存放不同的引用物件的地址。
1. StringBuffer
String是不可變的,底層是final byte【】不可變,被final修飾,陣列一旦建立藏毒不可變,並且被final修飾的引用一旦指向某個物件之後,不能再指向其他物件。每一次拼接都會產生新的字串,在方法區中建立了大量的物件,造成記憶體空間的浪費。
建議使用lang包下的StringBuffer或者StringBuilder。
StringBuffer父類為AbstractStingBuffer
底層實際上是一個byte【】陣列(字串緩衝區物件),(沒有final修飾),將字串放到陣列中,初始容量為16,當存滿之後,會用append()方法來擴容,底層進行追加呼叫arraycopy()方法,所以StringBuffer適用於字串的拼接。
優化:建立StringBuffer時預估計一下,給一個大點的容量。減少擴容次數。也不能太大,合適最好,提高程式執行效率。
2. StringBuilder
StringBuilder 也可以用來拼接字串。
StringBuffer的方法都有synchronized修飾,表示在多執行緒環境下執行時安全的。StringBuilder沒有,不安全。
3.基本八大類
java中8種基本資料型別對應8種包裝類屬於引用資料型別,父類是Number-Object,Character、Boolean父類是Object。
為什麼要用包裝類?
呼叫某些方法時傳入引數若為Object,不能直接傳入基本資料。
基本資料型別 | 包裝類 |
---|---|
short | Short |
int | Integer |
long | Long |
double | Double |
float | Float |
boolean | Boolean |
char | Character |
byte | Byte |
基本資料型別轉化為引用資料型別,裝箱
引用轉化為基本,拆箱
自動裝箱:Integer a = 100;
自動拆箱:int i = a; JAVA 5以後都支援這個了。在加減乘除等運算時會自動拆箱,雙等號不會。
獲取常量,最大:Integer.MAX_VALUE,即為0xffffff;最小0x8000000;
4.Number
Number中常用的方法:用來拆箱。比如byteValue();但是有自動裝箱和拆箱,就沒必要用這個了。
(1.)java中為了提高程式的執行效率,將【-128到127】的所有的包裝物件提前建立好,存放在方法區中的整數型常量池中(cache快取),目的是隻要在這個區間的資料就不需要new了,直接從裡面取來用。
Integer a =100;
Integer b =100;
a= =b?結果為true,換成1000就是false。
(2.)數字格式化:
/*# 任意數字
, 千分位
. 小數點
0 代表不夠時補0
*/
import java.text.DecimalFormat;
DecimalFormat some = new DecimalFormat("###,###.00");//小數部分不能既有#又有0
String dou = some.format(124583);
System.out.println(dou);
5.Integer的方法
靜態方法static int parseInt(String s),把字串轉換為int型別。
int a = Integer.parseInt(“1230”);類似,double,float等有一樣的靜態方法,將字串轉換為基本資料型別,注意不要超過範圍或者用中文。
靜態方法:
toBinaryString(int i):轉換成二進位制字串;
toOctalString(int i):轉換成十進位制字串;
toHexString(int i):轉換成十六進位制字串;
(聯絡toString方法原始碼)
String、Integer、int型別互相轉換:
String->int:
Integer.parseInt(Strign s);
int->String:
String.valueOf(int i);
i = 100 ;String s = i+"";
int->Integer:裝箱
Integer a = 100;
Integer.valueOf(100);
Integer->int:拆箱
int b = a;
intValue();
String->Integer:
Integer.valueOf(String a);
Integer->String:
String.valueOf(Integer物件);
6.日期
(1)匯入包:import java.util.Date;
Date nowtime = new Date();//系統當前時間顯示,Date的無參構造方法
Date nowtime2 = new Date(1);//Date的有參構造,傳入的引數是Long型,為系統從1970.1.1 00:00:00經過的毫秒數。
Fri Oct 02 15:27:49 CST 2020//執行結果
日期格式化:設定自己喜歡的格式,(將Date型別轉化為String型別)。匯入java.text.SimpleDateFormat;
yyyy 年
MM 月
dd 日
HH 時
mm 分
ss 秒
SSS毫秒(毫秒三位,最高999),這些字元不能瞎寫,但是空格,-,:,按照自己喜好加。
Date a = new Date();
System.out.println(a);
SimpleDateFormat daytime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(daytime.format(a));//若要獲取昨天的此時的時間,用當前的毫秒數減去一天的毫秒數(1000*60*60*24)
(2)反過來,將String型別轉化為Date型別輸出:
String time = "2014-09-01 15:26:56 456";
SimpleDateFormat ste = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");//這裡的格式要和上述字串一樣,不然會有異常
Date nowtime = ste.parse(time);
System.out.println(nowtime);
(3)獲取系統從1970.1.1 00:00:00(北京時間是八點)到當前時間的總毫秒數,可以用來統計方法執行時長:system.currentTimeMillis();
Long begin = System.currentTimeMillis();
//中間是你想做的操作
Long end = System.currentTimeMillis();
System.out.println(begin-end);//耗費的時間可以得到
7.System類
System.out out是System裡的一個靜態變數
System.out.println() println是PrintStream的方法
System.gc() 建議啟動垃圾回收機制
System.currentTimeMillis() 系統從1970.1.1到當前時間的總毫秒數
System.exit(0) 退出JVM
8.BigDecimal類
import java.math.BigDecimal;
BigDecimal large = new BigDecimal(100);
BigDecimal large1 = new BigDecimal(200);
BigDecimal large3 =large.add(large1);//呼叫方法加減乘除
System.out.println(large);
math包下,大資料,精度極高,屬於Java物件(引用資料型別),專門在財務軟體當中.
9.隨機數Random類
import java.util.Random;
Random ran = new Random();
int abcs = ran.nextInt(101);//下一個數是101,不包括101,範圍[0,101)。
int abcd = ran.nextInt();//範圍 32個位元組
小試牛刀:隨機產生五個不重複的隨機數(1-100)
感受一下,寫寫虛擬碼?!
import java.util.Random;
public class RandomTest01{
public static void main(String[] args) {
/**
* 隨機數放在陣列裡,判斷該隨機數是否與陣列裡的數重複,不重複的話賦值。
* 陣列的初始值?由於隨機數範圍為[0,101),避免混淆初始0和隨機數0,給定一個初始值-1。
*/
//建立一個長度為5的陣列,給定初始值。
int []arr = new int[5];
for(int i = 0; i<arr.length;i++){
arr[i]=-1;
}
//隨機數產生
Random random = new Random();
for (int i = 0;i<arr.length;){
int num = random.nextInt(200);
if(!contains(arr,num)){
arr[i]=num;
i++;//i++不能寫在迴圈結束後,因為i++的前提是該隨機數不在陣列裡且被賦值了以後。
//這裡也可以用while。
}//判斷隨機數在不在陣列裡?無法寫成簡單的表示式,考慮單獨寫成一個方法。
//方法的返回值?方法的形參?
}
//列印輸出隨機數
for (int i = 0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public static boolean contains(int [] array,int key){
for(int i = 0;i<array.length;i++) {
if(array[i] == key) {
return true;
}
}//該迴圈結束表示key不在陣列裡。這裡如果改成只迴圈到當前所有賦值的數,減少迴圈次數,就更好了。加入一個引數index。
return false;
}
}
10.列舉型別
enum為關鍵字,不能作為包名。列舉是一種引用資料型別。只有兩種情況用boolean,大於兩種情況用列舉。
/*enum 列舉型別名{
列舉值1,列舉值2
}
*/
public static Result divide(int a,int b){
try{
int c= a/b;
return Result.SUCCESS;
} catch(Exception d){
return Result.Fail;
}
}
enum Result{
SUCCESS,Fail
}
相關文章
- javaSE總結(轉+總結)Java
- Swift 專案總結 02 常用分類方法Swift
- 常用Java集合類總結Java
- Dapper常用方法總結APP
- 常用js方法總結:JS
- Day33:String類及其常用方法詳解
- 方法及其最佳化技巧總結
- 陣列中常用的方法總結陣列
- Java-String的常用方法總結!Java
- 內網穿透的常用方法總結內網穿透
- Javascript Object常用方法總結JavaScriptObject
- Object物件常用方法總結Object物件
- Python字串常用方法總結Python字串
- jQuery常用方法總結【三】jQuery
- 陣列的三種宣告方式總結、多維陣列的遍歷、Arrays類的常用方法總結陣列
- Java 常用類總結(SE基礎)Java
- js陣列常用方法總結JS陣列
- JS 常用方法總結記錄JS
- JS 陣列中常用方法總結JS陣列
- js中陣列常用方法總結JS陣列
- 【JavaSE】Map集合,HashMap的常用方法put、get的原始碼解析JavaHashMap原始碼
- String類常用的方法
- Java經典常用類總結(必須掌握!)Java
- LLM大模型: 常用的資料清洗方法總結大模型
- Scrapy 常用方法以及其補充
- css--元素居中常用方法總結CSS
- js與jquery常用陣列方法總結JSjQuery陣列
- JS常用陣列方法總結筆記JS陣列筆記
- JAVA註解的總結及其作用Java
- 【轉】Object類的常用方法Object
- 軟體測試:Java-String的常用方法總結Java
- css清除浮動float的七種常用方法總結CSS
- 【JavaSE】淺談TreadLocal,TreadLocal的常用方法set()、get()、remove()原始碼分析JavaREM原始碼
- Java程式設計基礎29——JavaSE總結Java程式設計
- Python | Python常用函式、方法示例總結(API)Python函式API
- 【JAVA集合】JAVA集合框架及其常用方法Java框架
- 常用的Java類方法【轉載】Java
- Java中Object類的常用方法JavaObject