天天看點

[個人筆記] Javajava不允許重載操作符初始化和清理字元串類型資訊數組java容器I/O系統多線程程式設計數字和日期:集合properties類

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對象的一些基本方法

[個人筆記] Javajava不允許重載操作符初始化和清理字元串類型資訊數組java容器I/O系統多線程程式設計數字和日期:集合properties類

格式化的輸出

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轉換

[個人筆記] Javajava不允許重載操作符初始化和清理字元串類型資訊數組java容器I/O系統多線程程式設計數字和日期:集合properties類
%h對于小數依然可以輸出一個十六進制碼
           

格式化說明符

%[argument_index$][flags][width][.precision]conversion
           

預設情況下資料是右對齊,可以通過“-”來改變對其方向

width指出域的最小尺寸,presion指明最大尺寸,presion用在String的時候表示的是列印出的String輸出字元的最大數量,浮點數的時候表示小數位數(預設6位)

小題

[個人筆記] Javajava不允許重載操作符初始化和清理字元串類型資訊數組java容器I/O系統多線程程式設計數字和日期:集合properties類

格式化字元可以拆分開:

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

[個人筆記] Javajava不允許重載操作符初始化和清理字元串類型資訊數組java容器I/O系統多線程程式設計數字和日期:集合properties類

Pattern和Matcher

需要導入java.util.regex包,用static Pattern.Compile()方法來編譯正規表達式,他會根據輸入的String類型的正規表達式生成一個Pattern對象,之後可以調用他的matcher()方法,生成一個Matcher對象,用replaceall()對所有的比對進行替換

[個人筆記] Javajava不允許重載操作符初始化和清理字元串類型資訊數組java容器I/O系統多線程程式設計數字和日期:集合properties類

這個類的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類

[個人筆記] Javajava不允許重載操作符初始化和清理字元串類型資訊數組java容器I/O系統多線程程式設計數字和日期:集合properties類

可以通過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連接配接等)産生輸入的類

從檔案進行讀入

[個人筆記] Javajava不允許重載操作符初始化和清理字元串類型資訊數組java容器I/O系統多線程程式設計數字和日期:集合properties類

多線程程式設計

線程驅動任務

一種描述任務的方式,可以用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的配置檔案