1. 程式人生 > 其它 >Java學習筆記-基礎語法

Java學習筆記-基礎語法

基礎語法

1.註釋、識別符號、關鍵字

1.1註釋

註釋並不會被執行,對所寫的程式碼進行解釋說明

書寫註釋是一個好習慣

註釋的種類

  • 單行註釋(//單行註釋只能註釋一行)
  • 多行註釋(/* */)
  • 文字註釋【JavaDoc】(/** */)

1.2 識別符號與關鍵字

關鍵字
  • Java中所有組成部分都需要名字。類名、變數名以及方法名都被稱為識別符號。

識別符號注意點
  • 所有識別符號都應該以字母或$或“_”開始
  • 首字元之後可以是字母、$、_、或任何數字的字元組合
  • 不能使用關鍵字作為變數名或方法名
  • 識別符號是大小寫敏感
  • 合法識別符號舉例:age、$salary、_value
  • 非法識別符號舉例:123abc、-salary、#abc
  • 可以使用中文命名,但一般不建議使用

2.資料型別

強型別語言
  • 要求變數的使用要嚴格符合規定,所有變數都必須先定義後使用
弱型別語言
  • 而弱型別語言是一種弱型別定義的語言,某一個變數被定義型別,該變數可以根據環境變化自動進行轉換,不需要經過現行強制轉換
Java的資料型別分為兩大類

基本型別(primitive type)

class test01{
  public static void main(String[] args){
    //八大資料型別
    	//整數
    	int num1 = 10;//最常用
      byte num2 = 20;
      short num3 = 30;
      long num4 = 30L;//Long型別要在數字後面加個L

    //小數:浮點數
    float num5 = 50.1f;
    double num6 3.14159265358979;

    //字元
    char name = 'A';


    //字串,String不是關鍵字是類
    //String namea="中國";

    //布林值:是非
    boolean flag = true;
    //boolean flag = false;
  }
}
  • 引用型別(reference type)
    • 介面
    • 陣列
擴充套件
public class test02{
  public static class void main(String[] args){
    //整數拓展:進位制 二進位制0b 十進位制 八進位制0 十六進位制0x
		int i = 10;
		int i2 = 010;//八進位制
		int i3 = 0x10;//十進位制
		System.out.println(i);//10
		System.out.println(i2);//8
		System.out.println(i3);//16

		/*浮點數拓展 銀行業務的表示
		  BigDecimal 數學工具類
		  float 有限 離散 舍入誤差 大約 接近但不等於
		  double
		  最好完全避免使用浮點數進行比較
		*/
		float f = 0.1f;
		double d = 1.0/10.0;
		System.out.println(f == d);//false
		float d1 = 2333333333333333333f;
		float d2 = d1 + 1 ;
		System.out.println(d1 == d2);//ture

		//字元拓展
		char c1 = 'a';
		char c2 = '中';
		System.out.println(c1);//	a
		System.out.println((int)c1);//強制轉換		97
		System.out.println(c2);//	中
		System.out.println((int)c2);//	20013

		/*所有的字元本質都是數字
		  編碼 unicode 2位元組 表(97=a 65=A) 65536 Excel 2^16 = 65536
		  U0000 UFFFF
		*/
		char c3 = '\u0061';
		System.out.println(c3);//	a
		/*轉義字元
		  \t		製表符
		  \n		換行符
		  ……
		*/
		System.out.println("Hello\nWord");
		/*Hello
		  World
		*/

    //物件 從記憶體分析
    String sa = new String("original:hello word");
    String sb = new String("original:hello word");
    System.out.println(sa==sb);//false
    String sc = ("original:hello word");
    String sd = ("original:hello word");
    System.out.println(sc==sd);//true

    //布林值拓展
    boolean flag = true;
    if(flag){

}
  }
}

3.型別轉換

  • 由於java是強型別語言,所以要進行有些運算時需要用到型別轉換

    低------------------------------------------------------>高

    byte,short,char->int->long->float->double

  • 運算中,不同型別的資料先轉化為同一型別,然後進行計算
  • 強制型別轉換
  • 自動型別轉換
    public class test03{
      public static void main(String[] args){
        int i = 128;
        byte b = (byte)i//記憶體溢位
    
        //強制轉換	(型別)變數名	高->低
        //自動轉換	低->高
        System.out.println(i);//	128
        System.out.println(b);//	-128
    
        /*注意點
        	1.不能對布林值進行轉換
        	2.不能把物件型別轉換為不相干的型別
        	3.在把高容量轉換為低容量的時候,強制轉換
        	4.轉換的時候可能存在記憶體溢位,或精度問題
        */
        System.out.println(int(23.7));//	23
        System.out.println(int(-45.89f));//	-45
        char c = 'a';
        int d = c+1;
        System.out.println(d);//	98
        System.out.println(char(d));//	b
      }
    }
    
  • 常見問題
    class Untitled {
    	public static void main(String[] args) {
    		//運算元較大時注意溢位問題
    		//JDK新特性,數字之間可以用下劃線分割
    		int money = 10_0000_0000;
    		int years = 20;
    		int total1 = money*years;//	-1474836480,計算的時候溢位了
    		long total2 = money*years;//預設是int,轉換之前已經存在問題了
    
    		long total3 = money*((long)years);//先把一個整數轉換為Long
    		System.out.println(total3);
    	}
    }
    

4.變數、常量

4.1 變數

  • 變數:計算機儲存空間且裡面的值不確定

  • Java是一種強型別的語言,每個變數都必須宣告其型別

  • Java變數是程式中最基本的儲存單元,其要素包括變數名,變數型別和作用域

    type varName [=value] [{,varName[=value]}]
    //資料型別 變數名 = 值;可以使用逗號隔開來宣告多個同類型變數
    
  • 注意事項

    • 每個變數都有型別,型別可以是基本型別。
    • 變數名必須是合法識別符號。
    • 變數宣告是一條完整的語句,因此每一個宣告都必須以分號結束。

4.2 變數作用域

  • 類變數

  • 例項變數

  • 區域性變數

    public class Test{
      //類變數 static
      static double salary = 2500;
    
      //屬性:變數
    
      //例項變數:從屬於物件;如果不初始化,會變成這個型別的預設值
      //布林值:預設是false
      //除了基本型別,其餘預設值都是null
      String name;//預設值 0
      int age;//預設值0.0
    
      //main方法
      public static void main(String[] args) {
        //區域性變數:必須宣告和初始化值
        int i = 10;
    
        System.out.println(i);
        //變數型別
        Test test = new Test();
        System.out.println(test.age);
        System.out.println(test.name);
    
        //類變數 static
        System.out.println(salary);
      }
    }
    

4.3 常量

  • 常量(Constant):初始化(initialize)後不能改變值!不會變動的值
  • 所謂常量可以理解成一種特殊的變數,它的值被設定後,程式執行過程中不允許被改變。
public class Test{
    //常量定義方式: final 常量名=值
    //final是修飾符,不存在前後也可final static
    static final double PI = 3.14;
    public static void main(String[] args) {
        System.out.println(PI);        
    }
}
  • 常量名一般是用大寫字元

4.4 變數的命名規範

  • 所有變數、方法、類名:見名知意
  • 類成員變數:首字母小寫和駝峰原則:monthSalary
  • 區域性變數:首字母小寫和駝峰原則
  • 常量:大寫字母和下劃線:MAX_VALUE
  • 類名:首字母大寫和駝峰原則:Man,GoodMan
  • 方法名:首字母小寫和駝峰原則:run(),runRun()

5.運算子

  • Java語言支援如下運算子
    • 算術運算子:+,-,*,/,%,++,--
    • 賦值運算子:=
    • 關係運算符:>,<,>=,<=,==,!=,instanceof
    • 邏輯運算子:&&,||,!
    • 位運算子:&,|,^,~,>>,<<,>>>(瞭解!!!)
    • 條件運算子:?:
    • 擴充套件運算子:+=,-=,*=,/=
public class Test02{
    public static void main(String[] args) {
        long a = 1234374364617247;
        int b = 123;
        short c = 10;
        byte d = 8;

        System.out.println(a+b+c+d);//Long
        System.out.println(b+c+d);//Int
        System.out.println(c+d);//Int

        //冪運算 2^3 2*2*2 = 8 很多運算,我們會使用一些工具類來操作
        double pow = Math.pow(3,2);
        System.out.println(pow);//9

        //與(and) 或(or) 非(取反)
        boolean a = true;
        boolean b = false;
        System.out.println("a && b:"+(b&&a));//邏輯與運算:兩個變數都為真,結果才為真
        System.out.println("a || b:"+(a||b));//邏輯或運算:兩個變數有一個為真,則結果就為真
        System.out.println("!(a && b):"+!(a&&b));//如果是真,則變為假,如果是假則變為真
        //短路運算
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);//false
        System.out.println(c);//5
        /*
                A = 0011 1100
                B = 0000 1101
                ----------------------
                A&B = 0000 1100
                A|b = 0011 1101
                A^B = 1100 0011

                2*8 = 16 2*2*2*2
                << *2
                >> /2
                0000 0000   0
                0000 0001   1
                0000 0010   2
                0000 0100   4
                0000 1000   8
                0001 0000   16
                 */
        System.out.println(2<<3); //16  

        int a = 10;
        int b = 20;

        //條件運算子
        a+=b;//a = a+b
        a-=b;//a = a-b
        System.out.println(a);//30
        //字串連線符 + ,String在前會將後面的拼接,前面的正常運算
        System.out.println(""+a+b);//1020
        System.out.println(a+b+"");//30

        //三元運算子
        //x?y:z
        //如果x==true,則結果為y,否則為z
        int score = 80;
        String type = score < 60?"不及格":"及格";
        System.out.println(type);//不及格                
    }
}

6.包機制、JavaDoc

6.1 包機制

  • 為了更好地組織類,Java提供了包機制,用於區別類名的名稱空間。
  • 包語句的語法格式為:
package pkg1[.pkg2[.pkg3]];
  • 一般利用公司域名倒置作為包名 www.baidu.com com.baidu.www
  • 為了能夠使用一個包的成員,我們需要Java程式中明確匯入該包。使用“import”語句可完成此功能
import package1[.package2...].(classname|*);
//*匯入這個包下所有的類

6.2 JavaDoc

  • JavaDoc命令是用來生成自己的API文件的

  • 引數資訊

    • @author 作者名
    • @version 版本號
    • @since 指明需要最早使用的jdk版本
    • @param 引數名
    • @return 返回值情況
    • @throws 異常丟擲情況
  • 通過終端生成API文件

cd Java檔案所在地址
javadoc -encoding UTF-8 -charset UTF-8 Java檔名.java