如果不用import引用類,以后每次使用的是都都要打類的全名评姨, ? java.util.Array.
除了java.lang包里的都要引入
Object:所有類的超類(數(shù)組,字符串等引用類型)
1.equals()
? ? ? ? ?用于檢測一個(gè)對象是否等于另一個(gè)對象奶甘,在Object類中赛蔫,這個(gè)方法判斷兩個(gè)對象是否具有相同的引用 。在子類中定義equals方法時(shí)挤牛,首先調(diào)用超類equals莹痢,如果檢測失敗返回false,如果為true則需要比較子類的實(shí)例域(大多數(shù)重寫)
public boolean equals(Object otherObject){
if(墓赴!super.equals(otherObject))
{return false竞膳;}
else{Manager other==(Manager)otherObject;}
?return bonus==other.bonus诫硕;}
若兩個(gè)參數(shù)不屬于同一個(gè)類
(為了實(shí)現(xiàn)對稱性:對稱性x.equals(s)和s.equals(x)返回值相同)
(1).如果子類有自己相等概念則用getClass()坦辟,此時(shí)用到了子類的特有信息,所有要找到對象直接所屬的類
o1.getClass().equals(A.class) ? //getClass實(shí)現(xiàn)了e1.equals(e2)和e2.equals(e1)都正確的對稱性
當(dāng)比較一個(gè)雇員對象(父類)和經(jīng)理(子類對象)章办,如果雇員對象的基本信息與經(jīng)理對象的基本信息相同锉走,
當(dāng)調(diào)用雇員.equals(經(jīng)理)的時(shí)候,這時(shí)調(diào)用的是雇員里的equals方法藕届,所以比較的是雇員的信息挪蹭,這時(shí)是true,
但是調(diào)用經(jīng)理.equals(雇員)休偶,調(diào)用的是equals的方法梁厉,比較經(jīng)理的信息,這時(shí)返回true
而getClass直接找到兩個(gè)對象是否是同一對象踏兜,不是則直接返回false
注:這里指的父類就是父類引用引用父類對象词顾,對于多態(tài)沒有上述的對稱性的影響,因?yàn)槎鄳B(tài)會自動選擇子類重寫的方法
o1 instanceof A ? ?//用于檢測屬于該類或者其子類
public boolean equals(Object otherObject){
if(this==otherObject)return true碱妆;//看兩個(gè)對象是不是相等對象
if(otherObject==null)return false计技;
if(getClass!=otherObject.getClass())return false山橄; ?//同一個(gè)
Employee other=(Employee)otherObject ? ? //強(qiáng)制轉(zhuǎn)換
return salary==other.salary
}
hashcode垮媒,字符串的hashcode由它的內(nèi)容決定,其它類航棱,是由對象存儲地址決定
Equals相等睡雇,hashcode必須相等,equals重寫hashcode也必須重寫
hashcode相等饮醇,對象并不一定相等()
2.toString()
? 返回該對象的字符串表現(xiàn)形式它抱, 大多數(shù)要重寫 ? ? ? ? ?//打印對象的數(shù)據(jù),使得打印數(shù)據(jù)打印的不是地址
public String toString(){
return "類名[name="+name+",salary="+salary"]";
return getClass().getName()+"[name="+name+",salary="+salary"]";
}
如果超類使用了getClass().getName朴艰,子類調(diào)用super.toString()就行了
如果直接輸入對象名观蓄,相當(dāng)于輸入了對象.toString()
最好每一個(gè)類都重寫toString()方法
String類
不可直接修改內(nèi)容混移,只能通過當(dāng)前引用引用另一字符串進(jìn)行修改,兩個(gè)字符串相加得到的是一個(gè)新的字符串
常用方法構(gòu)造方法:?
String s=new String(char[]) 字符數(shù)組變成字符串
String s=new String(char[],offset,count) ?一部分轉(zhuǎn)換為字符串
常用方法
1.
2.截取字串
3.表判斷的方法
4.轉(zhuǎn)換
? ? ? ? ? char[] ? ? toCharArray() ?轉(zhuǎn)換為字符數(shù)組
? ? ? ? ??byte[] byt ="java".getBytes();
5.
? ? ? ? ? ? ? 1.compareTo(2) ? 兩字符串比較侮穿,若1>2,返回正數(shù)歌径,反之,返回負(fù)數(shù)
String[]split=s.split(",")根據(jù)逗號將字符串轉(zhuǎn)換為數(shù)組
StringBuilder:使用前先創(chuàng)建對象
? ? ? ? ?用來操作字符串的類亲茅,在操作字符串的時(shí)候是在原有的字符串的基礎(chǔ)之上添加的回铛,由此證明使用StringBuilder來操作字符串比String效率快
構(gòu)造方法可以將字符串轉(zhuǎn)換為StringBuilder? ? StringBuilder s=new StringBuilder(String st)
1.添加,刪除
2.修改
3.查找
4.獲取字符串
StringBuffer:和StringBuilder方法相同克锣,用于多線程茵肃,安全
小量數(shù)據(jù)用String,單線程用StringBuilder效率高袭祟,多線程用StringBuffer安全
Math
? ? ? ? 不能被創(chuàng)建對象验残,因?yàn)槠錁?gòu)造對象是私有的,其方法由于都是執(zhí)行相同的工作巾乳,與其實(shí)例無關(guān)您没,所以都被修飾為靜態(tài)的
round(double x) ? //四舍五入
random() ?返回介于0.1-1.0之間的雙精度浮點(diǎn)數(shù)
abs(參數(shù)) ?返回絕對值
cbrt(參數(shù))返回參數(shù)的立方根
min(參數(shù)1,參數(shù)2) 返回兩個(gè)參數(shù)中小的數(shù)
max(參數(shù)1想鹰,參數(shù)2) 返回兩個(gè)參數(shù)中大的數(shù)
ceil(double d)向上取整
floor(double d) 向下取整
pow(參1紊婉,參2)返回第一個(gè)參數(shù)第二個(gè)參數(shù)的值
基本類型包裝類(類似拿一個(gè)東西將基本類型包在里面)
為什么有包裝類:因?yàn)榛绢愋蜔o法參與面向?qū)ο蟮拈_發(fā)(不能調(diào)用方法)
把基本類型包裝成對象
Boolean
Character
Byte
Short
Integer
Long
Float
Double
? ? ? ? 在以前需要自己進(jìn)行包裝药版,現(xiàn)如今出現(xiàn)了autoboxing辑舷,實(shí)現(xiàn)了自動打包和自動解包的機(jī)制,也就是包裝類和基本類型可以自動轉(zhuǎn)換了(自動打包其實(shí)調(diào)用的是valueOf()方法槽片,自動解包調(diào)用的是intValue()方法)
字符串轉(zhuǎn)為Integer 可以通過構(gòu)造函數(shù)或者parseInt轉(zhuǎn)換
Random ? ? 方法 ??
nextInt()輸入int型隨機(jī)數(shù)何缓,范圍為int的范圍
nextInt(index) 輸入?yún)^(qū)int型隨機(jī)數(shù),范圍為【0还栓,index)也就是【0碌廓,index-1】
一次要想獲得0-50間的隨機(jī)數(shù),包括0和1就要使用nextInt(51)
System
? ? ? ? ? ? ? ? ? ? ? ? ? System.exit () :退出虛擬機(jī)
setIn(InputStream in) ? ? ? 設(shè)置輸入值在哪 ? ? ? ? ? ? ? ? ? ? setOut(PrintStream out) 設(shè)置輸出值在哪
System.arraycopy(src, srcPos, dest, destPos, length);
第一個(gè)是要復(fù)制的數(shù)組剩盒,第二個(gè)是從要復(fù)制的數(shù)組的第幾個(gè)開始谷婆,第三個(gè)是復(fù)制到那,四個(gè)是復(fù)制到的數(shù)組第幾個(gè)開始辽聊,最后一個(gè)是復(fù)制長度
Scanner ? ? ? ? ? ??
? //Scanner in=new Scanner(System.in) ? ?鍵盤輸入
nextInt()
nextDouble()
next() ? ? 不識別空格 ? ?hasNext() ?是否還有其它單詞
nextLine() ? 可識別空格 ??
console()用于獲取密碼
枚舉類()每一種類型必須取某些特定值
public enum 類名{
選擇1纪挎,選擇2,選擇3......
}
方法 ?(1)values 返回枚舉類數(shù)組 ?Size[] values=Size.values()
(2)toString 返回枚舉類常亮名稱 跟匆,例如 ?Size.SMALL.toString()返回 ?SMALL
(3)枚舉類 ?對象=Enum.valueOf(枚舉類.class异袄,String型)
(4)ordinal返回枚舉類常量位置,例如類名.選擇1.ordinal()返回的是1
(5)compareTo(E other).若枚舉常量出現(xiàn)在other前玛臂,返回負(fù)值烤蜕,相等返回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 類
? ? ? ? 實(shí)例有一個(gè)狀態(tài)表示特定時(shí)間點(diǎn)(時(shí)間是用距離某個(gè)特定點(diǎn)的毫秒數(shù)表示的,這個(gè)點(diǎn)是紀(jì)元):用來表示時(shí)間點(diǎn)讽营,不推薦用這個(gè)類獲取特定年月日虎忌,不能設(shè)置時(shí)間
1.日期變毫秒 ? ? Date d=new Date(); ? ? long time1=d.getTime()
2.毫秒變?nèi)掌?long ?time=2156515斑匪; ?Date d=new Date()呐籽; d.setTime(time)
GregorianCalendar子類 /Calendar抽象類:
日歷表示法(Calendar是一個(gè)抽象類,所以常用其子類)
Calendar是一個(gè)抽象類蚀瘸,所以常用其子類狡蝶,Calendar?c=Calendar.getInstance;
new GregorianCalendar() ? 用來表示對象構(gòu)造時(shí)的時(shí)間
字段:
Calendar.Year / Calendar.Month/ .DAY_OF_MONTH? /HOUR_OF_DAY ?等等
構(gòu)造方法 ? ?
new GregorianCalendar(年贮勃,月贪惹,日,時(shí)寂嘉,分奏瞬,秒) ? 構(gòu)造某個(gè)特定時(shí)間的日歷對象,
月份從0開始泉孩,11表示12月硼端,Calendar.DECEMBER也表示12月
普通方法
getActualMaximum可以獲得本月有多少天
//已知年月日,想創(chuàng)建一個(gè)包含此年月日的Date對象寓搬,必須用GregorianCalendar轉(zhuǎn)換
GregorianCalendar calendar=new GregorianCalendar(year珍昨,month,day)
Date hireDay=calendar.getTime() ?
//如果想獲得Date對象的年月日單獨(dú)的信息句喷,就要把Date對象的時(shí)間信息镣典,設(shè)置到GregorianCalendar中,然后再獲取
GregorianCalendar calendar=new GregorianCalendar()
calendar.setTime(hireDay)
int year=calendar.get(Calendar.YEAR)
SimpleDateFormat
該類是用來使日期類型與字符串類型之間相互轉(zhuǎn)換的類
構(gòu)造函數(shù):SimpleDateFormat(String?pattern) ? 用來制定轉(zhuǎn)換的規(guī)則
format可以用來格式化日期對象唾琼,按照你想要輸出的形式輸出兄春,而parse可以將字符串轉(zhuǎn)換成Date對象,之后你可以使用Date的方法