Java基礎語法(語法、位運算、JavaDoc等)


一.注釋、標識符、關鍵字

1.注釋(comments)

  • 平時我們編寫代碼,在代碼量比較少的時候,我們還可以看懂自己編寫的代碼,但是當項目結構一旦復雜起來,我們就需要用到注釋了!

  • 注釋並不會被程序執行,是給我們自己寫代碼的人看的,方便理解

  • 書寫注釋是一個非常好的習慣

  • Java中注釋有三種:

    • 單行注釋(Line comment)
    • 多行注釋(block comment)
    • 文檔注釋(JavaDoc)
  • 找好看的注釋:搜索有趣的代碼注釋

  • 三種注釋的代碼

    • 單行注釋:只能注釋一行,//

      public class Hello {
          public static void main(String[] args) {
              //單行注釋
              //輸出hello一句話!
              System.out.println("hello");
          }
      }
      
    • 多行注釋:可以注釋一段文字,/* */

      public class Hello {
          public static void main(String[] args) {
              //單行注釋
              //輸出hello一句話!
              //多行注釋
              /*
              這是多行注釋
              這是多行注釋
              這是多行注釋
               */
              System.out.println("hello");
         
      
    • JavaDoc:文檔注釋,/** */

      public class Hello {
          public static void main(String[] args) {
              //文檔注釋
              /**
               * @descroption hello
               * @Author zhang
               */
              System.out.println("hello");
          }
      }
      

comments:注釋

Annotations:注解

Bold:粗體

italic:斜體

description:描述

Author:作者

2.標識符

  • Java里面的關鍵字

image-20210820120609881

  • Java所有的組成成分都需要名字,類名、變量名以及方法名都被稱作標識符。(每個人都有自己的名字,程序也是如此,作為程序員,我們就是上帝造物主,我們要給自己創造的程序命名,這也體現了程序來源於生活!)
  • 標識符注意事項
    • 所有的標識符首字符都應該以字母(A-Z或者a-z)、美元符($)、或者下划線(_)開始
    • 首字符之后可以是字母(A-Z或者a-z)、美元符($)、下划線(_)或者數字的任意字符組合
    • 不能使用關鍵字作為變量名或者方法名
    • 標識符是大小寫敏感
    • 合法標識符例子:age、$salary、_value、__1_value
    • 不合法標識符例子:123abc,-salary、#abc
    • 可以使用中文命名,但是一般不推薦怎樣去使用,也不建議使用拼音,原則上命名要見名知意
    • 文件名與類名保持一致,並且類名首字母大寫(默認規范)

二.數據類型

1.語言類型(安全性與性能)

  • 強類型語言:要求變量的使用要嚴格符合規定,所有的變量都必須先定義后才能使用(安全性高,性能低)
  • 弱類型語言:要求變量的使用不需要嚴格符合規定,所有的變量不需要先定義后才能使用(安全性低,性能高)

2.Java的數據類型分為兩大類

  • 基本類型(Primitive type)

    image-20210820125611711

    • 單引號與雙引號:‘ 中 ’(只能為一個字符或一個字,‘中’或者‘A’等);” zahng “(可以有多個字符)

    • 判斷數值類型大小

      image-20210820132708728

    • 八大基本類型代碼:

      public class Demo2 {
          //八大基本類型
              //整數
          byte b1 = 10;
          short b2 = 100;
          int b3 = 1000;
          long b4 = 1000000L;//Long 類型要在后面加一個L,以示區分與上面不同。
              //浮點數
          float c1 = 1.1665F;//float 類型要在后面加一個F,以示區分與double不同。
          double c2 = 1.45466456;
              //字符類型
          char d1 = 'A';//只能寫一個字或一個字符
          //String不是基本類型,屬於引用類型
          String e1 = "zhang";//可以寫多個字符
              //boolean:布爾值,其值只有true與false
          boolean f1 = true;
      }
      
      
  • 引用類型(reference type):除了基本數據類型,都是引用類型!

    image-20210820125645802

3.變量

  • 變量是什么:就是可以變化的量

  • java是一種強類型語言,每個變量都必須聲明其類型

  • Java變量是程序中最基本的存儲單元,其3要素包括:變量名、類型變量和、作用域

    type varName = value
      //數據類型 變量名 = 值;可以使用逗號隔開來聲明多個同類型的變量!
    
  • 注意事項:

    • 每個變量都有類型,類型可以是基本數據類型,也可以是引用類型(String 是引用類型)
    • 變量名必須是合法的標識符
    • 變量聲明是一條完整的語句,因此每一個聲明都必須以分號(;)結束

4.什么是字節

  • 位(bit):是計算機內部數據存儲的最小單位,11101110就是一個八位二進制數,習慣上用小寫的b表示。
  • 字節(byte):是計算機中數據處理的基本單位,習慣上用大寫B來表示
  • 1B(byte,字節)= 8 bit(位),也就是說,如果用二進制表示的話,1字節=2的(8-1)次方 bit(位)
  • 字符:是指計算機中使用的字母、數字、字、和字符
  • 單位換算
    • 1bit表示1位
    • 1byte 表示1個字節 1B = 8b(二進制的8次方)【8-1的次方】
    • 1024B = 1KB
    • 1024KB = 1M
    • 1024 M = 1G
  • 電腦32位於64位的區別
    • 向下兼容,64位的電腦既可以裝64位操作系統也可以裝32位操作系統,反之不行!
    • 位數越高,電腦內存尋址越強,電腦運行速度越快
    • 同時,64位電腦,最多可以支持128G內存,32位電腦,最多支持4G內存,所以如果你想加內存條,64位的理論上最多可以加到128G

三.類型轉換

  • 由於Java是強類型語言,所以要進行某些運算時,需要用到類型轉換。
低---------------------------------->高
  byte,short,char->int-->long-->float-->double
  • 小數優先級大於整數
  • 運算中,不同類型的數據先轉換為同一類型,然后在進行運算
  • 高轉低需要強制轉換,低轉高不需要
強制類型轉換:
  高-----低		int-----byte
自動轉換:
  低------高	int-------double
  • 強制類型轉換(括號里面加上轉換類型)【格式:(類型)變量名】
public class Demo9 {
    public static void main(String[] args) {
        int s1 = 128;
        byte s2 = (byte)s1;//內存溢出
        System.out.println(s2);
    }
}
結果為:
  -128
  • 自動類型轉換(隱式類型轉換)
public class Demo10 {
    public static void main(String[] args) {
        int s1 = 128;
        double s2 = s1;
        System.out.println(s2);
    }
}

結果為:
  128.0
  • 常見錯誤
    • 1.轉換的結果為負數,原因為超出byte的最大正范圍,避免內存溢出
public class Demo9 {
    public static void main(String[] args) {
        int s1 = 128;
        byte s2 = (byte)s1;//內存溢出
        System.out.println(s2);
    }
}
結果為:
  -128

    • 2.不能對boolean值進行轉換,boolean是按位來計算大寫的,而其他的數據類型單位為字節!!!

    • 3.不能把對象類型轉換為不相干的類型(人不能轉換為一本書)

    • 4.在把高容量轉換為低容量的時候,強制轉換

    • 轉換的時候可能存在內存溢出,或者精度問題!(浮點數轉int時,例如23.7變為23、-4.6變為-4,丟失精度)

    • char類型

      public class Demo11 {
          public static void main(String[] args) {
              //字符轉換
              char s1 = 'a';
              int s2 = s1 +1;
              System.out.println(s2);//自動轉換
              System.out.println((char) s2);//強制轉換
          }
      }
      結果為
        98
        b
      
    • 操作比較大的數的時候,注意溢出問題,JDK7新特性,數字之間可以用下划線分割

      public class Demo12 {
          public static void main(String[] args) {
              //數字比較大的時候,注意溢出問題
              //JDK7新特性,數字可以用下划線分割表示
              int s1 = 1_0000_0000;
              int s2 = 100;
              int s3 = s1 * s2;//計算時溢出了
              long s4 = s1 * s2;//計算時按默認的int計算,轉換為long類型之前就已經錯誤了
      
              System.out.println(s3);
              System.out.println(s4);
          }
      }
      結果為:
        451611456564151
        451611456564151
      
      
    • 解決上面問題

      public class Demo12 {
          public static void main(String[] args) {
              //數字比較大的時候,注意溢出問題
              //JDK7新特性,數字可以用下划線分割表示
              int s1 = 1_0000_0000;
              int s2 = 100;
              int s3 = s1 * s2;//計算時溢出了
              long s4 = s1 * s2;//計算時按默認的int計算,轉換為long類型之前就已經錯誤了
              long s5 = s1 * (long)s2;//計算時,先將s2從int轉換為long在進行計算,結果就不會出現問題
              System.out.println(s3);
              System.out.println(s4);
              System.out.println(s5);
          }
      }
      
      

四.變量、常量

1.變量

  • 變量是什么:就是可以變化的量

  • java是一種強類型語言,每個變量都必須聲明其類型

  • Java變量是程序中最基本的存儲單元,其3要素包括:變量名、類型變量和、作用域

    type varName = value
      //數據類型 變量名 = 值;可以使用逗號隔開來聲明多個同類型的變量!
    
  • 注意事項:

    • 每個變量都有類型,類型可以是基本數據類型,也可以是引用類型(String 是引用類型)
    • 變量名必須是合法的標識符
    • 變量聲明是一條完整的語句,因此每一個聲明都必須以分號(;)結束

2.變量作用域

  • 類變量

  • 實例變量

  • 局部變量

    public class Demo13 {
        //類變量
        static int s1 = 10;//類變量必須要以static修飾
        //實例變量
        int s2 = 123;//沒有static修飾為實例變量
        //main方法
        public static void main(String[] args) {
            //局部變量
            int s3 = 4546;//定義在方法里的變量,局部變量
        }
    }
    
    
  • 詳解變量

public class Demo14 {
    //類變量
    static int s3 = 464;
    static {
        //代碼塊,定義屬性,在類加載的時候就加載了
    }
    //實例變量:從屬於對象(當前這個類)
    //如果不自行初始化,有默認值
    //基本數據類型:整數默認值為:0,浮點數為:0.0,字符為:U0000(不顯示),boolean為:false
    //除了基本數據類型,其余的默認值為null
    int age;
    String name;
    char address;
    double cat;
    boolean pet;
    //main方法
    public static void main(String[] args) {
        //局部變量:在當前方法有效,作用域為當前main方法
        //必須聲明和初始值
        int s1 = 11;
        System.out.println(s1);
        //實例變量的調用
        Demo14 s2 = new Demo14();
        System.out.println(s2.age);
        System.out.println(s2.name);
        System.out.println(s2.cat);
        System.out.println(s2.address);
        System.out.println(s2.pet);
        //類變量
        System.out.println(s3);//可以直接調用
    }
    //add方法
    public void  add(){
    }
}
結果為:
  11
  0
  null
  0.0
	//char的默認值
  false

3.常量

  • 常量(constant):初始化(initialize)后不能在改變值!!不會改動的值。
  • 所謂的常量可以理解為一種特殊的變量,它的值被設定后,在程序運行過程中不允許被修改
  • 格式:final 常量名 = 值;final double PI = 3.1415926,變量名默認大寫
  • 常量名一般使用1大寫字符!!
  • 修飾符,不存在先后順序
public class Demo15 {
    static  public  int S = 14;
    public static void main(String[] args) {
        System.out.println(S);
    }
}
輸出結果為:
  14

4.變量的命名規范

  • 所有的變量、方法、類名:見名知意
  • 類成員變量:首字母小寫和駝峰原則:timeLate
  • 局部變量:首字母小寫和駝峰原則
  • 常量:大寫字母和下划線:MAX_VALUE
  • 類名:首字母大寫和駝峰原則:Demo,Hello
  • 方法名:首字母小寫和駝峰原則:add()、run()

五.運算符

  • 運算符

image-20210820164702004

  • cast:轉換
  • 自增、自減,一元運算符++,--
public class Demo1 {
    public static void main(String[] args) {
        //自增自減,++    --
        int s1 = 2;
        int s2 = s1++;//先賦值再加
        int s3 = ++s1;//先加后賦值
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
    }
}
結果為:
  4
  2
  4
  • 邏輯運算
public class Demo2 {
    public static void main(String[] args) {
        //邏輯運算
        //短路運算
        int s1 = 6;
        boolean s2 = (s1<5)&&(s1++<5);//前面為false,后面的s1++就不會執行!!
        System.out.println(s2);
        System.out.println(s1);
    }
}
結果為:
  false
  6
  • 位運算
public class Demo3 {
    public static void main(String[] args) {
        //位運算 0   1
        /*
        A =0011 1100
        B =0000 1101

        A&B:0000 1100   兩者都為1,才為1
        A|B:0011 1101   兩者只要有一個為1,就為1
        A^B(異或);0011 0001   兩個數字一樣為0,不同為1
        ~B:1111  0010    取反

        2*8 = 16       2*2*2*2
        <<  左移
        >>  右移
        0000 0001       1
        0001 0000       16
         */
        System.out.println(2<<3);//上面的例子
        System.out.println(256>>2);
        System.out.println(256>>>2);//與>>結果一樣
    }
}
結果為:
  16
  64
  64
  • 三元運算符
public class Demo4 {
    public static void main(String[] args) {
        //三元運算符
        //x(語句) ? y : s
        //如果x==true,則返回y,否則結果為s
        int s1 = 1;
        int s2 = 1<2 ? 10 : 5;
        System.out.println(s2);
    }
}
結果為:
  10
  • 優先級:()優先級高,建議多使用!!!

六.包機制、javaDoc

1.包

  • 為了更好地組織類,Java提供了包機制,用於區別類名的命名空間
  • 包語句的格式為:package pkg1;
package java.lang
  • 一般利用公司域名倒置作為包名;www.baidu.com com.baidu.www
  • 為了能夠使用某一個包的成員,我們需要在Java程序里面導入該包,使用“import”語句即可完成此功能!
  • import package
import base.Demo14;
import base.*			//導入全部 *表示通配符
  • 單詞:refactor 重構

2.JavaDoc

  • JavaDoc命令是用來聲稱自己的API文檔的
  • 可以加在類上,也可以加在方法上(自動生成一些東西)
package operator;
/**
 * @author zhang
 * @version 1.0
 */
public class Demo4 {
    String name;
    /**
     * 
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception{
        //三元運算符
        //x(語句) ? y : s
        //如果x==true,則返回y,否則結果為s
        int s1 = 1;
        int s2 = 1<2 ? 10 : 5;
        System.out.println(s2);
    }
}

  • 參數信息

    • @author 作者名
    • @version 版本號
    • @since 指明最早使用的JDK版本
    • @param 參數名
    • @return 返回值情況
    • @throws 異常拋出情況
  • 生成JavaDoc文檔

    image-20210820185559217

    • javadoc -encoding UTF-8 -charset UTF-8 Demo4.java
      
    • image-20210820185927377

    • 生成文檔

    • image-20210820190009235

image-20210820190027387

  • IDEA生成幫助文檔

  • image-20210820191536809

    zh_CN				//生成中文文檔
    -encoding UTF-8 -charset UTF-8 	//設置編碼集
    

    image-20210820191611933

image-20210820191655351

生成JavaDoc幫助文檔!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM