以下為學習java基礎文法與原理過程中發現的一些與以往感覺不同、或者是不熟悉的地方,特此列出。隻是提綱是以不是很詳細,有些地方為了通俗易懂可能不是很嚴謹,盡請指正與補充。
1、 java指令行編譯與運作:
javac Welcome.java -> java Welcome

2、 棧:形參、局部變量存在棧中,進入子程式配置設定,退出子程式釋放
3、 堆:用new語句建立的記憶體在堆中,退出子程式時不釋放
4、 Double類型變量比較大小,使用:
Double.doubleToLongBits(參1) == Double.doubleToLongBits(參2)
5、 /* /用于注釋一行或多行,此間注釋可被javadoc轉換成文檔。文檔中如果是private類型的字段不會出現。
格式 ->
Javadoc Person.java
/**
* This constructor initializes attributes name and age.
* @param n The Person's name, in first name - middle initial - last name order.
* @param a The Person's age.
*/
public Person(String n, int a) {
name = n;
age = a;
}
6、
Float f = 1.4
是錯的,應寫成
float f = 1.4f
7、
^
為異或
8、 在字元串提取單個字元:
string.charAt(index)
9、
toLowerCase(),toUpperCase()
10、
public String substring(int beginIndex, int endIndex)
第一個int為開始的索引,對應String數字中的開始位置,
第二個是截止的索引位置,對應String中的結束位置
11、
string.indexOf()
傳回字元串中一個字元或子串
int indexOf(String str)
:傳回第一次出現的指定子字元串在此字元串中的索引。
int indexOf(String str, int startIndex)
:從指定的索引處開始,傳回第一次出現的指定子字元串在此字元串中的索引。
int lastIndexOf(String str)
:傳回在此字元串中最右邊出現的指定子字元串的索引。
int lastIndexOf(String str, int startIndex)
:從指定的索引處開始向後搜尋,傳回在此字元串中最後一次出現的指定子字元串的索引。
12、 被重載的方法必須具有不同的參數清單,不能基于不同的修飾符或傳回值類型。
13、 數組:
double[] mylist
或者
double mylist[]
但不推薦,但此時隻是一個引用
Mylist = new double[10];
或者
double[] list = {1.2,2.8}
14、 數組的複制:不能使用list1 = list2 ,可以用循環實作,或者是用arraycopy
15、
System.arraycopy(list1,0,list2,0,list1.length)
16、
Java.util.Arrays.sort(list1)
17、 二維數組中每一行本身就是一個數組,是以各行長度可不同。
18、 Java包名每個字母小寫
19、
Scanner input = new Scanner(System.in)
Double radius = input.nextDouble();
20、 String類型變量存在堆中而非棧中
21、 Java類中成員變量自動賦初值,卻沒有給方法中局部變量賦初值。
22、 Java自動回收機制:在應用程式記憶體不足或者JVM閑置的時候
23、 Java手動回收機制:x=null即可
24、
25、 靜态變量存放在靜态區中,其空間在第一次出現該類名時配置設定
26、 資料域封裝:即将屬性設定為private并設定get、set方法
27、 因為字元串在程式設計中是不可變的,但同時又會頻繁使用,是以java虛拟機為了提高效率并節約記憶體,對具有相同字元序列的字元串直接量使用同一個執行個體,這樣的執行個體稱為限定的字元串。但是使用new出來的相同内容的字元串會開辟新的空間。
28、 一個字元串的内容是不能改變的,但是使用replace,replaceFirst,replaceAll方法會傳回一個源自原始字元串的新字元串(并未改變原字元串)。
例如:
s.replace(‘e’,’A’); //将s中所有e換成A
s.replaceFirst(“e”,“AB”) //将s中第一個e換成AB
29、 判斷是不是某類型,使用
instanceOf
30、 Java中一個對象變成垃圾後會調用
finalize()
方法,相當于析構函數
31、
Clone()
隻能完成淺拷貝
32、 自帶的
toString()
會傳回
執行個體名@位址
33、 GetClass() 傳回java.lang.class的一個執行個體,包含這個對象的類的資訊
34、 類的初始化塊:在類中,卻不在任何方法裡面,加上
{
Xxxxx;
}
會被自動加入到所有構造函數之前執行,而如果用static修飾,則會在類生成之前建立
Java正規表達式
寫法:
字元串.match(正則字元串)
“java”.matchers(“ja”)
Boolean b = Pattern.matches(正則字元串,被比對的字元串)
擷取比對到的值:
String pattern = “(\\D*)”
Pattern r = Pattern.compile(pattern)
Matcher m = r.matcher(“This is a good day”)
比對到的使用
m.group(index)擷取
同時,字元串中replaceAll,replace,split方法均可使用正則。
“Java Java”.replaceAll(“v\\w”,’wi’) //Jawi Jawi
“Java1Html2Perl”.split(“\d”) //Java,Html,Perl
“Java1Html2Perl”.split(“\d”,1) //Java1Html2Perl
Split的第二個參數,如果<=0,就全部切割,否則切割n-1個