以前學習java時總結了一些筆記,接下來的一段時間裏我會對這些筆記進行整理,並結合一些新的資源加以優化。一些非常簡單但是比較重要的知識點仍加以保留,而與C、C++等語言完全相同的基本特性則部分省去,算是爲新人們提供一些指引吧。廢話不多說,Go!
一、Java代碼的常見命名規則
1.1:包 package
* 最好是域名倒過來,要求所有的字母小寫,比如 com.baidu.mypackage
1.2:類class或者接口interface
* 如果是一個單詞首字母大寫,比如 Tool
* 如果是多個單詞每個單詞首字母大寫(駝峯標識), 比如 MyTool
1.3:方法或者變量
* 如果是一個單詞全部小寫,比如 reverse()
* 如果是多個單詞,從第二個單詞首字母大寫,比如 reverseString()
1.4:常量
* 如果是一個單詞,所有字母大寫,比如PI
* 如果是多個單詞,所有的單詞大寫,用下劃線區分每個單詞,比如 DAYS_OF_YEAR
二、 數據類型
2.1 Java的數據類型主要分爲兩種,①基本數據類型和②引用數據類型。
*基本數據類型在被創建時,在棧上給其劃分一塊內存,將數值直接存儲在棧上。
int a = 10;
a = 34;
double b = 10.1;
*引用數據類型在被創建時,首先要在棧上給其引用分配一塊內存,而該對象的所有信息都存儲在堆上,棧上面的引用存儲着對象的地址,從而指向堆中的對象。這裏的引用非常類似於C++中的指針。
Student s1 = new Student("Trump",23);
s1 = new Student("Mr Chairman",24);
2.2 基本數據類型的分類
主要包含四大類8種
* 整數型
* byte 佔一個字節 -128到127
* short 佔兩個字 -2^15~2^15-1
* int 佔四個字節 -2^31~2^31-1
* long 佔八個字節 -2^63~2^63-1
* 浮點型
* float 佔四個字節 -3.403E38~3.403E38 單精度
* double 佔八個字節-1.798E308~1.798E308 雙精度
* 字符型
* char 佔兩個字節 0~65535
* 布爾型
* boolean 需要指出的是,java中boolean類型沒有明確指定其大小
2.3 數據類型的轉換
數據類型的轉換包括兩種,①隱式轉換和②強制轉換。
*隱式轉換下,取值範圍小的數據類型與取值範圍大的數據類型進行運算,會先將小的數據類型提升爲大的,再運算。
舉個例子:
int a = 13;
byte b = 56;
a = a + b;//這裏b會被提升爲int型,再同a相加
注意,進行混合運算的時候,byte,short,char不會相互轉換,都會自動類型提升爲int類型,其他類型進行混合運算的是小的數據類型提升爲大的:byte,short,char → int → long → float → double
*強制轉換,與C語言中的類型轉換方法類似。
三、 運算符
1.邏輯運算符的辨別
* 與 &,&&:&&具有短路效果,左邊爲false,則右邊不再執行。&則都會執行。
* 或 |,||:||具有短路效果,左邊爲true,則右邊不再執行。|則都會執行。
* 異或 ^
* 非 !
2. 位異或運算符的特點
* 位異或運算符^有一個重要特點,一個數據對另一個數據位異或兩次,該數本身不變。那麼問題來了:“請自己實現兩個整數變量的交換”,方法如下:
/*要求:交換a和b*/
int a = 56;
int b = 12;
/*方法1*/
int tmp = a;
a = b;
b = tmp;
/*方法2*/
a = a + b;
b = a - b;
a = a - b;
/*方法3*/
a = a ^ b;
b = a ^ b;
a = a ^ b;
四、基本語句
4.1 實現鍵盤錄入
import java.util.Scanner;
public class HelloWorld{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();//獲取整數
String str = sc.nextLine();//獲取字符串
}
}
4.2 if,for,while,do...while語句
*與C相同。
4.3 switch語句
*與C非常類似:
switch(表達式) {
case 值1:
語句體1;
break;
case 值2:
語句體2;
break;
…
default:
語句體n+1;
break;
}
*需要特別注意的是,作爲表達式,基本數據類型可以接收byte,short,char,int等整形(不可浮點型);引用數據類型可以接收枚舉enum(自JDK1.5)以及String(自JDK1.7)。
五、方法(method)
5.1 與C++中的函數類似,但是有幾點不同:
*①java的方法名前面除了返回值類型以外還有修飾符,如public,private,staitc等;
*②java的參數傳遞只有一種,即值傳遞。也就是說實參直接把其“值”付給了方法內的形參,無論形參的值如何變化,都與實參無關。這也就意味着一般情況下,我們無法在方法內對基本數據類型實參進行修改。而C++中還有指針傳遞、引用傳遞等,這兩種傳遞方法可以實現在方法內對實參值的修改。(當然,凡事無絕對,我們可以org.omg.CORBA包中定義的持有者(holder)來實現對於基本數據類型的修改,見下例)
import org.omg.CORBA.IntHolder;
public class HelloWorld {
public static void trip(IntHolder i)
{
i.value = i.value + 3;
}
public static void main(String[] args) {
int a = 89;
IntHolder aHolder = new IntHolder();
aHolder.value= a;
trip(aHolder);
a = aHolder.value;
System.out.println(a);
}
}
5.2 方法重載
*發生方法重載的條件:在同一個類中,方法名相同,參數列表不同。與返回值類型無關。
*那麼什麼情況算是參數列表不同呢?①參數數量不同;②參數類型不同;③參數順序不同。