寫在前面:期末考試要來了,對於一個暑假自學了幾天JAVA以後一個學期划水的人來講如今就是踏上了JAVA預習之路。下面是本身xjb記的東西,主要是根據老師給的流程圖總結的本身認爲須要的一些零碎的小知識,翻書跟看網課看到哪就寫到哪。好吧期末預習開始~但願考個好成績回家開開心心過年!!!java
好的我開始了從零到考試的短暫JAVA學習之路......數組
1.構造方法是不可以繼承的。ide
因此子類要重載父類的構造方法,但可在其中用super調用父類的構造方法.構造方法只能用類名寫,而且沒有返回類型。若是子類沒有定義構造方法那麼默認它的構造方法爲super(),即父類的不帶參數的構造方法函數
2.已經重載了構造方法以後再在它後面定義一個空的構造方法那這個構造方法就不是默認構造方法了學習
3.類前面要不是寫private要不是就是默認的。默認的表示同包可訪問,private表示不一樣包也能訪問this
4.非訪問修飾符:static final abstract
5.用static修飾以後其實跟這個類的對象無關了,所以能夠不用對象名稱而是直接使用類名在訪問static方法或者變量。注意:static方法中,不能訪問實例變量,也不能使用super或者this6.final類不能被繼承,final方法不能被覆蓋,final字段是隻讀的,若是是final static a則a的默認值爲0可是若是隻是final a則a沒有默認值,只能且僅能給a賦值一次spa
6.哦莫這裏掉了一條.......那就算了吧Hhhhhh對象
7.接口的全部方法都是public abstract型的
8.接口的實現:類名+implements+接口名,而後裏面實現具體的接口方法時必定要在原方法名前面加上public
9.枚舉:enum Light={Red,Green,Yellow};
Light light=Light.Red;
switch(light){ case Red: .......break;};
10.接口裏也能夠有static方法,這個方法就再也不是abstract類型的了,而是直接在定義方法的時候就實現它,而後稱這樣的方法叫作默認方法。子類在implements時不須要再實現它了
11.源文件的名字必須與public類的類同名
12.局部變量不能被訪問控制符及static修飾,由於這些其實都是跟類有關的修飾符,但它能夠被final修飾成只讀的變量
13.JAVA的特色:封裝繼承和多態
14.instanceof方法:對象名+instanceof+類名判斷是否是這種類型,或者這種類型的子類。返回結果是boolean值
15.外部類只能用public或者默認
16.內部類用static的話就跟外部類實際上是沒什麼差異了
17.方法中的內部類:叫作局部類。它能夠訪問其外部類的成員,不可以訪問該方法的局部變量,除非是final型的局部變量
18.匿名類:沒有類名,直接用其父類或接口的名字。在定義類的同時就生成了對象。所以可當作是「一次性使用」的類。匿名類直接使用父類的構造方法,有做爲方法的參數等用途
19.Lambda表達式:()->結果 實際上就是匿名類的一個實例
能寫成Lambda的接口要求包含且只包含一個抽象方法,即函數式接口繼承
經過Lambda表達式接口Converter<F,T>,它是一個泛型接口。convert()方法功能可用於將類型F值轉換成類型T值:接口
@FuctionalInterface
interface Converter<F,T>{
T convert(F from);
}
用Lambda表達式建立接口對象,並使用它的convert()方法將一個字符串轉換爲整數:
Converter<String,Integer> converter=(from)->Integer.valueOF(from);
Integer converted=converter.convert("2345");
System.out.println(converted);
20.枚舉實際上是一種特殊的class類型,是語法糖
21.exception:異常
finally:寫在最後,無論有沒有異常拋出,都要執行的一條語句。
try{
語句組;
}catch(異常類名,異常形式參數名){
異常處理語句組;
}finally{
異常處理語句組;
}
catch語句能夠0至多個,能夠沒有finally語句
finally語句必須執行,就算前面有return break
22.子類異常要放在父類異常前面
23.Object終極父類裏面有
clone()方法:要繼承Cloneable接口,在類裏面用clone()方法,例如:
Car A=(Car)B.clone();
clone()方法返回的是Object型因此要強制轉換。
clone()方法在main函數裏拋出異常是CloneNotSupportedException
24.日期-時間的類在java.time包中
本地日期:LocalDate
25.compareTo()方法:
<變量1>.compareTo<變量2>返回的值是變量1比變量2的字典順序,前大後小
26.
public class DescSort implements Comparator<String>{
Arrays.sort(ss,new DescSort());
27.toString()方法能夠被改寫,可是返回的類型得是String型的!!!
28.Queue接口和PriorityQueue類:後者是前者的一個實現類,它實現的是一種優先隊列,優先隊列中元素的順序是根據元素的值排列的Queue接口中有幾個方法:add()和offer()都是能夠向隊列中插入一個元素,前者會有異常拋出的狀況,後者是返回false
remove()和poll()都是刪除並返回隊頭元素,即邊刪邊返回值,隊空的時候前者會
有異常拋出,後者則是返回null
element()和peek()都是返回隊頭元素但不刪除,隊空時前者拋出異常,後者返回null
isEmpty()返回的是布爾值,用於判斷是否隊空
29.java.time包裏面:
Instant.now()方法是靜態方法,返回當前的瞬時時間點
Duration.between(Instant A,Instant B)是靜態方法,用於計算了兩個瞬時點的時間差
eg:
Instant start=Instant.now();
...........
Instant end=Instant.now();
System.out.printf("使用並行流用時:%d毫秒\n",Duration.between(start, end).toMillis());
30.BigInteger類:須要很是大的整數或很是高精度的浮點數,就能夠使用。在java.math包中
能夠用new BigInteger(String)建立實例,而後使用add(),substract(),multiply(),divide()來進行
算術計算
eg://計算n的階乘
public static BigInteger factorial(long n) {
BigInteger result=BigInteger.ONE;//表示初始值爲1
for(long i=1;i<=n;i++) {
result=result.multiply(new BigInteger(i+" "));
}
return result;
}
(i+" ")是由於:BigInteger類的構造方法是BigInteger(String S)因此必須i+" "來造成一個String
類型做爲構造參數
31.List接口:
將數組轉換成爲List對象:
String []str={"one","two"};
List<String> list=Arrays.asList(str);
也能夠直接將數組元素做爲asList()方法的參數寫在括號中:
List<String> list=Arrays.asList("one","two");
注意:Arrays.asList()方法返回的List對象是不可變的,不能對其進行刪除、添加等操做
若是想動其中的元素則須要:List<String>list=new ArrayList<>(Arrays.asList(str));