1. 程式人生 > 實用技巧 >基本語法筆記補充

基本語法筆記補充

Java基礎語法

註釋、識別符號、關鍵字

註釋

  1. 專案結構複雜,需要用到註釋

  2. 註釋不執行,寫給寫程式碼的人看

  3. 保持寫註釋的好習慣

  4. 平時寫程式碼,註釋畢竟要規範

  5. 註釋的種類:

    • 單行註釋

    • 多行註釋

    • 文件註釋

識別符號

關鍵字:

Java所有的組成部分都需要名字。類名、變數名一級方法名都被成為識別符號

注意點:

  • 所有識別符號都因該以字母(A-Z或者a-z),美元符($)、下劃線(_)開始

  • 首字元之後可以是字母、美元符、下劃線或者數字的任何字元

  • 不能使用關鍵字作為變數名或使用方法

  • 識別符號大小寫敏感的

  • 可以使用中文命名,但不建議使用

資料型別

強型別語言

變數的使用嚴格規定,所有變數必須先定義後才能使用

String:字串

int:數字

Java 的資料型別兩大類

  1. 基本型別:

  2. 引用型別

    reference:引用

什麼是位元組

  • (bit):計算機內部最小的儲存單位

  • 位元組(byte):資料處理的基本單位,用B表示。

  • 1B=8bit

  • 字元:計算機使用的字母、數字、字和符號。

資料型別拓展

  1. 整數拓展:進位制

    • 二進位制:0b

    • 八進位制:0

    • 十進位制

    • 十六進位制:0x (0~9 A~F)

  2. 浮點數拓展

    • 銀行業務怎麼表示:(float&double有問題不能用)BIgDecimal 數學工具類

    • float f=0.1f;
      double d=1.0/10;
      System.out.println(f==d);//比較f&d是否一樣
    • float d1=65623456321f;
      float d2=d1+1;
      System.out.println(d1==d2);//比d1&d2是否一樣
    • 原因:float 是有限的,離散的,有一個舍入誤差,大約,接近但不等於。

    • 最好完全使用浮點數進行比較。

3.字元拓展

  • char c1='a';
    char c2='中';
  • 強制轉換:

    char c1='a';
    char c2='中';
    System.out.println(c1);
    System.out.println((int)c1);//強制將字元轉換成數字
    System.out.println(c2);
    System.out.println((int)c2);//強制將字元轉換成數字
  • 所有的字元本質還是數字

  • 編碼 Unicode 表 佔2位元組 總共有65536(2的16次方)(Excel也是65536)

    例如:a=97 A=65

  • 範圍:U0000 UFFFF

    char c3='\u0061';
    System.out.println(c3);
  • 轉義字元

    • \t:製表符 \n:換行 很多,需要自學

  1. 布林值擴充套件

    boolean flag = true;
    if(flag==true);//新手這樣寫
    if(flag);//老手這樣寫,兩個意思一樣。

型別轉換

Java是強型別語言,所以進行有些運算需要型別轉換

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

低==================================高

public class Demo04 {
public static void main(String[] args) {
int i=128;
byte b=(byte)i;//記憶體溢位情況,超出了byte的範圍。
System.out.println(i);
System.out.println(b);
}
}
  • 強制型別轉換 需要(型別)變數名 高→低,類似於上面的程式

  • 自動轉換 低到高。例如:

    public class Demo04 {
    public static void main(String[] args) {
    int i=128;
    double b=i;
    System.out.println(i);
    System.out.println(b);
    }
    }

    注意點

    1. 不能對布林值進行轉換

    2. 不能把物件型別轉換為不相干的型別

    3. 不能高容量轉換到低容量的時候,強制轉換;否則自動轉換。

    4. 轉換的時候可能存在溢位或者精度的問題

      public class Demo04 {
          public static void main(String[] args) {
             System.out.println((int)23.7);
              System.out.println((int)-45.89f);
          }
      }

5. char字元也可以自動轉換,

public class Demo04 {
    public static void main(String[] args) {
        char c='a';
        int d=c+1;
       System.out.println(d);
        System.out.println((char)d);
    }
}
  1. 再次強調溢位的問題,

    public class Demo05 {
        public static void main(String[] args) {
            //操作比較大的數的時候,注意溢位問題
            //JDK7新特性,數字之間可以用_分割
            int money = 10_0000_0000;
            int years=20;
            int total=money*years;//int的範圍是正負21億,輸出結果溢位
            long total2=money*years;//計算結果已經溢位,給total2轉換為long也沒用
            long total3=(long)money*years;//這才是正確的輸出結果
            System.out.println(total);
            System.out.println(total2);
            System.out.println(total3);
    
        }
    }

變數、常量

變數

  • 變數:就是可以變化的量

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

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

  • 資料型別 變數名=值;可以使用逗號隔開來宣告多個同類型變數

  • 注意事項:

    • 每個變數都有型別,型別可以是基本型別,也可以是引用型別。

    • 變數必須是是合法的識別符號

    • 變數宣告是一條完整的語句,因此每個宣告都必須以分號結束。

public class Demo06 {
    public static void main(String[] args) {
        int a=1;
        int b=2;
        int c=3;
        String name="ouronghui";
        char x='X';
        double pi=3.14;
        System.out.println();
    }
}

