JAVA學習(一)——基本語法

  tips:前端開發寫慣了弱類型語言,再來學強類型語言,真的是被各類修飾符、類型聲明給整的雲裏霧裏,並且java語法和javascript語言差異仍是很大的,因此作好筆記,把一些須要注意的地方記下來是很是重要的,接下來就開始學習java啦。javascript

 

 1、基本語法:前端

  一、大小寫敏感:Java是大小寫敏感的,這就意味着標識符Hello與hello是不一樣的。java

  二、類名:對於全部的類來講,類名的首字母應該大寫。若是類名由若干單詞組成,那麼每一個單詞的首字母應該大寫,例如 MyFirstJavaClass 。數組

  三、方法名:全部的方法名都應該以小寫字母開頭。若是方法名含有若干單詞,則後面的每一個單詞首字母大寫。安全

  四、源文件名:源文件名必須和類名相同。當保存文件的時候,你應該使用類名做爲文件名保存(切記Java是大小寫敏感的),文件名的後綴爲.java。(若是文件名和類名不相同則會致使編譯錯誤)。多線程

  五、主方法入口:全部的Java 程序由public static void main(String args[])方法開始執行。函數

  備註一下:學習

  5.一、public static void main(String args[]){}:爲java主函數,java虛擬機會自動尋找到main方法,而後開始執行後面的程序,java程序的規定的格式寫法;ui

     5.二、public:可外部訪問;spa

  5.三、static:標記爲靜態函數,將該函數存儲在靜態存儲區,不須要實例化(new)便可使用;

     5.四、void:無返回值;

  5.五、String args[]:可在命令行經過此參數給函數傳值,可在其餘類調用這個類的main函數時傳值。

public class MyFirstJavaProgram {
   /* 第一個Java程序.  
    * 它將打印字符串 Hello World
    */
    public static void main(String []args) {
       System.out.println("Hello World"); // 打印 Hello World
    }
} 

  

  2、類(class)

    一、局部變量

    二、成員變量:定義在類中,方法體以外的變量,和局部變量略有不一樣。

    三、類變量也聲明在類中,方法體以外,但必須聲明爲static類型。

    四、構造方法:在建立一個對象的時候,至少要調用一個構造方法。構造方法的名稱必須與類同名,一個類能夠有多個構造方法。

public class Puppy{
   public Puppy(){
   }

   public Puppy(String name){
      // 這個構造器僅有一個參數:name
   }
}

  

  3、類型

    一、基本數據類型(內置基本類型,引用類型)

    byte a = 100;—— byte數據類型是8位、有符號的,以二進制補碼錶示的整數;

    short s = 1000;—— short數據類型是16位、有符號的以二進制補碼錶示的整數;

    int a = 100000;—— int數據類型是32位、有符號的以二進制補碼錶示的整數;

    long a = 100000L;—— long數據類型是64位、有符號的以二進制補碼錶示的整數;(後面加了L)

    float f1 = 234.5f;—— float數據類型是單精度、32位、符合IEEE 754標準的浮點數;(小數,後面加了f)

    double d1 = 123.4;——  double數據類型是雙精度、64位、符合IEEE 754標準的浮點數;(小數)

    boolean one = true;——  boolean數據類型表示一位的信息;(true或false)

    char letter = ‘A’;—— char類型是一個單一的16位Unicode字符;

    Animal animal = new Animal(「giraffe」) ; —— 引用類型變量由類的構造函數建立,可使用它們訪問所引用的對象;

    final double PI = 3.1415927;——  常量指不能改變的量。 在Java中用final標誌,聲明方式和變量相似;

    

    二、變量類型(局部變量,實例變量,類變量)

    局部變量:

      一、訪問修飾符不能用於局部變量;(局部變量自己只能局部調用,外部無法調用,因此不須要修飾符private ,public protend,可是能加final)

      二、局部變量是在棧上分配的。(因爲進程的棧空間是有限的,因此要避免申請佔用空間過大的局部變量,以及避免函數嵌套層數過多。這些均可能引發棧空間不夠致使程序崩潰。)

    實例變量:

      一、實例變量聲明在一個類中,但在方法、構造方法和語句塊以外;

      二、實例變量的值應該至少被一個方法、構造方法或者語句塊引用,使得外部可以經過這些方式獲取實例變量信息;

      三、實例變量能夠聲明在使用前或者使用後;(有點類型js的變量提高)

      四、訪問修飾符能夠修飾實例變量;

      五、通常狀況下應該把實例變量設爲私有。經過使用訪問修飾符可使實例變量對子類可見;

      六、實例變量具備默認值。數值型變量的默認值是0,布爾型變量的默認值是false,引用類型變量的默認值是null。變量的值能夠在聲明時指定,也能夠在構造方法中指定;(局部變量沒有默認值哦!)

    類變量(靜態變量):

      一、以static關鍵字聲明,必須在方法、構造方法和語句塊以外。

      二、不管一個類建立了多少個對象,類只擁有類變量的一份拷貝。

      三、靜態變量除了被聲明爲常量外不多使用。常量是指聲明爲public/private,final和static類型的變量。常量初始化後不可改變。

      四、靜態變量儲存在靜態存儲區。常常被聲明爲常量,不多單獨使用static聲明變量。

      五、類變量被聲明爲public static final類型時,類變量名稱必須使用大寫字母。若是靜態變量不是public和final類型,其命名方式與實例變量以及局部變量的命名方式一致。

 

  4、修飾符

    訪問修飾符(private、public、protected)

      一、private —— 只能被所屬類訪問,而且類和接口不能聲明爲private。

      二、public —— Java程序的main() 方法必須設置成公有的,不然,Java解釋器將不能運行該類。

      三、protected —— 能被同一個包中的任何其餘類訪問,也可以被不一樣包中的子類訪問;不能修飾類和接口,方法和成員變量可以聲明爲protected,可是接口的成員變量和成員方法不能聲明爲protected。

    非訪問修飾符(static、final、abstract、synchronized、volatile)

      一、static —— 局部變量不能被聲明爲static變量;能夠直接使用classname.variablename和classname.methodname的方式訪問。

      二、final —— final對象的引用不能改變,可是裏面的值能夠改變;final修飾符一般和static修飾符一塊兒使用來建立類常量;類中的Final方法能夠被子類繼承,可是不能被子類修改;final類不能被繼承。

      三、abstract —— 抽象類不能用來實例化對象;一個類不能同時被abstract和final修飾;抽象方法是一種沒有任何實現的方法,該方法的的具體實現由子類提供。抽象方法不能被聲明成final和static;任何繼承抽象類的子類必須實現父類的全部抽象方法,除非該子類也是抽象類;抽象方法的聲明以分號結尾,例如:public abstract sample();

