1. 程式人生 > >Java基礎總結--常用類以及包的訪問權限

Java基礎總結--常用類以及包的訪問權限

long -c 有一個 system asc 拆箱 基礎 數字 字符串的查找

-----Object---所有類的根類
1.怎麽得到的:通過對所有對象不斷的向上抽取共性,具備所有對象的共性的東西
2.常用的方法
* equals(Object obj):比較兩個對象的引用是否指向同一個對象,本質就是引用地址是否相同,相同就返回true;作用和"=="一致,其子類繼承後,只判斷地址沒有意義,一般會對該方法進行重寫,重寫後比較的是對象的特有內容是否相同。也用到了多態,為了代碼的擴展性。eg字符串equals比較的就是內容。
註意一個細節:重寫後存在多態,若要訪問子類特有數據,必須進行強制轉型
* hashCode():根據哈希值-->哈希算法-->內存中的地址
如果子類沒有對其進行重寫,其實現是與系統相關的,當然也可以利用對象的特有數據重寫該方法重新定義哈希值。
一般對象相同表示兩個方面:對象的地址和對象的內容,一般對equals()重寫的時候也會對hashCode()進行重寫
*getClass():要創建一個對象,必須先有這個對象的所屬類的class文件,不同的對象存在不同的所屬字節碼文件--將這些字節碼文件進行抽取共性(名字,構造方法等),封裝成Class類
一般將類文件加載進內存的時候,會自動的將其封裝為Class類型的對象(只會加載一次),然後在根據其創建該類所屬的對象。
getClass()實際上返回的是當前對象所屬類的字節碼文件對象

-----String------常用的對象的方法必須掌握
1.是一個特殊的對象,兩種創建對象方式
2.字符串一旦初始化就不可以被改變--不可變對象
String str = "abc"; s = "bcd";表示創建兩個對象,s先指向abc實體,再指向bcd實體
註意:直接賦值字符串(存儲在字符串常量池,一旦以該方式創建字符串內容相同就指向同一個對象)
3.String str = "abc";與Sting str1 = new String("abc");區別
前者存儲在字符串常量池,可以被共享,後者存儲在堆中new一次產生一個新的對象(涉及兩個對象本質上)
str.equals(str1);true--被字符串類重寫Object類equals方法--依據是字符串內容
4.常見的操作方法
構造方法:
以空參數,字符串,字節數組,字符數組,StringBuffer引用為參數--轉化為字符串
以及將數組中部分組成字符串 offset length 開始+長度
一般方法分類:
1.獲取字符串的信息
長度length--看返回值類型 s.length()--int;
獲取特定位置的字符charAt(int index)--char 並支持ASCII範圍的int類型數字
根據字符/字符串獲取位置indexOf(char c)--int 第一次位置(重點掌握)
索引字符以及字符串 lastIndexOf(char c)
獲取子串substring()--String
2.字符串的轉換
分割字符串--返回字符串數組(按照什麽分隔字符串)split(String str)--涉及到正則表達式
(這個方法必須掌握)
字符串--轉化為字符數組toCharArray()--char[] ch
字符串--轉化為字節數組s.getBytes()
字符串中字符大小寫轉化toUpperCase()/toLowerCase()等
替代字符串中的字符/字符串 replace(char oldChar,char newChar);
去掉字符串裏面空格 trim()輸入用戶信息
字符串連接 concat()與+區別:前者專業
3.判斷
字符串判斷 equals() equalsIgnoreCase()
判斷字符串是否包含指定字符串 contains()
是否以指定字符串開始/結束 startsWith/endsWith--快速查找
4.比較(必須會)
比較字符串大小 compareTo()--int(按照從前到後比較)this.compareTo(String str)
5.字符串intern()方法--返回字符串對象的規範化表現形式
可以對字符串池進行操作;返回池中存在的對象

----StringBuffer(保證同步,線程安全)-----字符串緩沖區對象(重點)--看作一個容器
1.緩沖區就是一個容器--將數據進行臨時存儲
2.特點:長度可變;可以存儲不同類型的數據;默認容量為16B
緩沖區本質還是數組,將數組封裝,對外提供方法。
要使用緩沖區的數據必須將其轉化為字符串才能夠使用。
可以對字符串進行修改--
3.應該具備的功能
添加:append()--返回值為StringBuffer對象(將數據放進去容器,返回值就是該容器)-後邊追加數據 insert()-可以實現在任意位置的插入
刪除:容器相關的方法delete()--/remove()--
查找:類似與字符串的查找方法
修改:replace()替換 setCharAt()
增刪改查--容器的基本功能
註意:假如超過緩沖區的長度的處理:數組長度固定
******關於可變數組長度的原理*******
創建新數組長度=2倍原數組長度,在把原數組中的元素賦值過去
緩沖區存在構造方法可以指定緩沖區的大小
關於容器大小的估計--可以估計-就指定為估計的數組長度
---StringBuffer怎麽實現同步----
對於操作數據的方法進行同步處理--涉及到處理數據的方法設置為同步方法/使用同步代碼塊實現同步(這種方式比較常見)--但是假如不涉及多線程-則就是執行的非常慢

