自己總結的一些Java的部分筆記
1.1 自動型別轉換
所有數值型別都可以自動轉換為double型別。
除了double型別,其他的數值型別都可以自動轉換為float型別。
所有整型(int)都可以自動轉換為long型別。
Eg:public class 自動轉換{
public static void main(String arg[]){
double d=3;//3預設是int型別,自動轉換為double型別
float ff=2;
float f=’\u0078’;//’\u0078’是char型,char型可以自動轉換為float型別。
}
}
低型別 ----- 自動轉換----》 高型別
1.2 強制型別轉換(強轉)
高型別 ------ 強制轉換----》 低型別
Eg: double d=3;
char c=(char) d;//d原本是double型別,強制轉換為char型別
1.3 for迴圈
For(初始化語句;返回Boolean的表示式;每次迴圈執行完後的程式碼)
Eg:(int i=0;i<10;i++)
if(返回boolean值的表示式)
While(返回boolean型別)如果沒有花括號,則執行到第一個分號
Do{}while{}先執行在判斷
結構有:順序、分支、迴圈、
For(數值型別 變數名:數值/集合)
1.4類變數,例項變數
有static修飾的類叫做靜態類,類方法只能呼叫類方法,不能呼叫例項方法。
例項方法可以呼叫類方法或例項方法。
1.5 方法過載、方法重寫
(1)方法過載是指方法名相同,引數的個數或者引數的型別不一樣。
(2)方法重寫:子類繼承父類的方法,子類的方法名,形參都和父類的 一樣。
一大:子類的訪問許可權比父類的訪問許可權大。
兩小:子類方法中丟擲的異常比父類丟擲的異常小或者相等。
子類返回型別和父類的相等或更小。
1.6 this的作用
(1)This引用:在構造器中,this代表構造器正在初始化這個物件,在方法 中this呼叫該方法的例項。this.
(2)This呼叫:this呼叫當前類中另一個過載的構造器。this()
this 呼叫例子:
//構造器的過載
public Tiger(Stringname,doubleweight){
this.name =name;
this.weight =weight*2;
}
public Tiger(Stringname,doubleweight,intage){
/*this.name = name;
this.weight = weight;*/
this(name,weight);//此次就是this呼叫
this.age =age;
}
1.7 super的作用
Super限定,強制訪問父類的方法。
Super呼叫必須出現在構造器的第一行,this呼叫也是一樣的。預設情況下子類構造器會呼叫父類的無參構造器。This呼叫和super呼叫不能同時出現。
1.8 Hashset 和 LinkedHashset
LinkedHashSet<String>hashset = newLinkedHashSet<>();
hashset.add("豬八戒");
hashset.add("孫悟空");
hashset.add("牛魔王");
hashset.add("白骨精");
System.out.println(hashset);
打印出來的結果是:
是安裝順序列印的。
HashSet<String> hashset =new HashSet<>();
hashset.add("豬八戒");
hashset.add("孫悟空");
hashset.add("牛魔王");
hashset.add("白骨精");
System.out.println(hashset);
打印出來的結果是:
是不安裝順序列印的。
HashSet的迭代:
HashSet<String> hashset =new HashSet<>();
hashset.add("a");
hashset.add("b");
hashset.add("c");
hashset.add("d");
Iteratorit =hashset.iterator();
while(it.hasNext()){
System.out.println("Iterator裡面的值是:"+it.next());
}
打印出來的結果是:
也可以用foreach迭代出來:
HashSet<String> hashset =new HashSet<>();
hashset.add("a");
hashset.add("b");
hashset.add("c");
hashset.add("d");
for(Stringel : hashset){
System.out.println(el);
}
列印的結果是:
LinkedHashSet多了一個列表,就可以知道新增順序了。
1.9 equal和”==”的區別
==比較的是物件的地址,也就是是否是同一個物件;
equal比較的是物件的值。
Integer r1 = new Integer(900);//定義r1整型物件Integer r2 = new Integer(900);//定義r2整型物件System.out.println(r1==r2);//返回falseSystem.out.println(r1.equal(r2));//返回true
2.0 Math的ceil/round/floor
Math.ceil就是向上取值,例如2.4,向上取值就是3.0。在例如1.6向上取值就是2.0;
Math.floor就是向下取值,例如2.4,向下取值就是2.0。再例如1.6向下取值就是1.0;
Mah.round的演算法比較複雜,演算法為:Math.floor(x+0.5),例如1.6,1.6+0.5=2.1,再向下取值就是2.0了,再例如1.2,1.2+0.5=1.7,再向下取值就是1.0了。
2.1 switch
Switch(exp1)中,exp1只能是一個整數表示式或者列舉常量,整數表示式可以是int基本型別或Integer包裝型別,byte/short/char都可以轉換為int型別,所以也是可以的。
注:在jdk1.7以後就可以用string了。
Switch(返回型別byte、short、char、int、列舉型別)
2.2 向上轉型
publicclass A {
intcount = 20;
}
publicclass Bextends A {
intcount = 300;
}
publicclass ABTest {
publicstaticvoid main(Stringagr[]){
A a =new A();
B b =new B();
System.out.println("a的count的值為:"+a.count);
System.out.println("b的count的值為:"+b.count);
A ab =b;//向上轉型,取決於改應用的變數宣告時的型別,比如這裡宣告的是“A”所以取A裡面的count
System.out.println(ab.count);
}
}
2.3 TCP和UDP
TCP:傳輸控制協議,提供的是面向連線的、可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立一個TCP連線,之後才可以傳輸資料。TCP提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。
UDP:使用者資料報協議,是一個簡單的面向資料報的運輸層協議。UDP不提供可靠性,它只是把應用程式傳給IP層的資料報傳送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸資料報前不用再客戶和伺服器之間建立一個連線,並且沒有超時重發等機制,故而傳輸速度很快。
2.4 Scanner和BufferedReader的區別
Scanner是一個簡單文字掃描器,使用分隔符模式將其輸入分解為標記。BufferedReader從字元輸入流中讀取文字,緩衝各個字元,以指定緩衝區的大小,或者可使用預設的大小。
2.5 String與StringBuffer的區別
StringBuffer物件的內容可以修改;而String物件一旦產生後就不可以被修改,重新賦值其實是兩個物件。StringBuffer在進行字串處理時,不生成新的物件,在記憶體使用上要優於String類。所以在實際使用時,如果經常需要對一個字串進行修改,例如插入、刪除等操作,使用StringBuffer要更加適合一些。
2.6 jdk環境變數配置
JAVA_HOME : jdk的安裝目錄;
Path :%JAVA_HOME%\bin;(jdk的bin目錄)
CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
2.7 tomcat環境變數配置
CATALINA_HOME : tomcat的安裝路徑;
2.8對Hibernate的理解
Hibernate是一個開放原始碼的ORM框架(物件關係對映),它對JDBC進行了輕量級封裝,你不用寫JDBC程式碼,僅僅是呼叫一個save方法,就可以將物件儲存到關係資料庫中,僅僅是呼叫一個get方法,就可以從資料庫中加載出一個物件。
2.9對Struts的理解
struts是一個按MVC模式設計的Web層框架,其實它就是一個大大的servlet,這個Servlet名為ActionServlet,或是ActionServlet的子類。Struts有豐富的標籤庫,支援i18n,有良好的Ajax支援。
3.0 final
Final修飾類,則該類不能被繼承;final修飾的方法,則該方法不能被重寫;final修飾屬性,則該屬性不能再被修改;final修飾變數,則該變數為常量。