Java基礎語法


Java基礎語法

本文主要介紹Java中的一些基本語法,沒學習一門基礎語言,其基本語法是相當重要的,就好像建造房子一樣根基一定要牢固。下面就來價紹Java中的基礎語法。

1、注釋、標識符、關鍵字

注釋

/***
 * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
 * │Esc│   │ F1│ F2│ F3│ F4│ │ F5│ F6│ F7│ F8│ │ F9│F10│F11│F12│ │P/S│S L│P/B│  ┌┐    ┌┐    ┌┐
 * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘  └┘    └┘    └┘
 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
 * │~ `│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ BacSp │ │Ins│Hom│PUp│ │N L│ / │ * │ - │
 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
 * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│ | \ │ │Del│End│PDn│ │ 7 │ 8 │ 9 │   │
 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
 * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter  │               │ 4 │ 5 │ 6 │   │
 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤     ┌───┐     ├───┼───┼───┼───┤
 * │ Shift  │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│  Shift   │     │ ↑ │     │ 1 │ 2 │ 3 │   │
 * ├─────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ E││
 * │ Ctrl│    │Alt │         Space         │ Alt│    │    │Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │←─┘│
 * └─────┴────┴────┴───────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
 */

————————————————
/***
 *                    _ooOoo_
 *                   o8888888o
 *                   88" . "88
 *                   (| -_- |)
 *                    O\ = /O
 *                ____/`---'\____
 *              .   ' \\| |// `.
 *               / \\||| : |||// \
 *             / _||||| -:- |||||- \
 *               | | \\\ - /// | |
 *             | \_| ''\---/'' | |
 *              \ .-\__ `-` ___/-. /
 *           ___`. .' /--.--\ `. . __
 *        ."" '< `.___\_<|>_/___.' >'"".
 *       | | : `- \`.;`\ _ /`;.`/ - ` : | |
 *         \ \ `-. \_ __\ /__ _/ .-` / /
 * ======`-.____`-.___\_____/___.-`____.-'======
 *                    `=---='
 *
 * .............................................
 *          佛祖保佑             永無BUG
 */

————————————————

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

注釋並不會被執行,是給我們寫代碼的人看的

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

平時寫代碼一定要注意規范。

關於代碼上面的注釋,大家可以在網上搜索有趣的代碼注釋,有很多有趣的注釋。

Java中的注釋有三種:

  • 單行注釋

    • //單行注釋 只能注釋一行
      
  • 多行注釋

    • /*多行注釋*/ 可以注釋多行
      
  • 文檔注釋

    • /**文檔注釋*/ 也稱為JavaDOC /** */ 可以加參數
      

更改注釋顏色:

File->settings->Editor->ColorScheme->java->Comments

就可以更改三種注釋的顏色了。

public class Hello {
    public static void main(String[] args) {
        //單行注釋  //開頭
        //輸出一個Hello World!
        System.out.println("Hello World!");
        /*多行注釋
        我是多行注釋
        */
        /**
         * 文檔注釋
         * @Description Hello //描述
         * @Author 作者
         **/
    }
}

標識符

關鍵字

Java中所有的組成部分都需要名字。類名、變量名以及方法名都被稱為標識符。

abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while

這些關鍵字是不能用來,給變量、方法起名字的!

標識符注意點

  • 所有的標識符都應該以字母(A-Z或者a-z),美元($)、或者下划線(_)開始

  • 首字符之后可以是字母(A-Z或者a-z),美元符($)、下划線(_)或者數字的任何字符組合

  • 不能使用關鍵字作為變量名

  • 標識符是大小寫敏感的,也就是嚴格區分大小寫

  • 合法標識符舉例:age、$salary、_value、__1_value

  • 非法標識符舉例:123abc、-salary、#abc

    • public static void main(String[] ages){
          String 王者榮耀="王者榮耀";//可以使用但不推薦
          System.out.print(王者榮耀);
      }
      
  • 可以使用中文命名,但是一般不建議這樣使用,也不建議是用拼音,很low!!

2、數據類型

Java是強類型語言

​ 與之相同的還有C/C++都是強類型語言,強類型語言要求變量的使用要嚴格符合規定,所有的變量都必須先定義后才能使用。

