深度盤點一下java中的各種關鍵字,身爲程序員的你都知道嗎? transient volatile const 最後

transient

instanceof

java的一個二元操作符,類似於==,>,<等操作符。它是java保留關鍵字,它的作用是測試它左邊的對象是否是它右邊的類的實例,返回布爾數據類型。

package com.wzc.dao;

import java.util.ArrayList;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String[] args) {
        Vector v = new Vector();
        displayObjectClass(v);

    }

    public static void displayObjectClass(Object o) {
        if (o instanceof Vector) {
            System.out.println("對象是 java.util.Vector 類的實例");
        } else if (o instanceof ArrayList) {
            System.out.println("對象是 java.util.ArrayList 類的實例");
        }else{
                System.out.println("對象是 " + o.getClass() + " 類的實例");
            }
        }
    }

volatile

synchronized

final類

final是java中的一個關鍵字,它所表示的是“這部分是無法修改的”。
final可以定義:變量,方法,類
final變量:如果將變量設置爲final,則不能更改final變量的值(它將是常量)
一旦final變量被定義後就無法進行修改

class Test{
     final String name = "Hollis";
 
}


final方法:如果任何方法爲final,就不能覆蓋它
當我們定義此類的子類時,無法覆蓋其name方法,會編譯失敗。

class Parent {
    final void name() {
        System.out.println("Hollis");
    }
}


final類:

若把任何一個類聲明爲final,則不可以繼承它。
該類不能被繼承:

final class Parent {
    
}

static

表示靜態的意思,用來修飾成員變量和成員方法,可以形成靜態static代碼塊。
靜態變量:
用static表達變量級別,一個類中的靜態變量,不屬於類的對象或實例。因爲靜態變量和所有對象實例共享,因此它們不具有線程安全性。
通常,靜態變量常用final關鍵字修飾,表示通用資源或可以被所有對象所使用。如果靜態變量沒被私有化,可用 類名.變量名 的方式使用。

//static variable example
private static int count;
public static String str;


public class Test {
    String name = "Hello";//非靜態變量
    static String hobby = "World";//靜態變量
    
    //在靜態方法中調用靜態變量和非靜態變量
    public static void print() {
        //System.out.println(name);//會報錯
        System.out.println(hobby);
    }


但是靜態方法中調用非靜態變量,可以通過創建類的對象,然後通過對象來訪問非靜態變量:


public class Test {
    String name = "Hello";//非靜態變量
    static String hobby = "World";//靜態變量
    
    //在靜態方法中調用靜態變量和非靜態變量
    public static void print() {
        Test test1=new Test();//創建類對象
        System.out.println(test1.name);//通過對象來實現在靜態方法中調用非靜態變量
        System.out.println(hobby);
    }
}
 

靜態方法:
與靜態變量一樣,靜態方法屬於類不是實例。
一個靜態方法只能使用靜態變量和調用靜態方法,通常靜態方法常用於想給其他的類使用而不需要創建實例。例如:Collections class(類集合)
java包裝類和實用類包含很多靜態方法,main方法就是java程序入口點,是靜態方法。
靜態方法中可以通過類名.靜態方法名來調用,但不能直接調用非靜態方法,需要通過對象來訪問非靜態方法

public class Test {
    //非靜態方法 
    public void test(){
        System.out.println("我是非靜態方法test!");
        //Test.sayHello("Test");//調用靜態方法編譯通過
    }
    //靜態方法2
    public static void test2(){
        System.out.println("我是靜態方法test2!");
    }
    //在靜態方法中調用非靜態方法與靜態方法
    public static void test3(){
        System.out.println("我是靜態方法test3!");
        Test.test2();
        Test testA=new Test();
        testA.test();
    }
    
    public static void main(String[] args) {
        Test.test3();
    }
}
/**
 * output:
 *我是靜態方法test3!
 *我是靜態方法test2!
 *我是非靜態方法test!
*/

並且非靜態方法中可以通過類名.靜態方法名來調用,但不能直接調用非靜態方法,需要通過對象來訪問非靜態方法
靜態代碼塊:
java靜態代碼塊是一組指令在類裝載時在內存中用java ClassLoader執行。
靜態塊常用於初始化類的靜態變量,大多用於在類裝載時候創建靜態資源。

static{
    //can be used to initialize resources when class is loaded
    System.out.println(&quot;StaticExample static block&quot;);
    //can access only static variables and methods
    str=&quot;Test&quot;;
    setCount(2);
}


靜態塊只在類裝載入內存時,執行一次。Java不允許在靜態塊中使用非靜態變量。

const

const是java預留關鍵字,用於後期擴展用,用法和final相似,不常用

最後

在文章的最後作者爲大家整理了很多資料!包括一線大廠Java面試題總結+各知識點學習思維導+一份300頁pdf文檔的Java核心知識點總結! 這些資料的內容都是面試時面試官必問的知識點,篇章包括了很多知識點,其中包括了有基礎知識、Java集合、JVM、多線程併發、spring原理、微服務、Netty 與RPC 、Kafka、日記、設計模式、Java算法、數據庫、Zookeeper、分佈式緩存、數據結構等等。
歡迎關注公衆號:前程有光,領取!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章