day13常用API2Calendar禽篱、System類、StringBuilder馍惹、StringBuiffer躺率、包裝類玛界、Collection集合

Calendar類

Calendar是抽象類,由于語(yǔ)言的敏感性悼吱,Calendar類在創(chuàng)建對(duì)象時(shí)并非直接創(chuàng)建脚仔,而是通過靜態(tài)方法創(chuàng)建,返回子類對(duì)象舆绎。
使用默認(rèn)時(shí)區(qū)和語(yǔ)言環(huán)境獲得一個(gè)日歷

Calendar calendar = Calendar.getInstance();

常用方法


  • public int get(int field),返回給定字段的值
public class TestCalendar {
    public static void main(String[] args) {
        //創(chuàng)建Calendar對(duì)象
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);
        //設(shè)置年
        int year = calendar.get(Calendar.YEAR);
        //設(shè)置月
        int month = calendar.get(Calendar.MONTH) + 1;
        //設(shè)置日
        int day = calendar.get(calendar.DAY_OF_MONTH);
        System.out.println(year + "月" + month + "月" + day + "日");

    }
}

  • public void set(int field,int value) 將給定的日歷字段設(shè)置成給定的值
public class TestCalendar2 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH) ;
        System.out.println(year+"年"+month+"月"+dayOfMonth+"日"); // 2020年7月28日
        calendar.set(Calendar.YEAR, 2021);
        year = calendar.get(Calendar.YEAR);
        month = calendar.get(Calendar.MONTH) + 1;
        dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH) ;
        System.out.println("set之后");
        System.out.println(year+"年"+month+"月"+dayOfMonth+"日"); // 2020年7月28日
    }
}
  • public abstract void add(int field,int amount) :根據(jù)日歷的規(guī)則鲤脏,為給定的日歷字典添加或者減去指定的時(shí)間量
public class TestCalendar3 {
    public static void main(String[] args) {
        Calendar calendar=Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH)+1;
        int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(year+"年"+month+"月"+dayOfMonth+"日");//2020年7月28日

        calendar.add(Calendar.DAY_OF_MONTH,2);
        calendar.add(Calendar.YEAR,-3);
        year = calendar.get(Calendar.YEAR);
        month= calendar.get(Calendar.MONTH)+1;
        dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println("add之后");
        System.out.println(year+"年"+month+"月"+dayOfMonth+"日");

    }
}

  • public Date getTime(): 返回一個(gè)表示此Calendar時(shí)間值(從歷元到現(xiàn)在的毫秒偏移量)的Date對(duì)象
public class TestCalendar4 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        Date date = calendar.getTime();
        System.out.println(date); // Tue Jul 28 09:13:15 CST 2020

        Date date1 = new Date();
        System.out.println(date1); // Tue Jul 28 09:13:15 CST 2020
    }
}

案例獲取當(dāng)月的最后一天

public class TestCalendar5 {
    public static void main(String[] args) throws Exception {
        // calendar.getActualMaximum();// 獲取給定日歷的最大可能值
        String lastDayOfMonth = getLastDayOfMonth("2020-06");
        System.out.println(lastDayOfMonth);
        int lastDay = lastDay(2020, 07);
        System.out.println(lastDay);
    }
    /**
     * 編寫一個(gè)方法, 根據(jù)給定字符串yyyy-MM獲取當(dāng)月的最后一天
     */
    public static String getLastDayOfMonth(String yearmonth) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        Date date = sdf.parse(yearmonth);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        return "" + lastDay;
    }
    public static int lastDay(int year, int month){
        Calendar calendar = Calendar.getInstance();
        calendar.clear(); // 清除所有日期數(shù)據(jù)
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month - 1);
        int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        return lastDay;
    }
}

System類

是java.lang包下的類吕朵,提供大量的靜態(tài)方法猎醇,可以獲取與系統(tǒng)相關(guān)的信息或者系統(tǒng)級(jí)操作,常用方法有;

  • 1.System.currentTimeMillis() 獲取當(dāng)前系統(tǒng)時(shí)間與1970年1月1日00點(diǎn)00分之間的毫秒值
public class TestScanner {
    public static void main(String[] args) {
        System.out.println(System.currentTimeMillis()); //1595902117467
    }
}

練習(xí):
驗(yàn)證一下for循環(huán)打印1-9999

public class TestSystem1 {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        for (int i = 0; i < 9999; i++) {
            System.out.print(i);
        }
        System.out.println();
        long end = System.currentTimeMillis();
        System.out.println("耗時(shí)" + (end - start));

    }
}
  • 2.arrayCopy將數(shù)組中指定的數(shù)據(jù)拷貝到另一個(gè)數(shù)組中


public class TestSystem2 {
    public static void main(String[] args) {
        //將src中前三個(gè)元素努溃,賦值到dest的前三個(gè)位置上復(fù)制元素前
        //操作之后:[1硫嘶,2,3梧税,4沦疾,5] dest[1,2第队,3哮塞,9,10]
        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);

