底層實現:調用System.arrayCopyjava
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"); }
本質:是重寫了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));
int nums[]={1,8,99,40,77}; Arrays.sort(nums);//原數組會經過快速排序原理完成升序操做 for (int num : nums) { System.out.print(num+"\t"); } //sort方法返回值爲void
//源碼以下:(有多個重載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.1 退出程序(exit)安全
做用:終止當前正在執行的java虛擬機(非0爲異常終止)app
本質是調用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毫秒)ui
System.out.println(System.currentTimeMillis()); //經過兩次獲取時間,而後相減,能夠獲得程序某一部分的運行時間
2.3 數組的賦值(手動擴容)code
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)orm
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));//一年的第幾天