java的一個二元操做符,相似於==,>,<等操做符。它是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() + " 類的實例"); } } }
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,則不能夠繼承它。
該類不能被繼承:spring
final class Parent { }
表示靜態的意思,用來修飾成員變量和成員方法,能夠造成靜態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("StaticExample static block"); //can access only static variables and methods str="Test"; setCount(2); }
靜態塊只在類裝載入內存時,執行一次。Java不容許在靜態塊中使用非靜態變量。數據結構
const是java預留關鍵字,用於後期擴展用,用法和final類似,不經常使用多線程
在文章的最後做者爲你們整理了不少資料!包括一線大廠Java面試題總結+各知識點學習思惟導+一份300頁pdf文檔的Java核心知識點總結! 這些資料的內容都是面試時面試官必問的知識點,篇章包括了不少知識點,其中包括了有基礎知識、Java集合、JVM、多線程併發、spring原理、微服務、Netty 與RPC 、Kafka、日記、設計模式、Java算法、數據庫、Zookeeper、分佈式緩存、數據結構等等。歡迎關注公衆號:前程有光,領取!