---StringBuilder(不保證同步)----與StringBuffer兼容的API
1.由於不同步,所以執行速度較快--用於單線程比較好
2.多線程使用--StringBuilder 單線程使用StringBuffer
3.jdk升級的原因:簡化書寫(通常具有局限性)-提高效率-增加安全性(書寫的麻煩)
4.數據要多-存儲起來-要是以整個字符串形式輸出就使用StringBuilder/StringBuffer
5.數組通常就可以一個一個的操作元素

---基本數據類型包裝類---
為了更好的操作基本數據類型值,把其包裝成對象形參基本數據包裝類
Integer Short Boolean Byte Long Character Float Double--final類
構造方法:value,String--轉換為數字對象
裏面定義了該類型表示範圍的常量:MAX_VALUE MIN_VALUE
常見的方法
數字格式字符串--基本數值轉換(最常用)parseInt(String s) -int(靜態方法)
可能會拋出NumberFormatException運行時異常(方法聲明異常是希望調用者處理)
Character-裏面沒有該方法(因為可以把它直接和數字操作)
intValue()--int將Integer對象轉換為int(非靜態)
valueOf(String s)-Integer
進制轉換---十進制轉化二進制、八進制、十六進制(其他進制轉十進制)--靜態方法
parseInt(String s, int radix)--int十進制
自動裝箱和自動拆箱(JDK1.5以後開始)
自動裝箱:將基本數據類型賦值給引用
自動拆箱:將包裝類對象和基本數據類型做運算

---System類---方法是靜態的
1.字段(靜態成員變量-引用)
static PrintStream err--標準錯誤輸出流
static InputStream in--標準輸入流-標準輸入設備鍵盤
static PrintStream out--標準輸出流-標準輸出設備顯示器
2.常用方法
long currentTimeMillis() 表示從1970 1.1.00.00.00到現在的毫秒數
Properties getProperties()
獲取當前系統的屬性存儲在Properties<Map 鍵值對>集合裏面
該集合Properties鍵值對都是字符串類型-最好使用其自己的方法獲取元素
stringPropertyNames()-Set<String>,再使用高級for遍歷集合並得到所有元素

---RunTime類---無構造方法getRunTime()返回本類對象-單例模式
每個Java程序都會有一個RunTime實例,使得可以與運行環境連接
註意:主要的目的是了解單例設計模式在該類的使用

---Math類---提供數學方面的應用(靜態方法)
三角函數,指數函數,絕對值,平方根
取整函數
ceil():返回大於參數的最小整數
floor():返回小於參數的最大整數
round():返回四舍五入的整數
隨機數:random()-double[0.0,1.0)

--Date類---util包裏面
1.構造方法 Date() Date(long date) 毫秒數
年份-1900,月份0-11,小時0-23,分鐘0-59
2.常用方法
直接打印date對象-打印結果就是日期+時間
毫秒值--日期對象
* 通過Date的構造方法
* 通過調用setTime(time)
將日期對象--毫秒值
* 通過調用getTime()[也可以調用getDay等方法獲得該日期的各個字段值]
對日期格式進行轉換--日期對象與字符串之間的轉換(DateFormat抽象類)
日期對象+日期格式器對象
Date-String format(data)
關於自定義日期格式如何操作:SimpleDateFormat(DateFormat的子類)
該類中有定義一定的格式,我們直接可以使用其定義的符號表示自定義格式
String-Date
Date parse(String source)--DateFormat裏面的方法

---Calendar抽象類---
主要作用:定義的一些方法用來取代Date裏面過時的方法

----訪問權限-----
1.包的好處
對類文件進行分類
給類文件提供多層的命名空間
寫在程序的第一行
類名變為:包名.類名
包也是一中擴展的形式
2.四種訪問權限的訪問範圍
範圍 public protected default private
同包同一類中 ok ok ok ok
同一包中不同類 ok ok ok
不同包中父子 ok ok
不同包中 ok

Java基礎總結--常用類以及包的訪問權限