Java基礎Day07(Map Calender Date 包裝類 System類 異常)

呆呆來啦發表於2020-07-01

1.Map

  • Map是集合容器,存放的元素有鍵與值兩部分組成,通過鍵可以找到所對應的值,鍵和值必須是引用資料型別,鍵是唯一的,不能重複,沒有順序。
  • HashMap是Map的實現類.
  • Map的新增,刪除,查詢
//建立Map物件 
Map<String, String> map = new HashMa p<String,String>(); 
//給map中新增元素 
map.put("1", "Monday"); 
map.put("7", "Sunday"); 
System.out.println(map); 
//當給Map中新增元素,會返回key對應的原來的 value值,若key沒有對應的值,返回null System.out.println(map.put("1", "Mo n")); // Monday 
System.out.println(map); // {星期日=Su nday, 星期一=Mon}   根據指定的key獲取對應的value 
String en = map.get("1"); 
System.out.println(en); // Sunday 根據key刪除元素,會返回key對應的value值
String value = map.remove("1"); 
System.out.println(value); // Sunday 
System.out.println(map); // {1=Mon}
  • Map的遍歷
Map<String, String> map = new HashMa p<String,String>();
//給map中新增元素 map.put("鄧超", "孫儷"); map.put("李晨", "范冰冰"); map.put("劉德華", "柳巖"); //獲取Map中的所有key Set<String> keySet = map.keySe t(); for(String key : keySet){ System.out.println(map.get(ke y)) }

 

Calender

/*
public abstract class Calendar  extends Object  implements Serializable, Cloneable, Comparable<Calendar>   抽象類
 */
    //建立物件   Calendar calendar = Calendar.getInstance(); //get(int filed) //獲取年月日 時分秒資訊 int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH)+1;//從0開始算起,最大11;0代表1月,11代表12月
     int date = calendar.get(Calendar.DATE);
     int hour = calendar.get(Calendar.HOUR);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);
        System.out.println(year+"年"+month+"月"+date+"日 "+hour+":"+minute+":"+second);  //2020年7月1日     11:14:46
        
     //指定欄位增加值
     Calendar c = Calendar.getInstance();
     //修改當前時間為3天后
     c.add(Calendar.DATE, 3);
     //修改當前時間為5小時後
     c.add(Calendar.HOUR, 5);
     //轉換日期型別
        Date time = calendar.getTime();
        System.out.println(time);  // Wed Jul 01 11:16:10 CST 2020

        //設定時間為2020年5月7日
        calendar.set(Calendar.YEAR, 2020);
        calendar.set(Calendar.MONTH, 5);
        calendar.set(Calendar.DATE, 7);
        int year2 = calendar.get(Calendar.YEAR);
        int month2= calendar.get(Calendar.MONTH);
        int date2 = calendar.get(Calendar.DATE);
        System.out.println(year2+"年"+month2+"月"+date2+"日");//2020年5月7日

      //使用日曆計算平年閏年更為方便
      Calendar c = Calendar.getInstance();
      c.set(2000, 2, 1);
      c.add(Calendar.DATE, -1);
      int a = c.get(Calendar.DATE);
      System.out.println(a);
 
 
 
 
 
 

  

Date

建構函式  :public Date()

分配一個 Date物件並對其進行初始化,以便它表示分配的時間,測量到最近的毫秒。System.currentTimeMillis();
Date date1 = new Date();
System.out.println(date1);//當前日期 
Date date2 = new Date(12354356000000L);
System.out.println(date2);//指定日期
  //日期和毫秒的轉換

  Date date = new Date();

  long time = date.getTime();

  System.out.println(time);//1499169262875

  

DateFormat

  格式化日期類,通常用於日期和String的轉換
Date date2 = new Date(); //DateFormat抽象類,SimpleDateFormat是DateF ormat實現類 
DateFormat df = new SimpleDateFormat("yyy y-MM-dd E HH:mm:ss a"); 
String str = df.format(date2); 
System.out.println(str);//2017-07-04 星期 二 20:04:43 下午

 

 

  日期字串之間的抓換
Date date = new Date(12354356000000L); 
DateFormat df = new SimpleDateFormat(“yyy y年MM月dd日”);
String str = df.format(date); 
String str = ”2020年12月11日”; 
DateFormat df = new SimpleDateFormat(“yyy y年MM月dd日”); 
Date date = df.parse(str);

System

    public static void main(String[] args) {
        // 獲取當前時間的毫秒值
        System.currentTimeMillis();
       // 結束當前程式
        System.exit(0);
      // 陣列的拷貝

        System.currentTimeMillis();//取當前系統時間與1970年01月01日00:00點 之間的毫秒差值
        System.exit(0);//結束程式,通常傳入0記為正常狀 態,其他為異常狀態
        int[] src = new int[]{1,2,3,4,5};
        int[] dest = new int[]{6,7,8,9,10}; //源陣列,源陣列的起始位置,目標陣列,目標陣列的起 始位置,目標陣列的長度
        System.arraycopy( src, 0, dest, 0, 3); //src陣列元素[1,2,3,4,5] //dest陣列元素[1,2,3,9,10]
    }

 