        System.out.println(Arrays.toString(dest));
    }
}

StringBuilder類

由于String對(duì)象的不可變凳谦,字符串在進(jìn)行拼接時(shí)忆畅,總會(huì)創(chuàng)建新的對(duì)象,字符串是常量尸执,它的值在創(chuàng)建之后不能修改家凯,如果對(duì)字符串進(jìn)行頻繁的操作,每次都會(huì)創(chuàng)建新的String對(duì)象如失,既耗時(shí)又浪費(fèi)空間绊诲,為了解決這一問題,可以使用Java.lang.StringBuilder類.

StringBuilder又稱為可變字符序列褪贵,通過某些方法調(diào)用可以改變?cè)撔蛄械拈L(zhǎng)度和內(nèi)容掂之。

構(gòu)造方法:

  • public StringBuilder()
  • public StringBuilder(String str)
append方法
public class TestStringBuilder1 {
    public static void main(String[] args) {
        StringBuilder builder = new StringBuilder();
        StringBuilder builder1 = builder.append("hello");
        System.out.println("builder =" + builder );
        System.out.println("builder1 =" + builder1 );
        System.out.println(builder == builder1); //true
        //可以添加任何類型
        builder.append("啥呀");
        builder.append("world");
        builder.append(true);
        builder.append(1000);
        //在我們開發(fā)中,會(huì)遇到掉用一個(gè)方法后竭鞍,返回一個(gè)對(duì)象的情況板惑,
        // 然后使用返回的對(duì)象繼續(xù)調(diào)用方法
        //這種我們可以使用鏈?zhǔn)骄幊痰姆绞?        builder.append("haha").append("哈哈").append("true").append(1212);
        System.out.println("builder =" + builder );
    }
}
toString方法

通過toString方法,StringBuilder對(duì)象將會(huì)轉(zhuǎn)換為不可變的String對(duì)象


三者區(qū)別

包裝類

Java提供兩種類型系統(tǒng)偎快,基本類型和引用類型冯乘。使用基本類型在于效率,然而晒夹,很多情況會(huì)創(chuàng)建對(duì)象使用裆馒,因?yàn)閷?duì)象可以做更多的功能姊氓,也就有了對(duì)應(yīng)的包裝類。


  • 裝箱和拆箱
    基本類型與對(duì)應(yīng)的包裝類來(lái)回轉(zhuǎn)換的過程
    裝箱:基本到包裝
    拆箱:包裝到基本
public class BaoZhuangDemo {
    public static void main(String[] args) {
        Integer integer = new Integer(4); //基本====》包裝
        int i = integer.intValue();  //包裝變基本
    }
}

  • 自動(dòng)裝箱和自動(dòng)拆箱
    基本類型和包裝類的裝箱和拆箱可以自定義完成
//        Integer integer = new Integer(4); //基本====》包裝
//        int i = integer.intValue();  //包裝變基本
        Integer i = 4;   //自動(dòng)裝箱
        i = i + 4; //自動(dòng)拆箱
        int a = 100;
        System.out.println("a的值" + a);  

基本類型與字符串之間的轉(zhuǎn)換

public class Demo {
    public static void main(String[] args) {
        //“123”   123
        //基本類型轉(zhuǎn)為String類型
        int a = 100;
        String  b = " " + 100;
        System.out.println(b); //字符串100
        //String 類型轉(zhuǎn)換為基本類型
        //包裝類都有parseXxx靜態(tài)方法可以將字符串參數(shù)轉(zhuǎn)換為對(duì)應(yīng)的基本類型
        int c = Integer.parseInt("120");
        System.out.println(c);
        Integer d = Integer.valueOf("133");
        System.out.println(d);
    }
}

Collection集合

  • 集合:集合是Java中提供的一種容器喷好,可以用來(lái)存儲(chǔ)多個(gè)數(shù)據(jù)
    與數(shù)組的區(qū)別:
  • 數(shù)組的length是固定的翔横,集合可變
  • 數(shù)組中存儲(chǔ)的是同一類型的元素,集合存儲(chǔ)的都是對(duì)象梗搅,而且對(duì)象的類型可以不一致禾唁,在開發(fā)的過程中,當(dāng)對(duì)象多的時(shí)候无切,使用集合進(jìn)行存儲(chǔ)荡短。

集合分類

按照存儲(chǔ)結(jié)構(gòu)分為兩大類:

  • 單列集合:Java.util.Collection
  • 雙列集合: Java.util.Map

Collection單列集合類的根接口,它有兩個(gè)重要的子接口

  • java.util.List 特點(diǎn):元素有序且可重復(fù)哆键,主要實(shí)現(xiàn)類,ArrayList,LinkedList
  • java.util.Set 特點(diǎn):元素?zé)o序且不重復(fù),主要實(shí)現(xiàn)類掘托,HashSet,TreeSet


Collection常用功能