強類型語言的好處就是安全性高,必須定義之后才能使用。缺點就是速度相對來說略有遜色。

public static void main(String[] ages){
    String a;
    System.out.print(a);//這樣書寫就會報錯,提示必須給a初始化一個值
}

-----
public static void main(String[] ages){
    String a=10;//同樣會報錯,因為String為字符串類型,不能賦值int類型的數據。
    System.out.print(a);
}
-----
    //正確寫法,數據類型要對應
public static void main(String[] ages){
    String a ="Hello World";
    System.out.print(a);
}

弱類型語言:

​ VB、JS都屬於弱類型語言,它與強類型語言正好相反,速度相對較快,但是安全性稍微不足。

Java的數據類型分為兩個大類:

  1. 基本類型(primitive type)
  2. 引用類型(reference type)

基本類型又分為:

  • 數值類型
    • 整數類型
      • byte占一個字節范圍:-128~127
      • short占兩個字節范圍:-32768~32767
      • int占四個字節范圍:-2147483648~2147483647
      • long占八個字節范圍:-9223372036854775808~9223372036854775807
    • 浮點類型
      • float占四個字節
      • double占八個字節
    • 字符類型char占兩個字節
  • Boolean類型:占一位其值只有true和false兩個

引用數據類型:

  • 接口
  • 數組
public static void main(String[] ages){
    //八大基本數據類型
    int num1 = 10;//最常用
    byte num2 = 10;
    short num3 = 30;
    long num4=100000L;//Long類型要在數字的后面加上L,來區分
    //小數,浮點數
    float num5 = 40.1F;//float類型也需要在數字后面加上F來與double區分,
    double num6 = 40.11;
    
    
    //字符類型
    char name = 'A';//只能寫一個字符,如果寫多個就會報錯,一般用單引號括起來
    
    //String 不是關鍵字,是類
    String str = "你好!";//可以存放字符串類型
    
    //boolean 布爾值:是/非
    boolean flag = true;
    boolean flag = false;
}

如果說你不懂什么是字節,這里九好評好看看吧!

位(bit):是計算機 內部數據 存儲的最小單位,11001100是一個八位二進制數。

字節(byte):是計算機中 數據處理 的基本單位,習慣上用大寫B來表示,1B(byte,字節) = 8 bit(位)

字符:是指計算機中使用的字母、數字、字和符號

1bit表示1位

1Byte表示一個字節 1B = 8b。

1024B= 1KB

1024KB= 1M

1024M = 1G

拓展:

public class Dome01 {
    public static void main(String[] args) {
        //整數拓展:進制 二進制0b 十進制 八進制0 十六進制0x
        int i = 10;
        int i2 = 010;//八進制0
        int i3 = 0x10;//十六進制0x  0~9 A~F 
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        //=====================================
        //浮點數擴展 銀行業務如何標識?錢
        //BigDecimal 數學工具類
        //=====================================
        //float 有限 離散 舍入誤差 大約 接近但不等於
        //double
        //最好完全不要使用浮點數進行比較
        //最好完全不要使用浮點數進行比較
        //最好完全不要使用浮點數進行比較
        
        float f = 0.1f;//0.1
        double d = 1.0/10;//0.1
        
         System.out.println(f==d);//輸出為false
         System.out.println(f);//0.1
         System.out.println(d);//0.1
        float d1 = 23232332323232f;
        float d2 = d1 + 1;
         System.out.println(d1==d2);//true
        
        //=====================================
        //字符擴展 
        //=====================================
        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字節 0-65536 Excel 最長只有 2的16次方 
        char c3='\u0061';
        System.out.println(c3);//a
        //轉義字符
        //\t 制表符
        //\n 換行
        // ··· 自行查找
        String sa = new String("Hello World");
        String sb = new String("Hello World");
        System.out.println(sa==sb);//false
        
        String sc = "Hello World";
        String sd = "Hello World";
        System.out.println(sc==sd);//true
        //對象 從內存分析
        
        //布爾值擴展
        boolean flag = true;
        if(flag==true){}//if為判斷條件如果的意思,后面細講
        if(flag){}這兩行代碼相同
         //Less is More! 代碼要精簡易讀
    }
}

