1. 程式人生 > >面向演算法程式設計的java語法精粹

面向演算法程式設計的java語法精粹

一、基本資料型別
(1) 強制型別轉換通過截斷小數部分將浮點值轉換為整型 。

double x * 9.997 ;
int nx = ( int ) x ;

這樣 , 變數 nx 的值為 9。
如果想對浮點數進行舍人運算 , 以便得到最接近的整數 ( 在很多情況下 , 這種操作更有用 ), 那就需要使用 Math類中的若干方法:

static double ceil(double a):
天花板函式,返回大於等於a的最小整數(但是以浮點數形式儲存)。

static double floor(double a):
地板函式,返回小於等於a的最大整數(但是以浮點數形式儲存)。

static double rint(double a):
四捨五入函式,返回與a的值最相近的整數(但是以浮點數形式儲存)。    

static long round(double a):
四捨五入函式,返回與a的值最相近的長整型數。

static int round(float a):
四捨五入函式,返回與a的值最相近的整型數。

(2)字元判斷:

java.lang.Character裡有相應的判斷方法
char c = 'a';
isDigit(c):判斷字元是否數字
isLetter(c):判斷字元是否字母 
isLetterOrDigit(c):判斷字元是否字母或數字
isLowerCase(c):判斷字元是否小寫字母
isUpperCase(c):判斷字元是否大寫字母
isWhitespace(c):判斷字元是否空格

二、字串自身重要操作合集(java . lang . string)
(1)子串提取:

String substring ( int beginlndex )
String substring ( int beginlndex , int endlndex )
返回一個新字串。 這個字串包含原始字串中從beginlndex 到串尾或 endlndex - 1的所有程式碼單元。

(2)判等:一定不要使用 = 運算子檢測兩個字串是否相等 ! 這個運算子只能夠確定兩個字串是否放置在同一個位置上 。 當然 , 如果字串放置在同一個位置上 , 它們必然相等。 但是 ,完全有可能將內容相同的多個字串的拷貝放置在不同的位置上。
可以使用 equals 方法檢測兩個字串是否相等 。 對於表示式 :

s . equals ( t )

如果字串 s 與字串 t 相等 , 則返回 true ; 否則 , 返回 false。 需要注意 , s 與 t可以是字串變數 , 也可以是字串字面量 。 例如 , 下列表達式是合法的 :

" Hello " . equals ( greeting )

要想檢測兩個字串是否相等, 而不區分大小寫 , 可以使用 equalsIgnoreCase()方法。

" Hello " . equalsIgnoreCase ( " hello " )

(3)碼點(值),與程式碼單元(char字元)

char charAt ( int index )
返回給定位置的程式碼單元。 除非對底層的程式碼單元感興趣 ,否則不需要呼叫這個方法。
int codePointAt ( int Index ) 5.0
返回從給定位置開始的碼點。

(4)字串比較

int compareTo ( String other )
按照字典順序, 如果字串位於 other 之前 , 返回一個負數 ; 如果字串位於other 之後, 返回一個正數 ; 如果兩個字串相等 , 返回0。

(5)字串判等:

boolean equals ( 0 bject other )
如果字串與 other 相等 , 返回 true。
boolean equalsIgnoreCase ( String other )
如果字串與 other 相等 ( 忽略大小寫 ), 返回 true 。

(6)子串開頭結尾判斷:

boolean startsWith ( String prefix )
boolean endsWith ( String suffix )
如果字串以 suffix 開頭或結尾 , 則返回 true。

(7)子串查詢:

int indexOf ( String str )
int indexOf ( String str , int fromlndex )
int indexOf ( int cp )
int indexOf ( int cp , int fromlndex )
返回與字串 str 或程式碼點 cp 匹配的第一個子串的開始位置。 這個位置從索引0 或fromlndex 開始計算 。 如果在原始串中不存在 str , 返回 - 1。
int lastIndexOf ( String str )
Int lastIndexOf ( Stri ng str , int fromlndex )
int lastindexOf ( int cp )
int lastindexOf ( int cp , int fromlndex )
返回與字串 str 或程式碼點 cp 匹配的最後一個子串的開始位置 。 這個位置從原始串尾端或 fromlndex 開始計算。