主要方法:

  • public boolean add(E e) 把給定的對(duì)象元素e添加到當(dāng)前的集合中
  • public void clear() 清空集合中所有的元素
  • public boolean remove(E e);把給定的對(duì)象元素e從集合中刪除
  • public boolean contain(E e);判斷集合中是否包含給定的元素
  • public boolean isEmpty();判斷當(dāng)前集合是否為空
  • public int size();返回集合中元素的個(gè)數(shù)
  • public Object [ ] toArray();把集合中的元素返回為Object[ ]類型的數(shù)組
public class TestCollection {
    public static void main(String[] args) {
        //使用多態(tài)形式創(chuàng)建集合對(duì)象
        Collection<String> coll = new ArrayList<>();
        //add
        coll.add("小魯班");
        coll.add("后羿");
        coll.add("安琪拉");
        System.out.println(coll);
        // contain(E e);判斷集合中是否包含給定的元素
        System.out.println(coll.contains("小魯班")); //true
        System.out.println(coll.contains("王昭君"));//false
        // remove(E e);把給定的對(duì)象元素e從集合中刪除
        System.out.println(coll.remove("小魯班")); //true
        System.out.println("刪除之后" + coll);
        // isEmpty();判斷當(dāng)前集合是否為空
        System.out.println(coll.isEmpty()); //false
        // size();返回集合中元素的個(gè)數(shù)
        System.out.println(coll.size()); //2
//        Object [ ] toArray();把集合中的元素返回為Object[ ]類型的數(shù)組
        Object[] objects = coll.toArray();
        for (int i = 0; i < objects.length; i++) {
            System.out.print(objects[i] + "\t");
        }
        System.out.println();
        //clear() 清空集合中所有的元素
        coll.clear();
        System.out.println(coll);


    }
}  

Iterater接口

在程序開發(fā)中我們經(jīng)常要遍歷集合中所有的元素,針對(duì)這種需求JDK提供Java.util.iterater也是Java集合的一員,籍嘹,它與CollectionMap不同闪盔,CollectionMap是存儲(chǔ)元素的,Iterater適用于迭代訪問(即遍歷)Collection中的元素辱士,Iterater又被稱為迭代器泪掀。
Collection 中:

Iterator常用方法:

  • boolean hasNext();如果仍然有元素可以迭代,返回true
  • E next() 返回迭代


增強(qiáng)for循環(huán)

增強(qiáng)for循環(huán)(也稱foreach循環(huán))是jdk1.5之后出現(xiàn)的高級(jí)for循環(huán)识补,專門用來(lái)遍歷數(shù)組和集合的族淮,內(nèi)部原理實(shí)際上是一個(gè)迭代器,不能對(duì)集合中的元素進(jìn)行增刪操作
格式:

for (元素的數(shù)據(jù)類型 變量  :集合或數(shù)組){
         //操作代碼
}

簡(jiǎn)單記憶格式:

for( 當(dāng)前取出的值   :   我要迭代誰(shuí)){
     //當(dāng)前取出的值
}

舉例

public class TestForEach {
    public static void main(String[] args) {
        int[] arr = {1, 4, 6, 7, 8};
        for (int a : arr) {
            System.out.println(a);
        }
        Collection<String> coll = new ArrayList<>();
        //add
        coll.add("小魯班");
        coll.add("后羿");
        coll.add("安琪拉");
        for (String hero : coll) {
            System.out.println("當(dāng)前英雄" + hero);
        }
        
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凭涂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贴妻,更是在濱河造成了極大的恐慌切油,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件名惩,死亡現(xiàn)場(chǎng)離奇詭異澎胡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)娩鹉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門攻谁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人弯予,你說(shuō)我怎么就攤上這事戚宦。” “怎么了锈嫩?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵受楼,是天一觀的道長(zhǎng)垦搬。 經(jīng)常有香客問我,道長(zhǎng)艳汽,這世上最難降的妖魔是什么猴贰? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮河狐,結(jié)果婚禮上米绕,老公的妹妹穿的比我還像新娘。我一直安慰自己馋艺,他們只是感情好栅干,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丈钙,像睡著了一般非驮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雏赦,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天劫笙,我揣著相機(jī)與錄音,去河邊找鬼星岗。 笑死填大,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的俏橘。 我是一名探鬼主播允华,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼寥掐!你這毒婦竟也來(lái)了靴寂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤召耘,失蹤者是張志新(化名)和其女友劉穎百炬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體污它,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡剖踊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了衫贬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片德澈。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖固惯,靈堂內(nèi)的尸體忽然破棺而出梆造,到底是詐尸還是另有隱情,我是刑警寧澤缝呕,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布澳窑,位于F島的核電站斧散,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏摊聋。R本人自食惡果不足惜鸡捐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望麻裁。 院中可真熱鬧箍镜,春花似錦、人聲如沸煎源。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)手销。三九已至歇僧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锋拖,已是汗流浹背诈悍。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兽埃,地道東北人侥钳。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像柄错,于是被迫代替她去往敵國(guó)和親舷夺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348