3、類型轉換

由於Java為強類型語言,所以要進行有些運算的時候,需要用到類型轉換。

低<--------------------------------------------->高
    byte,short,char->int->long->float->double

小數的優先級一定大於整數!所以float大於long

運算中,不同類型的數據先轉化為同一類型,然后進行運算。

問題:

public class Demo05{
    public static void main(String[] ages){
        int i = 128;
        byte b = (byte)i;//強制類型轉換,內存溢出
        
        //強制轉換 格式(類型)變量名;
        
        System.out.println(b);//輸出-128?
        //這是因為byte本身最高只能為127,賦值128后出現溢出現象
    }
}

強制類型轉換

格式:(類型)變量名

由高到低 強制類型轉換 (類型)變量名 高--低

自動類型轉換

自動轉換 低--高

public class Dome01{
    public static void main(String[] ages){
        int i = 128;
        double d = i;//自動類型轉換 低--高
        System.out.println(d);
        /*
        注意:
        1.不能對布爾值進行轉換
        2.不能把對象類型轉換為不相干的類型,
        3.再把大容量轉化為低容量的時候--強制轉換
        4.轉換的時候可能會出現內存溢出,或精度問題!
        5.
        */
        //精度問題
        System.out.println((int)23.7);//23
        System.out.println((int)-45.89);//45
        //==============================
        char c = 'a';
        int d = c+1;
        Systerm.out.println(d);//98
        Systerm.out.println((char)d);//b
    }
}

溢出問題

public class Dome02{
    public static void main(String[] ages){
        //操作比較大的數的時候,注意溢出問題
        //JDK7的新特性,數字之間可以使用下划線分割,為了更方便的觀察
        int money=10_0000_0000;//下滑線並不會被輸出
        System.out.println(money);
        int years = 20;
        int total = money*years;
        Systerm.out.println(total);//-1474836480,出現溢出現象,超過了int的最大數值
        //即便是在計算的時候轉換為long,依然會出現錯誤
        long total2 = money*years;//默認是int,在轉換之前已經溢出。
        //解決方案,在計算前就改變類型
        long total3 = money*((long)years);
        Systerm.out.println(total3);//正確輸出
        
        //另外 在寫long數據類型的時候,后綴的L盡量大寫,以防認為是1/l
    }
}

4、變量、常量

變量

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

變量就是只內存空間的一小個位置,我們創建變量就好像在內存空間中申請了一小塊位置空間,而空間中存放的東西我們是不確定的。

Java是一種強類型語言,每隔變量都必須生命其類型。

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

type varName [=value] [{,varName[=value]}];
//數據類型 變量名 = 值;可以使用逗號隔開來聲明多個同類型變量。但是不建議。

注意事項:

  • 每個變量都有類型,類型可以是基本類型,也可以是引用類型(如:String)。
  • 變量名必須是合法的標識符。
  • 變量聲明是一條完整的語句,因此每一個聲明都必須以分號結束。
public class Dome03{
    public static void main(String[] ages){
        //int a,b,c;不建議
        //int a=0,b=2,b=3;//這種寫法程序可讀性較差,建議分開來寫
        String name="Hello";
        char x = 'x';
        double pi = 3.14;
    }
}

變量的作用域

  1. 類變量
    1. 要求需要加上關鍵詞static。在方法之外,類之內
  2. 實例變量
    1. 沒有關鍵詞,在方法之外,類之內
  3. 局部變量
public class Dome03{
    //屬性:變量
    static int allClicks=0;//類變量
    
    String str="Hello World";//實例變量:從屬於對象;
    //如果不進行初始化,會輸出這個類型的默認值
    String name;//默認值null
    int age;//默認值 0
    //布爾值默認為false
    //除了基本類型,其余的都是null
    
    //main:方法
    public static void main(String[] ages){
        int i = 0;//局部變量:必須聲明和初始值
        
        //這里不需要了解很深后面會講解。
        //變量類型 變量名字 = new Dome03();
        Dome03 dome03 = new Dome03();
        //dome03.name = "Hello";
        Sytem.out.println(dome03.name);
        
        //類變量可以直接在,本類的方法中使用
        System.out.println(allClicks);//0
    }
    
