【Java要點】1.基礎規則與基本語法

以前學習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 方法重載

*發生方法重載的條件:在同一個類中,方法名相同,參數列表不同。與返回值類型無關。

*那麼什麼情況算是參數列表不同呢?①參數數量不同;②參數類型不同;③參數順序不同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章