1. 程式人生 > >java基礎易錯、難理解、易混淆知識點複習

java基礎易錯、難理解、易混淆知識點複習

以下為學習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個

歡迎大家加入QQ群一起交流討論,「吟遊」程式人生——YinyouPoet