    //其他方法
    public void add(){
        //這里無法使用 i輸出,需要重新定義
    }
}

常量

常量(Constant):初始化(initialize)后不能在改變值!不會變動的值;

常量在定義的時候要使用關鍵字 final

所謂常量可以理解成一種特殊的變量,它的值被設定后,在程序運行過程中不允許修改。

final 常量名 = 值

final double PI = 3.14;

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

public class dome04{
    //修飾符,不存在先后順序
    //final static double PI =3.14;也可以
    static final double PI =3.14;
    public static void main(String[] ages){
        System.out.println(PI);
    }
}

變量的命名規范:

  1. 所有變量、方法、類名:見名知意
  2. 類成員變量:首字母小寫和駝峰原則:mouthSalary 除了第一個單詞以外,后面的單詞第一個字母大寫
  3. 局部變量:首字母小寫和駝峰原則
  4. 常量:大寫字母和下划線:MAX_VALUE
  5. 類名:首字母大寫和駝峰原則:Max,GoodMan
  6. 方法名:首字母小寫和駝峰原則:run(),runRun()

5、運算符

Java語言支持如下運算符:

  • 算數運算符:+,-,*,/,%,++,--
    • %取余原運算,在Java中叫做模運算
  • 賦值運算符:=
  • 關系運算符:>,<,>=,<=,==,!= instanceof
    • instanceof 到面向對象的時候,再深究
  • 邏輯運算符:&&,||,!
  • 位運算符:&,|,^,~,>>,<<,>>>(了解)
  • 條件運算符:?:
    • 也叫三目運算符,后面在講,先做了解
  • 擴展賦值運算符:+=,-=,*=,/=
//運算符 operator
public class Dome01{
    public static void main(String[] ages){
        // 二元運算符
        //IDEA中快捷鍵:ctrl+d 復制當前行到下一行
        int a = 10;
        int b = 20;
        int c = 30;
        int d = 40;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);//因該等於0.5但是輸出為0,這是因為數據類型為int型,會舍去小數部分,所以為0
        
        //==============================
        long a = 1212312341L;
        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
        //類型轉換:byte,short,char用運算符運算后自動轉型int類型
        
        //============================
        //關系運算符,返回結果為Boolean類型
        int a = 10;
        int b = 20;
        int c = 21;
        
        //取余也叫做模運算
        System.out.println(c%a);//結果為1,余數為1
        
        System.out.println(a>b);//false
        System.out.println(a<b);//true
        System.out.println(a==b);//false
        System.out.println(a!=b);//true
        
        
        //=============================
        //++ -- 自增,自減 一元運算符
        //a++ = a = a+1 //先運算,a在加一 --相同
        //++a  //a先加1,在運算 --相同
        int a = 3;
        int b = a++; //先給B賦值,在自增
        System.out.println(a);//輸出為4
        int c = ++a;//先自增,在給c賦值
        System.out.println(a);//5 
        System.out.println(b);//3
        System.out.println(c);//5 
        
        //=======================
        //冪運算 2^3 2*2*2 = 8
        //但是Java中沒有冪運算,也就是沒有^這個符號
        //可以是用Math數學工具類,其中包含許多數學方法可以直接使用
        double pow = Math.pow(2,3);
        System.out.println(pow);//8.0
    }
}

建議一定要多練習兩次++--的操作達到數來能掌握。

剩下的幾種運算符:

邏輯運算

public class Dome04{
    public static void main(String[] ages){
        //邏輯運算符 與(and) 或(or) 非(取反)
        boolean a = true;
        boolean b = false;
        System.out.println(a&&b);//false 有假為假 ,只有連個都為真的時候才為真
        System.out.println(a||b);//true 有真為真 ,只有都為假的時候才為假
        System.out.println(!(a&&b));//true //取反,假的變成真,或者真的變成假
        
        //當a&&b判斷 ,a為假,b為真,當判斷出a為假之后程序就會短路,也就是不在判斷b的真假,直接執行嚇一跳指令。
        //驗證
        int c = 5;
        boolean d = (c<<4)&&(c++<4);
        System.out.println(c);//5 //如果執行了后面的語句,c因該輸出的為6
        System.out.println(d);//false
    }
}

