天天看點

2021-08-15 Java基礎文法Java基礎文法

Java基礎文法

注釋

  1. 單行注釋
  2. 多行注釋
    /*
    多行注釋
    */
               
  3. 文檔注釋
    /**
    *文檔注釋,/**開頭,* /結束,每行得加*
    *@Description Hello World
    *@Author GuYUe
    */
               
  4. 有趣的代碼注釋
    /***                                                                    
     *            .,,       .,:;;iiiiiiiii;;:,,.     .,,                   
     *          rGB##HS,.;iirrrrriiiiiiiiiirrrrri;,s&##MAS,                
     *         r5s;:r3AH5iiiii;;;;;;;;;;;;;;;;iiirXHGSsiih1,               
     *            .;i;;s91;;;;;;::::::::::::;;;;iS5;;;ii:                  
     *          :rsriii;;r::::::::::::::::::::::;;,;;iiirsi,               
     *       .,iri;;::::;;;;;;::,,,,,,,,,,,,,..,,;;;;;;;;iiri,,.           
     *    ,9BM&,            .,:;;:,,,,,,,,,,,hXA8:            ..,,,.       
     *   ,;&@@#r:;;;;;::::,,.   ,r,,,,,,,,,,iA@@@s,,:::;;;::,,.   .;.      
     *    :ih1iii;;;;;::::;;;;;;;:,,,,,,,,,,;i55r;;;;;;;;;iiirrrr,..       
     *   .ir;;iiiiiiiiii;;;;::::::,,,,,,,:::::,,:;;;iiiiiiiiiiiiri         
     *   iriiiiiiiiiiiiiiii;;;::::::::::::::::;;;iiiiiiiiiiiiiiiir;        
     *  ,riii;;;;;;;;;;;;;:::::::::::::::::::::::;;;;;;;;;;;;;;iiir.       
     *  iri;;;::::,,,,,,,,,,:::::::::::::::::::::::::,::,,::::;;iir:       
     * .rii;;::::,,,,,,,,,,,,:::::::::::::::::,,,,,,,,,,,,,::::;;iri       
     * ,rii;;;::,,,,,,,,,,,,,:::::::::::,:::::,,,,,,,,,,,,,:::;;;iir.      
     * ,rii;;i::,,,,,,,,,,,,,:::::::::::::::::,,,,,,,,,,,,,,::i;;iir.      
     * ,rii;;r::,,,,,,,,,,,,,:,:::::,:,:::::::,,,,,,,,,,,,,::;r;;iir.      
     * .rii;;rr,:,,,,,,,,,,,,,,:::::::::::::::,,,,,,,,,,,,,:,si;;iri       
     *  ;rii;:1i,,,,,,,,,,,,,,,,,,:::::::::,,,,,,,,,,,,,,,:,ss:;iir:       
     *  .rii;;;5r,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sh:;;iri        
     *   ;rii;:;51,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.:hh:;;iir,        
     *    irii;::hSr,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,sSs:;;iir:         
     *     irii;;:iSSs:.,,,,,,,,,,,,,,,,,,,,,,,,,,,..:135;:;;iir:          
     *      ;rii;;:,r535r:...,,,,,,,,,,,,,,,,,,..,;sS35i,;;iirr:           
     *       :rrii;;:,;1S3Shs;:,............,:is533Ss:,;;;iiri,            
     *        .;rrii;;;:,;rhS393S55hh11hh5S3393Shr:,:;;;iirr:              
     *          .;rriii;;;::,:;is1h555555h1si;:,::;;;iirri:.               
     *            .:irrrii;;;;;:::,,,,,,,,:::;;;;iiirrr;,                  
     *               .:irrrriiiiii;;;;;;;;iiiiiirrrr;,.                    
     *                  .,:;iirrrrrrrrrrrrrrrrri;:.                        
     *                        ..,:::;;;;:::,,.                             
     */                                                                     
               

辨別符