Math

  • abs方法,結果都為正數
  • double d1 = Math.abs(-5); // d1的值為5 
    double d2 = Math.abs(5); // d2的值為5
    

      

  • ceil方法,結果為比引數值大的最小整數的double值
  • double d1 = Math.ceil(3.3); //d1的值為 4.0 
    double d2 = Math.ceil(-3.3); //d2的值為 -3.0 
    double d3 = Math.ceil(5.1); // d3的值為 6.0
  • floor方法,結果為比引數值小的最大整數的double值
  • double d1 = Math.floor(3.3); //d1的值為3.0 
    double d2 = Math.floor(-3.3); //d2的值 為-4.0 
    double d3 = Math.floor(5.1); //d3的值為 5.0
    

     

  • max方法,返回兩個引數值中較大的值
  • double d1 = Math.max(3.3, 5.5); //d1的值為 5.5 
    double d2 = Math.max(-3.3, -5.5); //d2的 值為-3.3
    

     

  • min方法,返回兩個引數值中較小的值
  • double d1 = Math.min(3.3, 5.5); //d1的值為 3.3 
    double d2 = Math.max(-3.3, -5.5); //d2的 值為-5.5
    

     

  • pow方法,返回第一個引數的第二個引數次冪的值
  • double d1 = Math.pow(2.0, 3.0); //d1的值為 8.0
    double d2 = Math.pow(3.0, 3.0); //d2的值為 27.0
    

     

  • round方法,返回引數值四捨五入的結果
  • double d1 = Math.round(5.5); //d1的值為6.0 
    double d2 = Math.round(5.4); //d2的值為5.0
    

     

  • random方法,產生一個大於等於0.0且小於1.0的double小數
  • double d1 = Math.random();
    //得到的 是[0,1)的小數 
    //鎖定範圍獲取 a-b整數 
    int a = (int)(Math.random()*(b-a+1))+a
    

     

包裝類

  包裝類的作用實現基本資料型別和字串之間的轉換字串,基本資料型別,
  包裝型別轉換字串轉換基本資料型別需要呼叫包裝類 包裝類.parse基本資料型別("字串");
  int a = Integer.parseInt("12");
 
  基本資料型別轉換字串 String str = ""+基本資料型別;
  或者 String str =String.valueOf(34);
  基本資料型別轉換包裝型別: Integer obj =Interger.valueOf(3);
  包裝型別轉換基本資料型別: int a =obj.intValue();
  jdk1.5以後系統提供自動裝箱:int和integer可以自動轉換
 
 

大資料運算

BigInteger

大資料整數的加,減,乘,除

//大資料封裝為BigInteger物件 
BigInteger big1 = new BigInteger("12345 678909876543210"); 
BigInteger big2 = new BigInteger("98765 432101234567890"); //add實現加法運算 
BigInteger bigAdd = big1.add(big2); System.out.println(bigAdd); //subtract實現減法運算
BigInteger bigSub = big1.subtract(big 2); System.out.println(bigSub); //multiply實現乘法運算 BigInteger bigMul = big1.multiply(big 2);System.out.println(bigMul); //divide實現除法運算 BigInteger bigDiv = big2.divide(big1); System.out.println(bigDiv);

 

BigDecimal

有些時候操作小數的,會出現精度問題如

System.out.println(0.09+0.01);//0.0999999 9999999999 
System.out.println(1.201*100);//120.10000 000000001 //大資料封裝為BigDecimal物件 BigDecimal big1 = new BigDecimal("0.09"); BigDecimal big2 = new BigDecimal("0.01"); //add實現加法運算 BigDecimal bigAdd = big1.add(big2); System.out.println(bigAdd ); BigDecimal big3 = new BigDecimal("1.0"); BigDecimal big4 = new BigDecimal("0.32"); //subtract實現減法運算 BigDecimal bigSub = big3.subtract(big4); System.out.println(bigSub); BigDecimal big5 = new BigDecimal("1.10 5"); BigDecimal big6 = new BigDecimal("100"); //multiply實現乘法運算 BigDecimal bigMul = big5.multiply(big6); System.out.println(bigMul); //divide實現除法 BigDecimal bigDiv = big5.divide(big6,2,Bi gDecimal.ROUND_UP);

 

Arrays

使用二分查詢搜尋指定int型別陣列
int[] arr = {1,3,4,5,6}; 
int index = Arrays.binarySearch(arr, 4); //index的值為2 
int index2= Arrasy.binarySearch(arr, 2); //index2的值為-1
陣列升序排序
int[] arr = {1,5,9,3,7};
Arrays.sort( arr );
將陣列的內容以字串形式呈現
int[] arr = {1,5,9,3,7}; String str = Arrays.toString(arr); // str 的值為[1, 3, 5, 7, 9]

  

 

異常

  如果產生異常的地方沒有對他處理,那麼會向上丟擲,拋向呼叫者,如果呼叫者沒有對異常作出處理,會給jvm處理,jvm會找到自己內部能不能識別到該異常資訊對應的類,如果找到了,會構建一個異常的物件,會把異常產生的原因,異常產生的位置,異常產生的內容封裝進該物件中在控制檯顯現出來,並且終止程式。

  throwable類中

    public String getMessage()返回此throwable的詳細訊息字串。在Throwable類的下的子類Error異常情況是無法解決的,屬於硬傷,作為程式設計師能夠解決的是Exception這種型別的異常情況。

Exception:

  編譯期異常:通過使用整合開發工具在編寫程式的時候,就出現的異常問題,如果不處理,程式無法繼進行,需要程式設計師立刻對異常做出處理,否則無法編寫。

  執行期異常:在編譯之後,程式在執行過程中產生的異常問題,JM把異常資訊丟擲,一般是由於邏輯錯誤導致的異常情況,通過優化你的程式碼可以解決掉的

編譯期異常:除了RunTimeException異常之外,其餘的都是編譯期異常。

執行期異常:

  算術異常:Ari thmeticException

  空指標異常:Null PointerException

  越界異常:IndexOutOfBoundsException

  類轉換異常:ClassCastException

 

 

相關文章