位運算

public class Dome01{
    public static void main(String[] ages){
        /*
        A  = 0011 1100
        B  = 0000 1101
        
        A&B 按位與運算 0000 1100	有0為0
        A|B 按位或運算 0011 1101	有1為1
        A^B 按位異或運算 0011 0001 相同為0不同為1
        ~B 按位取反	 1111 0010	原來為1取反后為0,原來為0后來為1
        
        2*8 = 16 2*2*2*2
        效率極高
        <<左移	>>右移
        <<	相當於數字*2
        >>	相當於數字/2
        0000 0000
        0000 0001	1
        0000 0010	2
        0000 0011	3
        0000 0100	4
        ··· ···
        0000 1000	8
        0001 0000	16
        */
        System.out.println(2<<3);//輸出16
    }
}

擴展運算符

public class Dome02{
    public static void main(String[] ages){
        int a = 10;
        int b = 20;
        
        a += b;//先當與a=a+b;
        a -= b;//相當於a=a-b;
        System.out.println(a);//30
        
        //字符串連接符 +
        System.out.println(a+b);//用作字符運算
        System.out.println(""+a+b);//輸出1020
        //如果在加號前邊出現""字符類型,那么將會將字符串后的,所有運算數據轉化為字符串類型進行連接,前面的運算按照正常進行。
        System.out.println(a+b+"");//30
        //運算過程是從左向右
        
        //=================================
        //三元運算符//
        //必須掌握,實際開發中經常使用
        //x ? y : z
        //如果x==true,結果為y,否則結果為z
        
        int score = 80;
        String type = socre < 60? "不及格":"及格了";
        System.out.println(type);//輸出及格
    }
}

6、包機制、JavaDoc

為了更好地組織類,Java提供了包機制,用於區別類名的命名空間。

包的本質:就是文件夾!

包語句的語法格式為:

package pkg1[. pkg2[. pkg3...]];

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

為了能夠使用某一個包的成員,我們需要在Java程序中明確導入該包。使用import完成此功能

import package1[.package2...].(classname|*);

導入包的時候的快捷鍵:ALT+回車

總結:

  • 定義包用package
  • 導入包用import
  • 當一個包中有許多類,可以直接通過*通配符全部導入
    • 例如:com.baidu.www.*

推薦看完這章后,去看一下阿里巴巴開發手冊!,百度搜索就行

JavaDoc

傳送門:jdk幫助文檔

Javadoc命令是用來生成自己API文檔的

參數信息

  • @author 作者名
  • @version 版本號
  • @since 指名需要最早使用的jdk版本
  • @param 參數名
  • @return 返回值情況
  • @throws 異常拋出情況
//加載類上面就是類的注釋
/**
 * @author zhao
 * @version 1.0
 * @since 15
 *
 */
public class Dome02 {
    String name;
	//加載方法上面就是方法的注釋
    /**
     * @author zhao
     * @param name
     * @return
     * @throws Exception
     */
    public String test(String name) throws Exception{
        return name;
    }
}

在IDEA中打開對應的類的文件夾方式:

生成自己Javadoc -API文檔的方法,首先一定是在寫代碼的時候就已經寫了文檔注釋:

通過命令行生成doc文檔:

  1. 進入對應文檔所在的文件夾
  2. 保存在路勁在cmd中打開
  3. 在cmd中輸入javadoc -encoding UTF-8 -charset UTF-8 文件名.java回車即可
    1. 其中encoding為編碼格式,為了使中文顯示正常,不出現亂碼格式
    2. charset 字符編碼格式
  4. 回到對應文件夾查看即可。

通過IDEA生成Javadoc文檔的方法:

  1. 說明:

    1. 選擇的整個項目還是模塊還是單個文件
    2. 文檔輸出路徑
    3. Locale選擇地區,這個決定了文檔的語言,中文就是zh_CN
    4. 傳入JavaDoc的參數,一般寫法 -encoding UTF-8 -charset UTF-8 -windowtitle “文檔HTML頁面標簽的標題” -link http://docs.Oracle.com/javase/7/docs/api

學習編程一定要學會,面向百度編程!!


免責聲明!

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



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