(8)、字串大小寫轉換:

String toLowerCase ( )
String toUpperCase ( )
返回一個新字串 。 這個字串將原始字串中的大寫字母改為小寫 , 或者將原始字串中的所有小寫字母改成了大寫字母。

三、字串拼接操作集合(java.lang.StringBuilder)
(1)結尾追加字串或字元

StringBuilder append ( String str )
追加一個字串並返回 this。
StringBuilder append ( char c )
追加一個程式碼單元並返回 this。

(2)修改單個字元

void setCharAt ( int i , char c )
將第 i 個程式碼單元設定為 c。

(3)中間插入字串或字元

StringBuilder insert ( int offset , String str )
在 offset 位置插入一個字串並返回 this。
StringBuilder insert ( int offset , Char c )
在 offset 位置插入一個程式碼單元並返回 this。

(4)刪除子串

StringBuilder delete ( int startindex , int endlndex )
刪除偏移量從 startindex 到 - endlndex - 1 的程式碼單元並返回 this。

(5)構造器與String轉換

String toString ( )
返回一個與構建器或緩衝器內容相同的字串

四、標準輸入輸出:

API java . util . Scanner 5.0

•Scanner ( InputStream in )
用給定的輸人流建立一個 Scanner 物件。
•String nextLine ( )
讀取輸入的下一行內容。
•String next ( )
讀取輸入的下一個單詞 ( 以空格作為分隔符 )。
•int nextlnt ( )
•double nextDouble ( )
讀取並轉換下一個表示整數或浮點數的字元序列 。
•boolean hasNext ( )
檢測輸人中是否還有其他單詞。
•boolean hasNextInt ( )
•boolean hasNextDouble ( )
檢測是否還有表示整數或浮點數的下一個字元序列 。

重點強調nextLine()就是c++中的gets(),遇到回車就停止,並且會帶走緩衝區的回車。當語句之前有nextInt()等以空格和回車為終止的標準輸入時,這些標準輸入並不會帶走緩衝區等回車,會使下一行的輸入無法被nextLine()讀取。

五、陣列操作(java . util . Arrays)
(1)阿里強制性程式碼風格:

 int[] arrayDemo;

(2)陣列拷貝:

static type copyOf ( type [] a , int length ) 6
static type copyOfRange ( type [] a , int start , int end ) 6

返回與 a 型別相同的一個數組 , 其長度為 length 或者 end - start , 陣列元素為 a 的值。
引數 :
a 型別為 int 、 long 、 short 、 char 、 byte、 boolean 、 float或 double 的陣列。
start 起始下標 ( 包含這個值 )。
end 終止下標 ( 不包含這個值 )。 這個值可能大於a . length。 在這種情況下 , 結果為 0 或 false。
length 拷貝的資料元素長度 c 如果 length 值大於 a . length , 結果為 0 或 false ;否則 ,陣列中只有前面 length 個數據元素的拷貝值。
(3)陣列排序:

static void sort ( type [ 2 ] )

採用優化的快速排序演算法對陣列進行排序 。
引數 : a 型別為 int 、 long 、 short 、 char 、 byte 、 boolean、 float或 double 的陣列。
(4)二分查詢:
static int binarySearch ( type [ ] a , type v )
•static int binarySearch ( type [ ] a , int start , int end , type v ) 6
採用二分搜尋演算法查詢值 v。 如果查詢成功 ,則返回相應的下標值 ; 否則 , 返回一個負數值 r。 - r - 1是為保持 a 有序 v 應插入的位置。
引數 :
a 型別為 int 、 long 、 short 、 char 、 byte 、 boolean 、 float 或 double 的有序陣列。
start 起始下標 ( 包含這個值 )。
end 終止下標 ( 不包含這個值 )。
(5)陣列快速賦相同值:

static void fill ( type [] a , type v )

將陣列的所有資料元素值設定為 V。
引數 :
a 型別為 int 、 long 、 short 、 char 、 byte 、 boolean 、 float 或 double 的陣列。
v 與 a 資料元素型別相同的一個值。