第三部分 常用類

如果不用import引用類,以后每次使用的是都都要打類的全名, ? java.util.Array.

除了java.lang包里的都要引入


Object:所有類的超類(數組,字符串等引用類型)

1.equals()

? ? ? ? ?用于檢測一個對象是否等于另一個對象,在Object類中,這個方法判斷兩個對象是否具有相同的引用 。在子類中定義equals方法時,首先調用超類equals,如果檢測失敗返回false,如果為true則需要比較子類的實例域(大多數重寫)

public boolean equals(Object otherObject){

if(!super.equals(otherObject))

{return false;}

else{Manager other==(Manager)otherObject;}

?return bonus==other.bonus;}

若兩個參數不屬于同一個類

(為了實現對稱性:對稱性x.equals(s)和s.equals(x)返回值相同)


(1).如果子類有自己相等概念則用getClass(),此時用到了子類的特有信息,所有要找到對象直接所屬的類

o1.getClass().equals(A.class) ? //getClass實現了e1.equals(e2)和e2.equals(e1)都正確的對稱性

當比較一個雇員對象(父類)和經理(子類對象),如果雇員對象的基本信息與經理對象的基本信息相同,

當調用雇員.equals(經理)的時候,這時調用的是雇員里的equals方法,所以比較的是雇員的信息,這時是true,

但是調用經理.equals(雇員),調用的是equals的方法,比較經理的信息,這時返回true

而getClass直接找到兩個對象是否是同一對象,不是則直接返回false

注:這里指的父類就是父類引用引用父類對象,對于多態沒有上述的對稱性的影響,因為多態會自動選擇子類重寫的方法

o1 instanceof A ? ?//用于檢測屬于該類或者其子類

public boolean equals(Object otherObject){

if(this==otherObject)return true;//看兩個對象是不是相等對象

if(otherObject==null)return false;

if(getClass!=otherObject.getClass())return false; ?//同一個

Employee other=(Employee)otherObject ? ? //強制轉換

return salary==other.salary

}

hashcode,字符串的hashcode由它的內容決定,其它類,是由對象存儲地址決定

Equals相等,hashcode必須相等,equals重寫hashcode也必須重寫

hashcode相等,對象并不一定相等()


2.toString()

? 返回該對象的字符串表現形式, 大多數要重寫 ? ? ? ? ?//打印對象的數據,使得打印數據打印的不是地址

public String toString(){

return "類名[name="+name+",salary="+salary"]";

return getClass().getName()+"[name="+name+",salary="+salary"]";

}

如果超類使用了getClass().getName,子類調用super.toString()就行了

如果直接輸入對象名,相當于輸入了對象.toString()

最好每一個類都重寫toString()方法


String類

不可直接修改內容,只能通過當前引用引用另一字符串進行修改,兩個字符串相加得到的是一個新的字符串

常用方法構造方法:?

String s=new String(char[]) 字符數組變成字符串

String s=new String(char[],offset,count) ?一部分轉換為字符串

常用方法

1.

2.截取字串

3.表判斷的方法

4.轉換

? ? ? ? ? char[] ? ? toCharArray() ?轉換為字符數組

? ? ? ? ??byte[] byt ="java".getBytes();

5.

? ? ? ? ? ? ? 1.compareTo(2) ? 兩字符串比較,若1>2,返回正數,反之,返回負數

String[]split=s.split(",")根據逗號將字符串轉換為數組



StringBuilder:使用前先創建對象

? ? ? ? ?用來操作字符串的類,在操作字符串的時候是在原有的字符串的基礎之上添加的,由此證明使用StringBuilder來操作字符串比String效率快

構造方法可以將字符串轉換為StringBuilder? ? StringBuilder s=new StringBuilder(String st)

1.添加,刪除

2.修改


3.查找

4.獲取字符串


StringBuffer:和StringBuilder方法相同,用于多線程,安全


小量數據用String,單線程用StringBuilder效率高,多線程用StringBuffer安全


Math

? ? ? ? 不能被創建對象,因為其構造對象是私有的,其方法由于都是執行相同的工作,與其實例無關,所以都被修飾為靜態的

round(double x) ? //四舍五入

random() ?返回介于0.1-1.0之間的雙精度浮點數

abs(參數) ?返回絕對值

cbrt(參數)返回參數的立方根

min(參數1,參數2) 返回兩個參數中小的數

max(參數1,參數2) 返回兩個參數中大的數

ceil(double d)向上取整

floor(double d) 向下取整

pow(參1,參2)返回第一個參數第二個參數的值


基本類型包裝類(類似拿一個東西將基本類型包在里面)

為什么有包裝類:因為基本類型無法參與面向對象的開發(不能調用方法)

把基本類型包裝成對象

Boolean

Character

Byte

Short

Integer

Long

Float

Double

