Java第十五天(包裝類、日期類、日期的格式化 SimpleDateFormat類,集合)

64.包裝類java

(1)概念數組

把基本數據類型轉換成類,咱們使用基本數據類型作進制轉換很麻煩,對於臨界值也很差判斷,咱們的包裝類提供了不少方法供咱們使用,這樣會方便不少。緩存

(2)Integer類jvm

public class IntegerTest {
    //int------>Integer
    Integer i=new Integer(10);
    //Integer------>int
    int i1=i.intValue();

    //String----->Integer,Integer構造器中參數必須是數值
    Integer i2=new Integer("55");
    //Integer------>String
    String s=i2.toString();

    //int----->String
    String s1=i1+"";
    String s2=String.valueOf(i1);
    //String------>int
    int i3=Integer.parseInt(s1);
}
public class IntegerTest1 {
    public static void main(String[] args) {
        Integer i=new Integer(128);
        //轉換成十進制
        String s=i.toBinaryString(55);
        //轉換成八進制
        String s1=i.toOctalString(i);
        //轉換成十六進制
        String s2=i.toHexString(i);
        System.out.println(s);
        System.out.println(s1);
        System.out.println(s2);
    }
}

(3)須要注意:包裝類不能直接比較值, Integer默認值是nullide

public static void main(String[] args) {
    Integer i=new Integer(128);
    Integer j=new Integer(264);
    //包裝類不能直接用"=="比較值,能夠轉換成基本數據類型再比較
    System.out.println(i.intValue()==j.intValue());
    //Integer中覆寫了equal是方法,也能夠直接用來比較兩個Integer的值
    System.out.println(i.equals(j));
}
public class IntegerDemo {
    private String name;
    /*基本數據類型默認值是0
    * Integer默認值是null
    * */
    private Integer age;
    private Integer gender;
}

(4)自動裝箱拆箱this

裝箱:把int類型轉換正Integer--------------》new Integer(int i)3d

拆箱:把Integer轉換成int------------》intValue()對象方法指針

裝箱和拆箱是不須要咱們主動調用的,是jvm自動給咱們完成的。orm

其餘的7種基本數據類型和Integer同樣。對象

public static void main(String[] args) {
    int i=5;
    //自動裝箱
    Integer i1=i;

    Integer i2=new Integer(8);
    //自動拆箱
    int i3=i2;
}

自動裝箱的底層原理,實際自動裝箱也是建立Integer對象,只不過是Integer類自動完成,-128到127之間是使用緩存對象,超出這個範圍都是new Integer(x)

public static void main(String[] args) {
    Integer i=127;
    Integer j=127;
    System.out.println(i==j);

    Integer i1=128;
    Integer j1=128;
    System.out.println(i1==j1);
}

 

65.日期類

日期的處理

import java.util.Date;

public class DateTest {
    public static void main(String[] args) {
        //得到當前的日期時間對象
        Date d1=new Date();
        System.out.println(d1);
        //得到從1970 年1月 1 日0點至今的毫秒數
        long c=System.currentTimeMillis();
        System.out.println(c);
        //根據毫秒數得到當前的日期時間對象
        Date d2=new Date(c-24*60*60*1000);
        System.out.println(d2);
        //從1970 年1月 1 日0點到d2這個日期時間的毫秒數
        long time=d2.getTime();
        System.out.println(time);
    }
}

