JavaSE核心——各類類

一,Object類

    在java的繼承體系中,java.lang.Object類位於頂端(是全部對象的直接或間接父類)。若是一個沒有使用extends關鍵字來代表要繼承的類,則默認繼承java.lang.Object類,Object類定義了「對象」的基本行爲,被子類默認繼承。
java

    1,toString()方法:返回一個能夠表示該對象屬性內容的字符串。
安全

Object  obj = new Object();
String info = obj.toString() ;
Systmem.out.println(info) ;  //返回一個能夠表示該對象屬性內容的字符串。

    ①使用toString()方法,由於全部的類都繼承了Object類,而toString()方法是Object類定義的,因此咱們直接繼承了這個方法,Object類的toString()方法幫咱們返回了一個字符串。這個字符串的格式是固定的。
多線程

    ②app

public static void main(String[] args){
    //SOP(toString()) ;        //不能直接調用,編譯錯誤
    Point p = new Point(1); 
    System.out.println(p) ;    //輸出p對象的toString()方法返回值。
}

    不能直接使用toString()方法,由於該方法不是靜態的,靜態方法中不能直接引用非靜態的屬性和方法,想引用必須建立對象。非靜態方法中能夠直接引用靜態屬性和方法。
ide

    2,equals方法。
ui

        用於對象的「相等」邏輯。
編碼

        「==」與equals的區別:
spa

        用「==」比較對象時,描述的是兩個對象是不是一個對象。根據地址值判斷。而equals描述的是兩個對象的內容是否相等,內容相等取決於業務邏輯須要,能夠本身定義比較規則。
線程

二,String類

    是字符串類型,是引用數據類型,是不可變字符串,無線程安全問題。在java.lang.String類中。
設計

    1,String的equals方法:兩個字符串進行比較時,咱們一般使用equals方法進行比較,字符串重寫了Object類中的equals方法,用於比較字符串是否一致,咱們不能保證任什麼時候候「==」都成立。

    2,當一個字符串變量和一個字面量進行比較時,咱們通常吧字面量放在前面,即字面量.equals(字符串變量)。覺得這樣不會出現空指針異常,若是反過來,字符串變量.equals(字面量),若是字符串變量爲空,則會出現空指針異常。若是比較雙方都是變量則可使用if(str!=null&&str.equals(str1))

    3,String另一個equals方法,equalsIgnoreCase(),該方法的做用是忽略大小寫去比較字符串內容。經常使用環境:驗證碼比較!!if("HELLO".equalsIgnoreCase(str)) ;。

    4,String的基本方法:

        ①String toLowerCase():返回字符串的小寫形式,如,str.toLowerCase() ;

        ②String toUpperCase():返回字符串的大寫形式,如,str.toUpperCase() ;

        ③String trim():去掉字符串兩端的空格,中間的不去掉,如,str.trim() ;

        ④boolean startsWith():判斷字符串是否以參數字符串開頭,如,str.startsWith("s");

        ⑤boolean endsWith():判斷字符串是否以參數字符串結尾,如,str.endsWith("s") ;

        ⑥int length():返回字符串的長度,如,str.length() ;

    5,indexOf()方法,檢索,位置是從0開始。

        ①int indexOf(String str):在給定的字符串中檢索 str,返回其第一次出現的位置,檢索不到返回-1;

        ②int indexOf(String str,int form):在給定的字符串中從form開始檢索str,返回其第一次出現的位置,檢索不到返回-1,form爲開始位置,包括form,form以前不檢索。

        查找Hello in java in world中in以後第一個i的位置

index = indexOf("in") ;                    //先查出in字符串位置
index = indexOf("i",index+in.length());    //在in以後查i,先取出in的長度,在in以後查找


        ③int lastIndexOf(String str):在給定的字符串中檢索str,返回其最後一次出現的位置,檢索不到返回-1;

            能夠看作是從右往左查找。

        ④int lastIndexOf(String str,int form):在給定的字符串中從form開始檢索str,返回其第一次出現的位置,檢索不到返回-1,form爲開始位置,包括form,form以後不檢索,由於是從右往左檢索,因此以後不檢索,只檢索form以前字符串。

    6,substring()方法,字符串的截取,下標從0開始。

        ①String substring(int start,int end);返回的字符串從start開始(包含),以end結束(不包含)。

        ②String substring(int start);返回的字符串從start開始(包含),到字符串結尾。

    7,getBytes方法(編碼):將字符串變爲相應的字節。    

        ①byte[] getByte(); byte[] arr = str.getByte() ;sop(Array.toString(arr));

    8,split方法,拆分:字符串的拆分。