變數作用域

  • 類變數

    public class Demo08 {
        static  double salary=2500;
        //例項變數:從屬於物件;如果不進行初始化,這個型別的預設值
        //所有的數值型別初始化值是0或0.0,字串初始化是u0000 布林值預設是false
        //除了基本型別其餘的預設值都null
        String name;
        int age;
    
        public static void main(String[] args) {
            int i=10;
            System.out.println(i);
            //變數型別 變數名字=new Demo08;
         Demo08 demo08= new Demo08();
            System.out.println(demo08.age);
            System.out.println(demo08.name);
            //類變數 static
            System.out.println(salary);
    
        }

  • 例項變數

    public class Demo08 {
        //例項變數:從屬於物件;如果不進行初始化,這個型別的預設值
        //所有的數值型別初始化值是0或0.0,字串初始化是u0000 布林值預設是false
        //除了基本型別其餘的預設值都null
        String name;
        int age;
    
        public static void main(String[] args) {
            int i=10;
            System.out.println(i);
            //變數型別 變數名字=new Demo08;
         Demo08 demo08= new Demo08();
            System.out.println(demo08.age);
            System.out.println(demo08.name);
            
        }
    
    }

  • 區域性變數

    public class Demo07 {
        //屬性“:變數
        //main 方法
        public static void main(String[] args) {
    //區域性變數;必須宣告和初始化值
            int i=10;
            System.out.println(i);
        }//區域性變數只在當個括號內有效
        //其他方法
        public viod add(){
    
        }
    }

    常量

    用 final 關鍵詞來定常量/

    Constant 初始化(initialize)後不能再改變值!不會變動的值。

    常量可以理解成特殊的變數,他的值被設定後,程式執行中不能被改變。

    常量名一般使用大寫字元。

    public class Demo09 {
        //修飾符,不存在先後順序
        static final double PI=3.14;
        public static void main(String[] args) {
    
            System.out.println(PI);
        }
    }

    變數的命名規範

    • 所有的變數、方法、類名:見名知意

    • 類成員變數:除了第一個單詞意外首字母大寫,(駝峰原則)

    • 區域性變數:除了第一個單詞意外首字母大寫,(駝峰原則)

    • 常量:全部大寫

    • 類名:首字母大寫和駝峰原則

    • 方法名:首字母小寫和駝峰原則

運算子

算數運算子:+,-,*,/,%,++,--

賦值運算子: =

關係運算符:<,>,>=,>=,==,!=,instanceof

邏輯運算子:與(&&),非(!),或(||),

位運算子:&,|,^,~,>>,<<,>>>

條件運算子 ? :

擴充套件運算子:+=,-=,*=,/=

  1. package operator;
    
    public class Demo01 {
        public static void main(String[] args) {
            //二元運算子
            //ctrl+D:複製當前行到下一行
            int a=10;
            int b=20;
            int c=25;
            int d=30;
            System.out.println(a+b);
            System.out.println(a-b);
            System.out.println(a*b);
            System.out.println(a/(double)b);
  2. package operator;
    
    public class Demo02 {
        public static void main(String[] args) {
            long a=121321345454545L;
            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
        }
    }
  3. package operator;
    
    public class Demo03 {
        public static void main(String[] args) {
            //關係運算符返回的結果:正確,錯誤 布林值
            //if
            int a=10;
            int b=20;
            int c=21;
            System.out.println(a>b);
            System.out.println(a<b);
            System.out.println(a==b);
            System.out.println(a!=b);
            System.out.println(c%a);//c/a  21/10=2....1
        }
    }
  4. 運算拓展知識:

    package operator;
    
    public class Demo04 {
        public static void main(String[] args) {
            //++ -- 自增 ,自減 一元運算子
            int a=3;
            int b=a++;//a++ a=a+1,執行當前程式碼後,先給b賦值,再自增
            //相當於在執行這條程式碼後自增
            System.out.println(a);
            int c=++a;//++a a=a+1 執行時機不同 執行當前程式碼前,先自增
            System.out.println(a);
            System.out.println(b);
            System.out.println(c);
            //冪運算 2^3 =2*2*2=8
          double pow= Math.pow(3,3);
            System.out.println(pow);
        }
    }
    1. 邏輯運算:

      package operator;
      //邏輯運算子
      public class Demo05 {
          public static void main(String[] args) {
              //與(and)或(or)非(取反)
              boolean a=true;
              boolean b=false;
              System.out.println("a&&b:"+(a&&b));//邏輯與運算:兩個變數都為真,結果才為true
              System.out.println("a||b:"+(a||b));//邏輯或運算:兩個有一個變數為真,結果為true
              System.out.println("!(a&&b):"+!(a&&b));//如果是真,則變為假,如果是假,則變為真
      
              //短路運算 與運算前面為假,則不往後運算
              int c=5;
              boolean d=(c<4)&&(c++<4);
              System.out.println(d);
              System.out.println(c);
          }
      }
      1. 位運算例子:

        package operator;
        
        public class Demo06 {
            public static void main(String[] args) {
                /*
                A=0011 1100
                B=0000 1101
                A&B 0000 1100
                A|B 0011 1101
                A^B 0011 0001
                ~B  1111 0010
        
                2*8=16 2*2*2*2
                << 左移 意思是乘以2
                >> 右移  意思是除以2
        
                0000 0000    0
                0000 0001    1
                0000 0010    2
                0000 0011    3
                0000 0100    4
                0000 1000    8
                0001 0000    16
                 */
                System.out.println(16>>2);//運算效率極高
        
            }
        }
        1. 擴充套件運算子:

          package operator;
          
          public class Demo07 {
              public static void main(String[] args) {
                  int a=10;
                  int b=20;
                  a+=b;//a=a+b
                  a-=b;//a=a-b
                  System.out.println(a);
                  //字串連線符  +
                  System.out.println(a+b);
                  System.out.println(""+a+b);
                  System.out.println(a+b+""+a+b);
              }
          }
          1. 條件運算子:

            package operator;
            
            public class Demo08 {
                public static void main(String[] args) {
                    //x ? y : z
                    //如果x==true,則結果為y,否則為z
                    int score=80;
                   String type= score<60?"不及格":"及格";
                    System.out.println(type);
                }
            }