關鍵字

  1. 通路控制
    關鍵字 意思
    private 私有的
    protected 受保護的
    public 公共的
  2. 類、方法和變量修飾符
    關鍵字 意思
    abstract 聲明抽象
    class
    extends 擴允,繼承
    final 終極,不可改變的
    implements 實作
    interface 接口
    native 本地
    new 新,建立
    static 靜态
    strictfp 嚴格,精準
    synchronized 線程,同步
    transient 短暫
    volatile 易失
  3. 程式控制語句
    關鍵字 意思
    break 跳出循環
    continue 繼續
    return 傳回
    do 運作
    while 循環
    if 如果
    else 反之
    for 循環
    instance of 執行個體
    switch 開關
    case 傳回開關裡的結果
    default 預設
  4. 錯誤處理
    關鍵字 意思
    catch 處理異常
    finally 有沒有異常都執行
    throw 抛出一個異常對象
    throws 聲明一個異常可能被抛出
    try 捕獲異常
  5. 包相關
    關鍵字 意思
    import 引入
    package
  6. 基本類型
    關鍵字 意思
    boolean 布爾型
    byte 位元組型
    char 字元型
    double 雙精度
    float 浮點
    int 整型
    long 長整型
    short 短整型
    null
    true
    false
  7. 變量引用
    關鍵字 意思
    super 父類,超類
    this 本類
    void 無傳回值

辨別符注意點

  • 辨別符應以大小寫字母(A-Z,a-z),美元($),下劃線(_)開始。
  • 首字母之後可以是任意字母,數字的任何字元組合。
  • 不能以關鍵字命名
  • 大小寫敏感
  • 中文可以用,但不建議

資料類型

Java是一種強類型語言,所有變量都得先定義後使用。

基本類型

  1. 整數:byte占1個位元組範圍:-128-127;
    一個位元組,8位,最大是二進制11111111,表示成10進制是2e8=256,分正負,-128-127

    ​ short占2個位元組範圍:-32768-32767,

    ​ int占4個位元組範圍:-2147483648-2147483647,±21億

    ​ long占8個位元組範圍:-9223372036854775808-9223372036854775807

    ​ long一般在數字後加L,表示L類型

  2. 浮點:float占4個位元組,1.4e-045〜3.4e + 038

    ​ double占8個位元組,4.9e-324〜1.8e + 308

  3. 字元:char占兩個位元組,字元用單引号,一個漢字也是一個字元

    字元串:String,String不是關鍵字,是一個類,字元串用雙引号

  4. 布爾類型:占一位,值隻有true\false
    位元組
    1. 位bit:是計算機内部資料儲存的最小機關,11001100是—個八位二進制數
    2. 位元組byte:是計算機中資料處理的基本機關,習慣上用大寫B來表示,1B=8bit
    3. 字元:是指計算機中使用的字母、數字、字和符号
  5. 拓展
    • 進制、精度
    public class Demo3 {
     public static void main(String[] args) {
         int i1 = 10;
         int i2 = 010;//八進制以0開頭,8
         int i3 = 0x10;//十六進制以ox開頭,16
         System.out.println(i1);
         System.out.println(i2);
         System.out.println(i3);
    	      
         float f = 0.1f;
         double d = 1.0/10;
         System.out.println(f==d);
         System.out.println(f);
         System.out.println(d);
    	 //
         
         float d1 = 22323232323232f;
         float d2 = d1+1;
         System.out.println(d1);
         System.out.println(d2);
         System.out.println(d1==d2);
         //銀行業務少用浮點數進行比較;
     }
    }
               
    1. 轉義字元

      \t 制表符

      \n 換行

    System.out.println("Hello\tWorld");
    System.out.println("Hello\nWorld");
               
    2021-08-15 Java基礎文法Java基礎文法
    其他常用轉義符如下:
    2021-08-15 Java基礎文法Java基礎文法
    引用-部落格園-劉小将
    1. 布爾值
    flag = true
    if(flag=true){}
    if(flag){}
    //兩者作用相同
               

引用類型

  1. 接口
  2. 數組

類型轉換

類型級别

