天天看點

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

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

1、 java指令行編譯與運作:​

​javac Welcome.java -> java Welcome​

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

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、 二維數組中每一行本身就是一個數組,是以各行長度可不同。

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

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、

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

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個