Java基礎(chǔ)知識

1. 運算符

1.1 三目運算符

Java支持三元運算符 ?:

condition?expression1:expression2

        int a=1;
        int b=2;
        //如果a<b成立那么輸出1否則輸出2
        out.println(a<b?1:2);

1.2 位運算符

Java中介紹三個位運算符號,"<<",">>",">>>"

  • "<<" 簡單來說就是擴大操作
  • ">>" 簡單來說就是縮小操作
        int  a=35;
        System.out.println(a>>1);
        //35的二進制為10011,往右移一位為1001,轉(zhuǎn)化為十進制為17
        int  b=35;
        System.out.println(b<<1);
        //35的二進制為10011,往左移一位為100110,轉(zhuǎn)化為十進制為  64+4+2=70

1.3 關(guān)系運算符

Java中除了"<"、">"、"="等還有"&&"、"||"、"&"、"|"

  • "&&"是邏輯與
  • "||"是邏輯或
    &&之所以稱為短路運算是因為,如果&&左邊的表達式的值是 false,右邊的表達式會被直接短路掉,不會進行運算。"||"也同理。
    Eg:
    如果是一個對象為空,使用了"運算符號",會報錯,而"&&"則不會,因為判定為null的時候,后面的djn.length()這個方法就不會執(zhí)行了
    String djn=null;
    String hwl="123";
    if(djn!=null&djn.length()==0){
        //會報錯Exception in thread "main" java.lang.NullPointerException
         System.out.println("錯誤");
     }

2. 關(guān)鍵字

2.1 保留關(guān)鍵字

其中constgoto都是java的保留關(guān)鍵字,但是這兩個是目前 無法使用的關(guān)鍵字,因此有些地方將其稱之為保留字,其實保留字這個詞應該有更廣泛的意義,因為熟悉 C 語言的程 序員都知道,在系統(tǒng)類庫中使用過的有特殊意義的單詞或單詞的組合都被視為保留字。

2.2 static

2.2.1 static方法

static方法一般稱作靜態(tài)方法,由于靜態(tài)方法不依賴于任何對象就可以進行訪問,因此對于靜態(tài)方法來說,是沒有this的。

        private  static String s="123";
        private  String ss="456";

        public  void print(){
            System.out.println(s);
            System.out.println(ss);
            print1();
        }
        
        public static  void print1(){
            System.out.println(s);
            //提示靜態(tài)方法不能調(diào)用非靜態(tài)變量,此處可以結(jié)合JVM內(nèi)存內(nèi)分配來分析
            //因為類的信息是在方法區(qū)的類中有一個專門儲存靜態(tài)變量和方法的區(qū)域,和new出來的對象是兩個地方
            System.out.println(ss);
        }
2.2.2 static變量

static變量也稱作靜態(tài)變量,靜態(tài)變量和非靜態(tài)變量的區(qū)別是:靜態(tài)變量被所有的對象所共享,在內(nèi)存中只有一個副本,它當且僅當在類初次加載時會被初始化。而非靜態(tài)變量是對象所擁有的,在創(chuàng)建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。

2.2.3 static代碼塊

static塊可以置于類中的任何地方,類中可以有多個static塊。在類初次被加載的時候,會按照static塊的順序來執(zhí)行每個static塊,并且只會執(zhí)行一次,而非靜態(tài)代碼塊,非靜態(tài)代碼塊每new一次就執(zhí)行一次。

/**
 * @author Jason always with lulu
 * @date 2018/9/28 下午1:47
 */

import static java.lang.System.*;

public class Person {
    static int i = 3;
    //靜態(tài)代碼塊,按照靜態(tài)塊的順序來
    static {
        System.out.println("我是第一個靜態(tài)代碼塊");
    }
    //非靜態(tài)代碼塊  
    {
        System.out.println("我是第一個非靜態(tài)代碼塊");
    }

    Person() {
        System.out.println("我是構(gòu)造函數(shù)");
    }

    static {
        System.out.println("我是第二個靜態(tài)代碼塊");
    }

    public static void main(String[] args) {
        Person person = new Person();
        System.out.println("-------");
        Person person1 = new Person();
    }
}

運行結(jié)果

2.3 final

final是指不可變的。

  • 用來修飾數(shù)據(jù),包括成員變量和局部變量,該變量只能被賦值一次且它的值無法被改變。對于成員變量來講,我們必須在聲明時或者構(gòu)造方法中對它賦值;
  • 用來修飾方法參數(shù),表示在變量的生存期中它的值不能被改變;
  • 修飾方法,表示該方法無法被重寫;
  • 修飾類,表示該類無法被繼承。

Eg:當在一個新聲明的對象前加了final關(guān)鍵詞時

         final Person  p=new Person("董嘉楠",1);
         Person p1=new Person("何宛潞",1);
         //會報錯,因為加了final關(guān)鍵詞的對象,不能重新指向一個新的對象
         p=p1;
         //不會報錯,可以修改對象中屬性
         p.setAge(2);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容