String str = "123,324,3456,456,,,";
String[] array = str.split(",");
sop(Arrays.toString(array));    //---->[123,324,3456,456]

三,StringBuilder類

    與String不一樣,StringBuider封裝可變的字符串,有線程安全問題,對象建立後,能夠經過調用方法來改變其封裝的字符序列。

    StringBuilder經常使用方法:

        ①追加字符串:StringBuilder append(String str) ;

        ②插入字符串:StringBuilder insert(int index,String str);插入後,原內容日後移。

        ③刪除字符串:StringBuilder delete(int start,int end);

        ④替換字符串:StringBuilder replace(int start,int end,String str);含頭不含尾

        ⑤字符串翻轉:StringBuilder reverse() ;

StringBuilder builder = new StringBuilder() ;
    builder.append("good good study") ;
    builder.append("day day up") ;
    System.out.println(builder.toString());    //----》【"good good study day day up"】
    builder.insert(4,"!");
    builder.delete(5,6);
    builder.replace(0,3,best);
    builder.delete(7,builder.length());

        注意事項:

        1)一個類對某個字符串進行頻繁操做時,要使用StringBuilder,能夠大規模的修改字符串,而再也不開闢新的字符串,從而節約內存資源。因此,對有着大量操做字符串的邏輯中,不使用String,而使用StringBuilder。

        2)append是有返回值的,返回值類型是StringBuilder

        3)StringBuilder和StringBuffer區別:效果是同樣的。

            StringBuilder是線程不安全的,效率高,須要JDK1.5以上

            StringBuffer 是線程安全的,效率低,也可變字符串。

            在多線程操做的狀況下,應該使用StringBuffer,由於StringBuffer是線程安全的。

四,SimpleDateFormat類

    java.text.SimpleDateFormat類,日期轉換類,很方便的進行日期和字符串自建轉換。

    1)parse方法,按照特定的格式,將表明時間的字符串轉成Date對象。

    2)format方法,將日期數據按照指定格式轉成字符串。

    字符串轉成日期

SimpleDateFormat sdf = new SimpleDateFormat("yy-mm-dd") ;
String dateformat = "2016-04-11";    //建立一個日期格式的字符串
//將字符串轉成相應的日期對象Date
Date date = sdf.parse(dateformat) ;  //要捕獲異常
System.out.println(date);            //輸出date對象。

    日期轉成字符串

SimpleDateFormar sdf = new SimpleDateFormat("yy-mm-dd") ;
Date date = new Date() ;
String now = sdf.format(date) ;    //把日期對象傳進去
System.out.println(now) ;

    日期格式中,-和空格無心義,無含義的都將原樣輸出

    將當前系統時間轉爲 yy-mm-dd hh-mm-ss效果

SimpleDateFormat sdf = new SimpleDateFormat("yy-mm-dd hh-mm-ss");
date = sdf.format(now) ;
System.out.println(date) ;

        
五,包裝類

        Java語言的8種基本類型分別對應了8種包裝類,每個包裝類都封裝了一個基本數據類型的成員變量,同時,還提供了針對該數據類型的實用方法。

        1)包裝類的做用:把基本數據類型當作引用數據類型看待。

        2)包裝類的名字:除了Integer(int),Charset(char),其餘包裝類名字都是基本數據類型首字母大寫。

        3)拆、裝箱:Integer i = new Integer(1) ;   建立一個以對象形式存在的整數1,這種從基本數據類型到引用類型的轉變稱之爲「裝箱」,反之叫「拆箱」。

        4)裝箱:方式一,Double d = new Double(1.2) ;        //裝箱

                        方式二,Double d = Double.valueOf(1.2) ;   //基本類型都有valueOf()方法。

        5)拆箱:double num = d.doubleValue() ;                //拆箱

        6)包裝類使用前提:JDK 1.5

public static void say(Object obj) {
    System.out.println(obj) ;
}
    int a = 1 ;    //基本類型,不是Object子類。
    say(a) ;

        7)包裝類的使用:實例化一個對象,這個對象對應的是整數1,Integer的做用是將基本數據類型int做爲引用數據類型看待,這樣就能夠參與到面向對象設計中,所以能夠將int當作一個Object來看待,也就是Object子類。

Integer i = new Integer(a) ;    //裝箱
Integer ii = Integer.valueOf(a) ;    //裝箱另外一種操做
int num = i.intValue() ;        //拆箱
say(i) ;        //Integer是Object的子類,能夠直接調用

        8)自動裝箱

say(Integer.valueOf(a)) ;    //自動裝箱
num = i.intValue() ;         //自動拆箱
相關文章
相關標籤/搜索