低級可以自動轉換成進階

2021-08-15 Java基礎文法Java基礎文法

強制轉換

進階轉換成低級:變量前加(類型),記憶體溢出會循環

public class Demo5 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i; //記憶體溢出,循環

        System.out.println(b);
        System.out.println(i);
    }
}
//b=-128
           
  1. 不能轉換轉換布爾值
  2. 類型要相幹
  3. 大容量到低容量要強制轉換
  4. 轉換可能存在記憶體溢出或精度問題
char c = 'a';
int d = c+1;
System.out.println(d);//98
System.out.println((char) d);//b
           
public class Demo6 {
    public static void main(String[] args) {
        int money = 10_0000_0000;//JDK7以後數字見可用_分割,且不會輸出
        int year = 20;
        int total1 = money*year;//int類型超過21億溢出
        System.out.println(total1);

        long total2 = money* year;
        System.out.println(total2);//乘法運算時已經出問題,再轉換沒用

        long total3 = money*(long)year;
        System.out.println(total3);//把其中一個轉換成long
    }
}

           

變量、常量

每個變量都必須聲明類型

變量的作用域

  1. 類變量 定義在class下面,static開頭,可以在方法内直接調用
  2. 執行個體變量 定義在class下面,不必初始化,預設值0 0.0 布爾值預設false,除了基本類型其他都是null。方法内調用得先new一個對象。
  3. 局部變量 方法内部,其他方法不能調用
public class Demo8 {
   
   	 //類變量 static
    	static double salary = 2500;
   	 //屬性:變量
   	
    //執行個體變量:從屬于對象:不必初始化,預設值0 0.0 布爾值預設false,
    //除了基本類型其他都是null。
   	 String name;
    	int age;
   	
    	//main方法
    	public static void main(String[] args){
      	  //局部變量:不許聲明和初始化值,隻在本方法内可用
          int i = 10;
       	  System.out.println(i);
   
      	  //變量類型  變量名字 = new Demo8()
     	   Demo8 demo8 = new Demo8();
      	   System.out.println(demo8.age);
      	   System.out.println(demo8.name);
           System.out.println(salary);
       	}
   
    	//其他方法
   	 public void add(){
       }
   }

           

常量

初始化之後就不能再改

final 常量名=值

常量名一般用大寫字元

變量的命名規範

  1. 所有變量、方法、類名:見名知意
  2. 類成員變量:首字母小寫和駝峰原則: monthSalary,除了第一個單詞外,後邊單詞首字母大寫。lastname->lastName
  3. 局部變量:首字母小寫和駝峰原則
  4. 常量:大寫字母和下劃線: MAX_VALUE
  5. 類名:首字母大寫和駝峰原則:Man, GoodMan //規範
  6. 方法名:首字母小寫和駝峰原則:run(), runRun()

運算符

Java支援的運算符

  1. 算數運算:+ - * / %(模運算,即取餘) ++ –
  2. 指派運算:=
  3. 關系運算:> < >= <= ==(等于) !=(不等于) instanceof
  4. 邏輯運算:&& || ! 與或非
  5. 位運算:& | ~ ^ >> << >>>
  6. 條件運算:? :
  7. 擴充指派運算:+= -= *= /=
package Operator;

public class Demo01 {
    public static void main(String[] args) {
        //二進制運算符
        int a = 10;//快捷鍵CTRL+D複制目前行到下一行
        int b = 20;
        int c = 30;
        int d = 30;

        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);        //int
        System.out.println((double)a/b);
    }
}
           
package Operator;

public class Demo02 {
    public static void main(String[] args) {
        long a = 123123123123L;
        int b = 123;
        short c = 32767;
        byte d = 127;
        System.out.println(a+b+c+d);//Long
        System.out.println(b+c+d);//int
        System.out.println(c+d);//int
        //有一個是Long,全是long,否則全是int。
    }
}
           
package Operator;

