如果不用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的方法