二、java文法基礎

來源:互聯網
上載者:User

標籤:

這裡提幾個個人感覺需要注意的細節,具體的內容推薦隨便看本java書籍

一、標識符

1.標識符命名規則:
1)字母、底線、貨幣符號或者數字組成
2)字母、底線、貨幣符號開頭(不能是數字)(面試喜歡考這兩點)
3)大小寫敏感,長度無限制
4)不能和關鍵字、保留字重名
2.約定一般採用駝峰規則,並且是見名知意
3.注意命名不能夠有關鍵字 所有關鍵字,都是小寫字母

 

二、基礎資料型別 (Elementary Data Type)

byte,short ,int,long,char;  boolean ;float,double 

需要注意的是:

1)整型預設使用int, 浮點型預設使用double

比如要寫一個長整形long 的數,需要顯式地寫成 1000L (後面加個L,雖然寫小寫l也可以,但是推薦寫大寫L) 

要寫一個float類型的浮點數,顯式寫成 1.23F

2)關於金融的行業對於資料精度要求很高的,一般會使用BigInteger和BigDecimal來表示整型和浮點型

3)char類型

java中的char底層採用unicode,英文是兩個位元組16位,一個漢字也是兩個位元組,也就是說 ‘a‘ ,‘中‘ ,對於java中的char來說是一樣長的 
(雖然有些編碼裡面說的一個中文字元是兩個英文字元長度,但是在unicode下面,他們長度相同,都是兩個位元組)

 

三、操作符

1.賦值 = , 注意的是參考型別傳遞地址,基本類型傳遞值。

2.算術運算子:+、-、*、/、%等

注意的是進行整型運算底層採用的是int來進行, 比如

short  s1,s2 = 1;

s2++;  

s1=s2;//這裡會報錯,因為s++的時候,會自動將short類型轉為int類型,然後賦值的時候左邊衛short類型,右邊實際上變成了int類型

3.關係運算子

注意對象的比較,不能隨便用"=",而且說到"="就不得不提"equals",這裡提兩點

1)

 1 public class A {} 2  3 public class Test { 4  5     public static void main(String[] args) { 6  7            A a1 = new A(); 8  9          A a2 = new A();10  11            System.out.println(a1 == a2);     //false12 13            System.out.println(a1.equals(a2));//false  14 15     }16 17 }

第一個為false,因為比較的實際上是地址,兩個對象,地址不同

第二個也為false,可能你已經瞭解對象比較要用equals方法,但是這裡A對象並沒重寫equals方法,那麼就會調用Object的equals方法,Object的equals方法實際上還是在比較地址   

2)

 1 public class Test { 2  3     public static void main(String[] args ) { 4  5        String s1 = "hello"; 6  7      String s2 = "hello"; 8  9       System.out.println(s1 == s2);      //true10 11       System.out.println(s1.equals(s2));//true12 13     }14 15 }

String雖然是物件類型,但是它很特殊,java裡面有String池,建立第一個hello的時候放入String池,第二次建立s2的時候JVM首先去找String池,發現已經有"hello"了,就直接讓s2也指向s1這個對象。

如果想建立另一個"hello",需要這麼寫:new String("hello");

(關於設計String池,原因之一也是java最開始出的版本裡面,String就是常量,這是JVM為了效率考慮的一次最佳化,後面詳細介紹String的時候還會講到StringBuilder,StringBuffer,它們則是java對於字串操作的第二次最佳化)

4.邏輯運算子  &, | ,! 注意兩點

1)a&&b 如果前一個為false ,則後一個不會執行;如果a||b ,第一個為true,第二個不會執行了;
而a & b 第一個為false,第二個也會執行;a|b 第一個為true,第二個也會執行。(這面試挺喜歡考的)

2)熟悉二進位操作的話

比如 01 &  11  結果為 01 , 01 | 11 結果為11 , 這裡是按照與或非的原則,每個位置進行計算的。現實中碰到要這麼做的情況很少。這是按位操作。

3)指數計算

1.39E9f = 1.39*10^9  用的比較少

4)移位操作(需要點二進位的知識來理解)

左移 <<
右移 >>
無符號右移 >>> 用的比較少,一般只是在進行2的倍數操作時候用
而且移位操作,short,byte等執行之前,系統會自動轉換成為int ,然後再移位
比較推薦的一種用法,就是當放大2的n次方的時候 ,可以 t<<n 這麼寫 , 左移一位相當於乘以2 ,右移一位相當於除以2 , 這個操作速度更快(這是裝B利器)。

5)三元操作符

a?b:c

如果a為true則執行b,a為false執行c

6)截取
Math.random() 四捨五入
Math.ceil() 升截
Math.floor() 降截

7)基礎資料型別 (Elementary Data Type)之間的自動轉換

容量小的自動轉換成為容量大的
布爾類型和其他類型之間不能互相轉換(這個和c++不同,比如 if(1)在c++中可以,在java中不行)
byte,short,char>int>long>float>double
byte,short,char之間不會相互轉化,他們三者發生計算,首先變成int
(整型運算,底層就是以int,所以小容量的這三個進行運算,在運算前,就被系統自動變為int)

 

四、控制流程程語句

1.迴圈

while,do-while,for , 注意do-while迴圈會比while多執行一次(這個面試常考)

比如:

 1 public class Test { 2     public static void main(String[] args) { 3         int i=0; 4         while(i<2) {//執行2次 5             i++; 6             System.out.println("dd"); 7         } 8          9         int j=0;10         do {//執行3次11             j++;12             System.out.println("dd");13         }while(j<2);14     }15 }

2.謹記一個原則,別過多使用if、else, 超過5個加註釋(為更好維護)

3.switch語句 ,這個記得加break控制

雖然jdk版本出來都快版本9了,但是關於switch的和枚舉配合使用的貌似使用不普遍,見下例:

 1 enum Spe { 2     NOT,YES 3 } 4  5 public class Test { 6     public static void main(String[]args) { 7         Spe s = Spe.NOT;//枚舉類型的值,本身也是這個枚舉類型 8         switch(s) {//s的位置放入一個枚舉類型 9             case NOT: System.out.println("not");break;10             case YES: System.out.println("yes");break;11         }12     }13 }

 

二、java文法基礎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.