29 常用工具類(一)

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方法(以字符串的形式打印數組元素的內容)

本質:是調用Arrays類中自己寫的靜態方法

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));//一年的第幾天
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章