java不允許重載操作符
初始化和清理
finalize()方法:
在一個對象生命結束之前會調用這個函數,可以用來檢查一些操作,如是否滿足終結條件,盡量别用
字元串
string對象是不可變的,可以加任意多引用
字元串相加的時候内部調用了stringbuilder stringbuilder内部有一個append函數來實作
StringBuilder res=new StringBuilder("[");
for(int i=0;i<25;i++){
res.append(rand.nextInt(100));
res.append("]");
}
eturn res.toString()
對一個對象直接輸出this,會調用他的tostring函數,要輸出這個對象所在的位址的話需要使用Object.toString;也就是需要調用super.toString
String對象的一些基本方法
格式化的輸出
printf()
System.out.printf("saew [%d %f]ds ",x,y)
format():可以用于PrintStream和PrintWriter對象
System.out.format("saew [%d %f]ds ",x,y)
println()
System.out.println("saew ["+x+y+ "]ds ")
Formatter類
可以看做是一個翻譯器,将格式化字元串和資料翻譯成需要的結果,建立Formatter對象的時候,需要向其構造其船體一些資訊,告訴他最終的結果将向哪裡輸出
Formatter f=new Formatter(System.out);
Formatter轉換
%h對于小數依然可以輸出一個十六進制碼
格式化說明符
%[argument_index$][flags][width][.precision]conversion
預設情況下資料是右對齊,可以通過“-”來改變對其方向
width指出域的最小尺寸,presion指明最大尺寸,presion用在String的時候表示的是列印出的String輸出字元的最大數量,浮點數的時候表示小數位數(預設6位)
小題
格式化字元可以拆分開:
int a =3; printf("%"+a+“d”,value);
String.format()函數:格式化生成String對象
正規表達式
java中的反斜線處理和其他語言中的正規表達式不一樣,對于\,其他語言中表達的是一個普通的\,但是對于java中他表示的是正規表達式的\,也就是說,在java中表示一個普通的反斜線,應該要寫\\,不過對于換行和制表符隻需要使用單反斜線:\n,\t
要表示一個或者多個之前的表達式,需要使用+:例子:-?\d+ (-?表示可能有-号)
正規表達式的使用
最簡單途徑,使用Strign類内建的功能,matches函數 :"-1234".matched("-?\d+") (return true)
非常有用的自帶正規表達式工具–split()方法:将字元串從正規表達式比對的地方切開
split切割會把分割的标志去掉,比如\W分割,會按照非字元對String進行分割,在分割的時候會把這個非字元也給去除掉
split函數還有一個重載的版本,允許限制字元串分割的次數
字元串替換,替換第一個比對的子串或者替換所有能夠比對的地方 replaceFirst(),replaceAll()
部分常用的表達式 可以參考jdk中 java.util.regex.Pattern
Pattern和Matcher
需要導入java.util.regex包,用static Pattern.Compile()方法來編譯正規表達式,他會根據輸入的String類型的正規表達式生成一個Pattern對象,之後可以調用他的matcher()方法,生成一個Matcher對象,用replaceall()對所有的比對進行替換
這個類的split方法
String[] pattern.compile("!!").split(input,int num); do the first num
替換操作
replaceall();replacefirst();
appendReplacement(String Buffer sbuf,String replacement) 漸進式替換
appendtail(stringbuffer sbuf)在執行了一次或者多次appendreplacement之後用這個方法把輸入字元串餘下的部分複制到sbuf中
matcher對象reset操作,将原來的matcher對象應用于一個新的字元序列
讀入資料
input.readline();需要用split進行分解
Scanner類
可以通過useDelimiter()函數來設定定界符
類型資訊
多派生中擷取某一個特定的類
使用Class.forName()方法建立一個對象的引用的時候會自動初始化這個class對象
使用.class來建立對象的引用的時候 不會自動初始化該Class對象
他的初始化是在對靜态方法(構造器隐式是靜态的)或者是非常數靜态域進行首次引用的時候才初始化
static final 是一個編譯器的常量 這個值不需要對類進行初始化就可以被讀取到,但是如果隻是其中之一的修飾,那麼就不足以確定這種行為
數組
數組的複制函數System.arrycopy(源數組,開始位置,目的數組,開始位置,複制的元素個數) 他的比較是基于内容的
另外Arrays類下面還有一些比較實用的方法:sort,fill(可以設定填充的位置,但是隻能夠填充一個值),equals(判斷兩個數組是否相等),binarySearch(有序數組中對目标元素的查找) 傳回第一個大于查找對象的元素在數組中的位置
自定義的類要實作排序功能的話需要實作comparable接口,實作compareTo方法,
java容器
List
ArrayList:長于随機通路元素,但是在list的中間插入和移動元素是比較慢
LinkedList:較低代價進行插入和删除,随機通路能力較差,特性集比ArrayList大
Linkedlist添加了可以讓他用作棧,隊列或者雙端隊列的方法
fetFirst和element():傳回清單第一個元素并且不移除他,如果是空,就抛出Nosuchelementexception 對比:peek()在空的時候傳回的是null;
removefirst和remove 删除并傳回清單的頭 空的時候傳回異常,poll函數在空的時候回傳回null
addFirst,add(),addLast :如函數名
removeLast 移除最後一個元素
Stack
可以直接用泛型類内部套LinkedList來進行實作,
直接用java.util.Stack
Set
TreeSet 将元素存儲在紅黑樹資料結構中
HashSet
LinkedHashSet 是用了連結清單來維護元素的插入順序
如果要對結果進行排序,一種方式就是使用treeset來代替hashset
SortedSet<Integer> intset=new TreeSet<nteger>()
Queue
LinkedList提供了方法支援隊列的行為,實作了queue接口,是以linkedlist可以用作queue的一種實作,可以像linkedList向上轉型為queue
Queue =new LinkedList()
offer()添加元素 peek,element不移除傳回隊頭 poll和remove移除并傳回隊頭
PriorityQueue 優先隊列
Map
使用
Map<Integer,Integer> m=new HashMap<Integer,Integer>()
put,get方法
containsKey(),containsValue()方法 kesSet(),values()
疊代器Iterator
ListIterator是一個更強大的Iterator的子類型,可以用作各類List的通路他,可以雙向移動
可以用listIterator()建立一個指向list開始處的疊代器,也可以用listIterator(n)來建立一個指向清單索引為n的元素處的ListIterator
hasPrevious函數,it.previous通路像一個
I/O系統
File類
目錄清單器
File path=new File(".");list=path.list()傳回清單; or list=path.list(new FilenameFilter()) 參數為實作了這個接口的一個類,對檔案進行過濾
輸入輸出
inputstream 用來表示從不同資料源(自解數組,string對象,檔案,pipe,一個由其他是種類的流組成的序列,其他的資料源,如internet連接配接等)産生輸入的類
從檔案進行讀入
多線程程式設計
線程驅動任務
一種描述任務的方式,可以用Runnable接口來提供。要定義任務就要實作Runnable接口并編寫run()方法,使得這個任務可以執行你的指令
線程的協調
wait,notify,notifyAll
數字和日期:
數字的解析
Integer.parseInt(String) Float.parseFloat(String)
數字的格式化
java.text.NumberFormat(這個是一個抽象類)
java.text.DecimalFormat(具體實作,使用的時候不能直接new,需要調用NumberFormat的靜态方法getInsance傳回)
| 例子:NumberFormat nf=NumberFormat. getInstance(Locale.US)
| print(nf.format(123456))
集合
對象的比較和排序
java. lang. Comparable / Java. lang. Comparator接口
arrays. sort和服務對象之間有協定(comparable接口),是以對象需要實作這個接口的compareTo函數
arrays. sort(arr,實作了conpareto接口的類) ,或者arr中元素實作了comparable接口
properties類
主要用于讀取java的配置檔案