1. 程式人生 > >Java SE 2

Java SE 2

Java SE

1.Date 和 DateFormat

Date類及常用方法

java.util.Date 類用於封裝日期及時間資訊。
Date 類的大多數用於進行時間分量計算的方法已經被Calendar取代。

    //無參的構造方法
    Date date = new Date();
    System.out.println(date); //Tue Apr 10 13:46:04 CST 2018
    long time1 = date.getTime(); //獲取相應的毫秒數,即1970年1月1日距現在的毫秒數。
    date.setTime(time1 + 24 * 60 * 60 * 1000); //設定毫秒數
    System.out.println(date); //Wed Apr 11 13:46:04 CST 2018

SimpleDateFormat類---format方法

java.text.SimpleDateFormat類用於實現Date物件和字串表示的日期資訊的轉換。
SimpleDateFormat(String pattern)

    SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM月dd日");
    Date date1 = new Date();
    String dataStr = format1.format(date1);
    System.out.println(dataStr); //2018年04月10日

SimpleDateFormat類---parse方法

和format方法相反,parse方法用於按照特定格式將表示時間的字串轉換成Date物件。

    String dataStr = "2013-01-23";
    String pattern = "yyyy-MM-dd";
    SimpleDateFormat format1 = new SimpleDateFormat(pattern);
    Date date = null;
    try {
        date = format1.parse(dataStr);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    System.out.println(date); //Wed Jan 23 00:00:00 CST 2013

常用格式字串

yyyy-MM-dd HH:mm:ss (HH小時制,hh12小時制)

DateFormat

DateFormat是SimpleDateFormat的父類,其工廠方法getXXXInstance可以返回根據地域資訊的預設格式的DateFormat物件。

    Date date = new Date();
    DateFormat df1 = DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.US);
    System.out.println(df1.format(date)); //Apr 10, 2018

    DateFormat df2 = DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA);
    System.out.println(df2.format(date)); //2018-4-10

2.Calendar類

java.util.Calendar類用於封裝如理資訊,其主要的作用在於其方法可以對時間分量進行計算。
Calendar類是抽象類,其具體子類針對不同國家的日曆系統,其中使用廣泛的CregorianCalendar(格里高利曆),對應大多數國家的標準日曆系統。
Calendar c = Calendar.getInstance();

Calendar 分量計算

Calendar 通過set 和 get方法對各個時間分量進行設定及獲取。

    Calendar c1 = Calendar.getInstance();
    //設定年月日的分量
    c1.set(Calendar.YEAR,2013);
    c1.set(Calendar.MONTH,Calendar.JANUARY);
    c1.set(Calendar.DATE,3);
    System.out.println(c1.get(Calendar.DAY_OF_WEEK));
    //輸出該日期星期幾,輸入為1為星期日。
    System.out.println(c1.get(Calendar.DAY_OF_WEEK)); //add新增分量值

3.基本型別包裝類

Java的8種基本型別分別對應8種“包裝類”,每一個包裝類都封裝了一個對應的基本型別成員變數,同時提供針對該資料型別的使用方法。
java.lang.Integer... ...Short 分別對應int、long、double、char、boolean、byte、float、short 。

Interger和Double常用方法

    System.out.println(Integer.MAX_VALUE);
    System.out.println(Double.MAX_VALUE);
    //parseInt和parseDouble分別將字串解析成int 和double資料。
    int n1 = Integer.parseInt("123");
    double d1 = Double.parseDouble("1234.345");
    //Integer 的toBinaryString和toHexString分別將int資料轉換成二進位制和十六進位制的字串序列。
    String bStr = Integer.toBinaryString(100);
    String hStr = Integer.toHexString(100);

BigDecimal類

Java的float和double在運算會有舍入誤差。如果希望精確的計算,可以使用java.math.BigDecimal類。

    BigDecimal d1 = new BigDecimal("3.0");
    BigDecimal d2 = new BigDecimal("2.9");
    //除了subtract還有add、multiply、divide等。
    BigDecimal d3 = d1.subtract(d2);
    System.out.println(d3);//0.1

    BigDecimal d4 = d1.divide(d2,8,BigDecimal.ROUND_HALF_UP);
    //ROUND_HALF_UP通常是四捨五入模式
    System.out.println(d4);

BigInterger類

理論上BigInterger類的儲存範圍只受記憶體容量的限制。

    BigInteger sum = BigInteger.valueOf(1);
    for (int i = 2; i <200; i++) {
        sum = sum.multiply(BigInteger.valueOf(i));
    }
    System.out.println(sum.toString().length());
    System.out.println(sum);

4.Collection框架及List集合

集合框架用於儲存物件的特定資料結構的容器。集合包含不同的資料結構(線性表、查詢表)的實現類。

    int size(); //返回物件的個數
    boolean isEmpty(); //是否為空
    boolean contains(Object); //是否包含指定物件
    void clear(); //清空
    boolean add(E e); //新增物件
    boolean remove(Object o); //移除物件
    boolean addAll(Collection<?extends  E> c); //將一個集合的所有元素新增到集合中
    boolean removeAll(Collection<?> c); //刪除集合中與另一個集合中相同的全部元素
    Iterator<E> iterator(); //返回該集合的對應的迭代器

ArrayList和LinkedList

List介面是Colletion的子介面,用於定義線性資料結構;可以理解為存放物件的陣列,只不過其元素個數可以動態的增加或減少。
ArrayList和LinkedList分別用動態陣列和連結串列的方式實現了List介面。
ArrayList更適合隨機訪問,而LinkledList更適合於插入和刪除。

List常用方法

    String str = new String();
    ArrayList list = new ArrayList();
    list.add("one");
    list.add("two");
    list.add("three");

    System.out.println(list.get(1));//two

    Object o1 = list.set(1,"five");
    System.out.println(o1);//five

    System.out.println(list.size()); //3
    System.out.println(list.toString()); //[one, five, three]
    if (list.contains("one")){
        list.remove("one");
    }
    System.out.println(list.size()); //2
    System.out.println(list.toString()); //[two, three]
    list.clear();
    System.out.println(list.isEmpty()); //true

5.迭代器

所有Collection的實現類都實現了其iterator方法,該方法返回一個Iterator介面型別的物件,用於實現對集合元素的迭代便利。Iterator定義有三個方法:

  • boolean hasNext();//判斷指標後面是否有蒜素
  • E next();//指標後移,返回當前的元素。
  • void remove();//在原集合中刪除剛剛返回的元素。
    ArrayList list = new ArrayList();
    list.add("one");list.add("two");list.add("#");list.add("three");list.add("#");
    Iterator it = list.iterator();
    while (it.hasNext()) {
        Object obj = it.next();
        if ("#".equals(obj)) it.remove();
    }

    System.out.println(list);