? ? ? ? 在以前需要自己進行包裝,現如今出現了autoboxing,實現了自動打包和自動解包的機制,也就是包裝類和基本類型可以自動轉換了(自動打包其實調用的是valueOf()方法,自動解包調用的是intValue()方法)


字符串轉為Integer 可以通過構造函數或者parseInt轉換


Random ? ? 方法 ??

nextInt()輸入int型隨機數,范圍為int的范圍

nextInt(index) 輸入區int型隨機數,范圍為【0,index)也就是【0,index-1】

一次要想獲得0-50間的隨機數,包括0和1就要使用nextInt(51)


System


? ? ? ? ? ? ? ? ? ? ? ? ? System.exit () :退出虛擬機

setIn(InputStream in) ? ? ? 設置輸入值在哪 ? ? ? ? ? ? ? ? ? ? setOut(PrintStream out) 設置輸出值在哪

System.arraycopy(src, srcPos, dest, destPos, length);

第一個是要復制的數組,第二個是從要復制的數組的第幾個開始,第三個是復制到那,四個是復制到的數組第幾個開始,最后一個是復制長度



Scanner ? ? ? ? ? ??

? //Scanner in=new Scanner(System.in) ? ?鍵盤輸入

nextInt()

nextDouble()

next() ? ? 不識別空格 ? ?hasNext() ?是否還有其它單詞

nextLine() ? 可識別空格 ??

console()用于獲取密碼


枚舉類()每一種類型必須取某些特定值

public enum 類名{

選擇1,選擇2,選擇3......

}

方法 ?(1)values 返回枚舉類數組 ?Size[] values=Size.values()

(2)toString 返回枚舉類常亮名稱 ,例如 ?Size.SMALL.toString()返回 ?SMALL

(3)枚舉類 ?對象=Enum.valueOf(枚舉類.class,String型)

(4)ordinal返回枚舉類常量位置,例如類名.選擇1.ordinal()返回的是1

(5)compareTo(E other).若枚舉常量出現在other前,返回負值,相等返回0,否則返回正值

{

public static void main(String[] args)

{Size size=Enum.valueOf(Size.class,"SMALL");

System.out.println(size);

System.out.println(size.getAbbreviation());

}

}

enum Size{

SMALL("S"),LARGE("L"); ? ? ? //

private Size(String abbreviation){

this.abbreviation=abbreviation;}

public String getAbbreviation(){return abbreviation;}

private String abbreviation;

}


Date 類

? ? ? ? 實例有一個狀態表示特定時間點(時間是用距離某個特定點的毫秒數表示的,這個點是紀元):用來表示時間點,不推薦用這個類獲取特定年月日,不能設置時間

1.日期變毫秒 ? ? Date d=new Date(); ? ? long time1=d.getTime()

2.毫秒變日期 long ?time=2156515; ?Date d=new Date(); d.setTime(time)



GregorianCalendar子類 /Calendar抽象類

日歷表示法(Calendar是一個抽象類,所以常用其子類

Calendar是一個抽象類,所以常用其子類,Calendar?c=Calendar.getInstance;

new GregorianCalendar() ? 用來表示對象構造時的時間

字段:

Calendar.Year / Calendar.Month/ .DAY_OF_MONTH? /HOUR_OF_DAY ?等等

構造方法 ? ?

new GregorianCalendar(年,月,日,時,分,秒) ? 構造某個特定時間的日歷對象,

月份從0開始,11表示12月,Calendar.DECEMBER也表示12月

普通方法


getActualMaximum可以獲得本月有多少天

//已知年月日,想創建一個包含此年月日的Date對象,必須用GregorianCalendar轉換

GregorianCalendar calendar=new GregorianCalendar(year,month,day)

Date hireDay=calendar.getTime() ?


//如果想獲得Date對象的年月日單獨的信息,就要把Date對象的時間信息,設置到GregorianCalendar中,然后再獲取

GregorianCalendar calendar=new GregorianCalendar()

calendar.setTime(hireDay)

int year=calendar.get(Calendar.YEAR)


SimpleDateFormat

該類是用來使日期類型與字符串類型之間相互轉換的類

構造函數:SimpleDateFormat(String?pattern) ? 用來制定轉換的規則


format可以用來格式化日期對象,按照你想要輸出的形式輸出,而parse可以將字符串轉換成Date對象,之后你可以使用Date的方法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 第05天API 今日內容介紹 ·Object類& System類 ·日期相關類 ·包裝類&正則表達式 ·Date對...
    chcvn閱讀 427評論 0 1
  • 轉自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,604評論 3 93
  • 下面的內容是對網上原有的Java面試題集及答案進行了全面修訂之后給出的負責任的題目和答案,原來的題目中有很多重復題...
    獨念白閱讀 1,386評論 0 3
  • 總覺得還會再見 13歲那年。 六年級。 對于畢業這個詞兒,懵懵懂懂。 知道畢業意味著分離,但也沒有太傷感。 13歲...
    脆琳咯吱脆閱讀 215評論 0 0