66.日期的格式化 SimpleDateFormat類

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatTest {
    public static void main(String[] args) {
        //得到當前日期時間
        Date d=new Date();
        //默認格式化
        SimpleDateFormat s1=new SimpleDateFormat();
        String d1=s1.format(d);
        System.out.println(d1);
        //指定格式化
        SimpleDateFormat s2=new SimpleDateFormat("yyyy-mm-dd hh:mm:ss E");
        String d2=s2.format(d);
        System.out.println(d2);
        //把字符串解析成日期的對象
        String s="2019-05-14 13:04:58 星期二";
        try {
            Date ds=s2.parse(s);
            System.out.println(ds);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

67.集合

數組:長度固定, 能夠存儲基本數據類型,也能存儲對象

集合:長度可變,因爲有包裝類的存在,集合能夠存儲任何類型               

集合提供了豐富的API,操做集合更簡單,功能更強大。

public static void main(String[] args) {
    //建立一個10個學生的集合
    Student[] students = new Student[10];
    //建立10個Student對象放在集合中
    for (int i = 0; i < students.length; i++) {
        students[i]=new Student("張三"+i,12030,18);
        //打印數組的時候是沒有辦法調用裏面對象的方法的,因此用遍歷的方式打印
        System.out.println(students[i]);
    }
}

(1)集合的體系

Collection接口是集合的根接口,橙色爲最經常使用的

(2)接口 Collection<E>

E是泛型,指定往集合裏面存什麼類型

import java.util.ArrayList;
import java.util.Collection;

public class CollectionTest {
    public static void main(String[] args) {
        Collection floowers=new ArrayList();
        //在集合中添加元素
        floowers.add("芍藥");
        floowers.add("百合");
        floowers.add("牡丹");
        floowers.add("雛菊");
        //集合中覆寫了toString方法能夠直接打印值
        System.out.println(floowers);
        Collection grass=new ArrayList();
        grass.add("含羞草");
        grass.add("燈芯草");
        //在集合中添加另外一個集合的內容
        floowers.addAll(grass);
        //從集合中移除單個元素
        floowers.remove("雛菊");
        //從集合中移除子集合的內容
        floowers.removeAll(grass);
        //判斷集合中是否包含指定元素
        boolean a=floowers.contains("芍藥");
        //判斷集合中是否包含指定子集合
        boolean b=floowers.containsAll(grass);
        //判斷集合是否爲空
        boolean c=floowers.isEmpty();
        //清空集合
        grass.clear();
        //集合轉化成數組,注意返回的是Object
        Object[] objects = floowers.toArray();
    }
}

(3)集合中的遍歷---迭代器

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionTest1 {
    public static void main(String[] args) {
        Collection floowers=new ArrayList();
        //在集合中添加元素
        floowers.add("芍藥");
        floowers.add("百合");
        floowers.add("牡丹");
        floowers.add("雛菊");
        floowers.add("含羞草");
        floowers.add("燈芯草");
        iteratorCollection(floowers);
    }
    public static void iteratorCollection(Collection coll){
        //Iterator<E> iterator() 返回在此 collection 的元素上進行迭代的迭代器
        Iterator iterator = coll.iterator();
        //boolean hasNext()若是仍有元素能夠迭代,則返回 true
        while(iterator.hasNext()){
            //E next()返回迭代的下一個元素 最好用Object接收
            Object next = iterator.next();
            System.out.println(next);
        }
    }
}

迭代器的指針是單向一去不復返的,在寫遍歷方法的時候只能用一次,到最後iterator.hasNext()的值是false就不能從頭開始了

(4)集合的擴展(集合中的集合)

public class Book {
    private String name;
    private int price;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public Book(String name, int price) {
        this.name = name;
        this.price = price;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}
import java.util.ArrayList;
import java.util.Collection;

public class Student {
    private String name;
    private int id;
    private int age;
    //學生類中有一個集合屬性
    private Collection books=new ArrayList();

    public Student(String name, int id, int age) {
        this.name = name;
        this.id = id;
        this.age = age;
    }

    public Student(String name, int id, int age, Collection books) {
        this.name = name;
        this.id = id;
        this.age = age;
        this.books = books;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", id=" + id +
                ", age=" + age +
                ", books=" + books +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Collection getBooks() {
        return books;
    }

    public void setBooks(Collection books) {
        this.books = books;
    }
}
import java.util.ArrayList;
import java.util.Collection;

public class CollectionTest2 {
    public static void main(String[] args) {
        //建立一個學生集合
        Collection students=new ArrayList();
        //新建一個學生對象包含姓名、學號、年齡、藏書
        Student a1=new Student("張三",1,18);
        students.add(a1);
        //建立一個藏書集合爲學生a1的藏書
        Collection books=a1.getBooks();
        //建立書籍對象
        Book b1=new Book("盜墓筆記",30);
        Book b2=new Book("繪意",15);
        //在集合中添加整個子集合做爲內容
        books.add(b1);
        books.add(b2);
        Student a2 = new Student("李四", 2, 17);
        students.add(a2);
        //引用的全部類必須都覆寫了toString方法才能打印出值來
        System.out.println(students);
    }
}

(5)迭代器的拓展

迭代器在遍歷過程當中不容許變動集合

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionTest3 {
    public static void main(String[] args) {
        Collection family=new ArrayList();
        family.add("mama");
        family.add("baba");
        family.add("i");
        iteratorCollection(family);
    }
    public static void iteratorCollection(Collection coll){
        Iterator iterator = coll.iterator();
        while(iterator.hasNext()){
            Object obj=iterator.next();
            System.out.println(obj);
            //迭代器在遍歷過程當中不容許變動集合
            if(obj=="baba"){
                coll.add("papa");
            }
        }
    }
}

相關文章
相關標籤/搜索