例子:

public abstract class SuperClass{
    abstract void m(); //抽象方法
}
 
class SubClass extends SuperClass{
     //實現抽象方法
      void m(){
          .........
      }
}

      四、synchronized —— 方法同一時間只能被一個線程訪問。

      五、transient —— java虛擬機(JVM)將跳過transient修飾的實例變量。

      六、volatile —— volatile修飾的成員變量在每次被線程訪問時,都強迫從共享內存中重讀該成員變量的值。並且,當成員變量發生變化時,強迫線程將變化值回寫到共享內存。這樣在任什麼時候刻,兩個不一樣的線程老是看到某個成員變量的同一個值。(看得有點暈)

 

  5、運算符(感受全部語言都差很少,略)

  6、包裝類或抽象類

    Number類:內置數據類型,如:int、long、byte、double、float、short等對應了包裝類Integer、Long、Byte、Double、Float、Short等,它們都是抽象類Number的子類。(包裝類須要拆箱變成內置數據類型才能進行計算)

    Math類:Math 的方法都被定義爲 static 形式,經過 Math 類能夠在主函數中直接調用。

    Character類:對應了內置數據類型char。

    String類:String類是不可改變的,因此你一旦建立了String對象,那它的值就沒法改變了。若是須要對字符串作不少修改,那麼應該選擇使用StringBuffer & StringBuilder類。輸出格式化數字可使用printf()和format()方法;

轉 換 符 說 明 示 例
%s 字符串類型 「mingrisoft」
%c 字符類型 ‘m’
%b 布爾類型 true
%d 整數類型(十進制) 99
%x 整數類型(十六進制) FF
%o 整數類型(八進制) 77
%f 浮點類型 99.99
%a 十六進制浮點類型 FF.35AE
%e 指數類型 9.38e+5
%g 通用浮點類型(f和e類型中較短的)  
%h 散列碼  
%% 百分比類型
%n 換行符  
%tx 日期與時間類型(x表明不一樣的日期與時間轉換符

    StringBuffer和StringBuilder類:StringBuilder相較於StringBuffer有速度優點,因此多數狀況下建議使用StringBuilder類。然而在應用程序要求線程安全的狀況下,則必須使用StringBuffer類。(線程安全就是多線程訪問時,採用了加鎖機制,當一個線程訪問該類的某個數據時,進行保護,其餘線程不能進行訪問直到該線程讀取完,其餘線程纔可以使用。不會出現數據不一致或者數據污染。線程不安全就是不提供數據訪問保護,有可能出現多個線程前後更改數據形成所獲得的數據是髒數據)。

    數組:

//數組聲明
dataType[] arrayRefVar; // 首選的方法 或 dataType arrayRefVar[]; // 效果相同,但不是首選方法

//數組建立
dataType[] arrayRefVar = new dataType[arraySize];

dataType[] arrayRefVar = {value0, value1, ..., valuek};

//foreach循環
public class TestArray {
   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};       // 打印全部數組元素       
    for (double element: myList) {
         System.out.println(element);       
    }    
  }
}

 

    Array類:能方便地操做數組,它提供的全部方法都是靜態的;(fill:給數組賦值,sort:對數組排序,equals:比較數組中元素值是否相等,binarySearch:對排序好的數組進行二分查找法查找數組元素)

 

  7、異常處理

    一、異常捕獲:使用try和catch關鍵字能夠捕獲異常;

try
{
   // 程序代碼
}catch(ExceptionName e1)
{
   //Catch 塊
}

    二、throws/throw關鍵字:若是一個方法沒有捕獲一個檢查性異常,那麼該方法必須使用throws 關鍵字來聲明。throws關鍵字放在方法簽名的尾部;能夠聲明拋出多個異常,多個異常之間用逗號隔開。

import java.io.*;
public class className
{
   public void withdraw(double amount) throws RemoteException,
                              InsufficientFundsException
   {
       // Method implementation
   }
   //Remainder of class definition
}

    三、finally關鍵字:不管是否發生異常,finally代碼塊中的代碼總會被執行;

 try{
    // 程序代碼
 }catch(異常類型1 異常的變量名1){
    // 程序代碼
 }catch(異常類型2 異常的變量名2){
    // 程序代碼
 }finally{
    // 程序代碼
 }

 

 

    最後,把上面的這些學懂,再來看java代碼,已經不像開始時的那樣陌生了,固然,還有一些知識點比較難,須要花更多的時間去學習研究,學得越多,越以爲java的知識體量很大,不過總算是入門了,再接再礪!

相關文章
相關標籤/搜索