public class Demo03 {
    public static void main(String[] args) {
        //大于小于傳回結果是布爾值,true/false
        int a = 10;
        int b = 20;
        int c = 21;
        System.out.println(a>b);    //false
        System.out.println(a<b);    //true
        System.out.println(a==b);   //false
        System.out.println(a!=b);   //true
        System.out.println(c%a);    //取模=1
    }
}
           

自增自減(++ --)

  1. a++ 相當于隐藏語句a=a+1 在a++所在語句執行後執行 b=a++//先指派,再自增
  2. ++a 相當于隐藏語句a=a+1 在++a所在語句執行前執行 b=++a//先自增,再指派
  3. – 用法類似

幂運算

數學計算類庫 Math

Math.pow

package Operator;

public class Dmeo04 {
    public static void main(String[] args) {
        //自增自減
        int a = 3;

        int b = a++;//a = 3, b=3;
        //a=a+1;隐藏
        System.out.println(a);//a=4;
        System.out.println(b);//b=3;

        //a=a+1;
        int c = ++a;    //a=5,c=5;
        System.out.println(c);

        int d = a--;//d=5
        System.out.println(d);//a=4

        int e = --a;//a=3,e=3;

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);

        //幂運算
        double pow = Math.pow(2,3);
        System.out.println(pow);

    }
}

           

邏輯運算

與&&,兩個都為T,則為T;

或||,一個為T,則為T;

非!,T變為F。

短路運算

與運算a&&b,若a為false,則b直接跳過,程式傳回false。

package Operator;

//邏輯運算符     與或非 交并補
public class Demo05 {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;

        System.out.println("a && b:"+(a && b));
        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);
        System.out.println(c);
    }
}

           

位運算

//每位進行與或非
A = 0011 1100
B = 0000 1101

A&B=0000 1100
A|B=0011 1101
A^B=0011 0001	//異或,相同為0,不同為1
~B=1111 0010
           
//2*8怎麼計算最快	分解為2*2*2
//左移右移
//    <<	>>
package Operator;

public class Demo06 {
    public static void main(String[] args) {
        System.out.println(2<<3);//16
        /*
        2 寫成8位二進制
        2 = 0000 0010   1左移一位,數字變成2倍
        2<<3位變大2^3倍
        效率極高
         */
    }

}
           

擴充指派

字元串連接配接符

“+” 加号兩側出現String類型,會自動把其他類型變成String

空字元串在前,先變成字元串再連接配接,空字元串在後,先計算再變成字元串連接配接

package Operator;

public class Demo07 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        a+=b;//a=a+b;

        System.out.println(a);//30
        //a=30;b=20;
        System.out.println(""+a+b);//3020
        System.out.println(a+b+"");//50
    }

}
           

條件運算符

x ? y : z

若x位true,則值為y,否則為z。

package Operator;

public class Demo08 {
    public static void main(String[] args) {
        //條件運算符
        int y = 1;
        int z = 2;
        boolean x = true;
        System.out.package Operator;

public class Demo08 {
    public static void main(String[] args) {
        //條件運算符
        int score = 85;
        String type = score > 60 ? "合格" : "不合格";

        System.out.println(type);//合格
    }
}

           

包機制

包的本質就是一個檔案夾。

一般用公司域名倒置作為包名 如www.baidu.com com.baidu.www

導包:import import com.guyuer.Base.Demo2;導入Base下的Demo2類。 import com.guyuer.Base.*; 導入Base包下所有的類。

JavaDoc

生成API文檔

package com.guyuer.Base;

/**
 * @Author GuYuer
 * Version 1.0
 * Since 1.8
 */
public class Doc {
    String name;

    /**
     *
     * @param name
     * @return
     * @throws Exception
     */
    public String test(String name) throws Exception{
        return name;
    }
}

           
在cmd中操作
  1. 在類所在位置打開cmd指令視窗
  2. 輸入javadoc -encoding UTF-8 -charset UTF-8 Doc.java //-encoding 和 -charset設定是防止中文亂碼
  3. 在文檔目錄會生産html檔案,打開index.html
    2021-08-15 Java基礎文法Java基礎文法