29常用工具類(一)
1.Arrays------處理陣列
1.1 copyOf方法
底層實作:呼叫System.arrayCopy
public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
//補充說明
//實參為int陣列型別copeOf的一段源代碼
//其實在Arrays類的原始碼中,有8種基本資料型別陣列所對應的copeOf方法,其核心是呼叫了System.arraycopy方法
//Arrays類中copyOf的回傳值為實參所對應的基本資料型別陣列,如上面原始碼回傳的是int[]的陣列
//Arrays類中copeOf與System.arraycopy的區別如下
1.Arrays類的copeOf方法本質是呼叫System.arraycopy方法實作的
2.Arrays類中的copeOf可以實作8種基本資料型別陣列的復制,且回傳的是一個新陣列的地址;
3.System.arrayCopy方法無回傳值,底層是用native關鍵字修飾的方法(原生態方法),即呼叫非java語言的方法
4.System要求復制時自己創建一個新陣列,然后當成實參傳進去
//運行實體
int[] nums={1,66,4,3,-2};
int[] nums01=Arrays.copyOf(nums,nums.length+1);//第二個引數為復制后的長度
System.out.println("新陣列如下所示");
for (int i = 0; i < nums01.length; i++) {
System.out.print(nums01[i]+"\t");
}
1.2 toString方法(以字串的形式列印陣列元素的內容)
本質:是重寫了Object的toString方法
public static String toString(int[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) {
b.append(a[i]);
if (i == iMax)
return b.append(']').toString();
b.append(", ");
}
}
//StringBuffer雖然安全但是效率不高,StringBuilder不安全但是效率高,所以綜合多方
//運行實體
int[] nums={1,66,4,3,-2};
System.out.println("采用toString方法列印的陣列:"+Arrays.toString(nums));
1.3 sort方法(默認升序,快排)
int nums[]={1,8,99,40,77};
Arrays.sort(nums);//原陣列會通過快速排序原理完成升序操作
for (int num : nums) {
System.out.print(num+"\t");
}
//sort方法回傳值為void
1.4 fill方法(將陣列里面的值全部賦值成同一個)
//原始碼如下:(有多個多載fill方法,選了一個)
public static void fill(long[] a, long val) {
for (int i = 0, len = a.length; i < len; i++)
a[i] = val;
}
int[] nums={1,66,4,3,-2};
Arrays.fill(nums,100);
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+"\t");
}
//fill方法回傳值為void
2.System類(系統工具類)
2.1 退出程式(exit)
作用:終止當前正在執行的java虛擬機(非0為例外終止)
本質是呼叫Runtime類中的exit方法
//System.exit原始碼如下:
public static void exit(int status) {
Runtime.getRuntime().exit(status);
}
//Runtime.getRuntime() 回傳值為與當前java應用程式相關的Runtime物件
//Runtime物件實體在每個java應用程式中都會有一個,其作用是使應用程式能夠與其運行的環境相連接
//注意:應用程式不能創建自己的Runtime類實體
//Runtime類中的原始碼如下:
public static Runtime getRuntime() {
return currentRuntime;
}
//這個currentRuntime已經實體化過了(47行)
exit方法原始碼
public void exit(int status) {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkExit(status);
}
Shutdown.exit(status);
}
2.2 獲取當前時間(距離1900年1月1號的毫秒值,1s=1000毫秒)
System.out.println(System.currentTimeMillis());
//通過兩次獲取時間,然后相減,可以得到程式某一部分的運行時間
2.3 陣列的賦值(手動擴容)
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src代表源陣列的地址,dest代表目標陣列的地址;
srcPos源陣列獲取替換元素(讓另外一個元素被替換)的起始部分,destPos目標陣列替換的起始位置(被替換元素替換)
length為替換的總長度
int[] a={1,8,99,66};
int[] b=new int[4];
//替換元素為1,8,99
//被替換起始位置為b[1]
System.arraycopy(a,0,b,1,a.length-1);
for (int i = 0; i < b.length; i++) {
System.out.print(b[i]+"\t");
}
//第一個未賦值,系統會自動賦一個默認值
3.Date類 (與SimpleDateFormat類搭配使用)
? 默認創建物件,為當前時間
使用方法如下所示:
步驟一 實體化一個Date物件
步驟二 實體化一個SimpleDateFormat物件,把需要的格式給輸進去
步驟三 呼叫format方法(列印出當前時間)----回傳的是String型別的日期資訊
(用String變數來裝著它)
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM//dd HH:mm:ss");
String str=simpleDateFormat.format(date);
System.out.println(str);
4.Calendar
//locale為語言環境,TImezone為時區
輸出日歷相關資訊的操作流程如下所示:
第一步.宣告一個日歷物件,指向一個日歷,該日歷是通過getInstance靜態方法獲取默認時區和語言環境的日歷,
第二步,根據需求,通過get方法獲取你想要獲取的資訊(年、月、日、周)---->給定日歷欄位的值
注意:這些日歷欄位都是全域常量(static final)
Calendar calendar=Calendar.getInstance();
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//這個月的第幾天
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//這周星期幾
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//一年的第幾天
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/230882.html
標籤:Java
上一篇:29 常用工具類(一)
