transient
instanceof
java的一個(gè)二元操作符,類似于==,>,<等操作符。它是java保留關(guān)鍵字,它的作用是測試它左邊的對象是否是它右邊的類的實(shí)例,返回布爾數(shù)據(jù)類型。
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 類的實(shí)例");
} else if (o instanceof ArrayList) {
System.out.println("對象是 java.util.ArrayList 類的實(shí)例");
}else{
System.out.println("對象是 " + o.getClass() + " 類的實(shí)例");
}
}
}

volatile
synchronized
final類
final是java中的一個(gè)關(guān)鍵字,它所表示的是“這部分是無法修改的”。
final可以定義:變量,方法,類
final變量:如果將變量設(shè)置為final,則不能更改final變量的值(它將是常量)
一旦final變量被定義后就無法進(jìn)行修改
class Test{
final String name = "Hollis";
}
final方法:如果任何方法為final,就不能覆蓋它
當(dāng)我們定義此類的子類時(shí),無法覆蓋其name方法,會(huì)編譯失敗。
class Parent {
final void name() {
System.out.println("Hollis");
}
}
final類:
若把任何一個(gè)類聲明為final,則不可以繼承它。
該類不能被繼承:
final class Parent {
}
static
表示靜態(tài)的意思,用來修飾成員變量和成員方法,可以形成靜態(tài)static代碼塊。
靜態(tài)變量:
用static表達(dá)變量級(jí)別,一個(gè)類中的靜態(tài)變量,不屬于類的對象或?qū)嵗?。因?yàn)殪o態(tài)變量和所有對象實(shí)例共享,因此它們不具有線程安全性。
通常,靜態(tài)變量常用final關(guān)鍵字修飾,表示通用資源或可以被所有對象所使用。如果靜態(tài)變量沒被私有化,可用 類名.變量名 的方式使用。
//static variable example
private static int count;
public static String str;
public class Test {
String name = "Hello";//非靜態(tài)變量
static String hobby = "World";//靜態(tài)變量
//在靜態(tài)方法中調(diào)用靜態(tài)變量和非靜態(tài)變量
public static void print() {
//System.out.println(name);//會(huì)報(bào)錯(cuò)
System.out.println(hobby);
}
但是靜態(tài)方法中調(diào)用非靜態(tài)變量,可以通過創(chuàng)建類的對象,然后通過對象來訪問非靜態(tài)變量:
public class Test {
String name = "Hello";//非靜態(tài)變量
static String hobby = "World";//靜態(tài)變量
//在靜態(tài)方法中調(diào)用靜態(tài)變量和非靜態(tài)變量
public static void print() {
Test test1=new Test();//創(chuàng)建類對象
System.out.println(test1.name);//通過對象來實(shí)現(xiàn)在靜態(tài)方法中調(diào)用非靜態(tài)變量
System.out.println(hobby);
}
}
靜態(tài)方法:
與靜態(tài)變量一樣,靜態(tài)方法屬于類不是實(shí)例。
一個(gè)靜態(tài)方法只能使用靜態(tài)變量和調(diào)用靜態(tài)方法,通常靜態(tài)方法常用于想給其他的類使用而不需要?jiǎng)?chuàng)建實(shí)例。例如:Collections class(類集合)
java包裝類和實(shí)用類包含很多靜態(tài)方法,main方法就是java程序入口點(diǎn),是靜態(tài)方法。
靜態(tài)方法中可以通過類名.靜態(tài)方法名來調(diào)用,但不能直接調(diào)用非靜態(tài)方法,需要通過對象來訪問非靜態(tài)方法
public class Test {
//非靜態(tài)方法
public void test(){
System.out.println("我是非靜態(tài)方法test!");
//Test.sayHello("Test");//調(diào)用靜態(tài)方法編譯通過
}
//靜態(tài)方法2
public static void test2(){
System.out.println("我是靜態(tài)方法test2!");
}
//在靜態(tài)方法中調(diào)用非靜態(tài)方法與靜態(tài)方法
public static void test3(){
System.out.println("我是靜態(tài)方法test3!");
Test.test2();
Test testA=new Test();
testA.test();
}
public static void main(String[] args) {
Test.test3();
}
}
/**
* output:
*我是靜態(tài)方法test3!
*我是靜態(tài)方法test2!
*我是非靜態(tài)方法test!
*/
并且非靜態(tài)方法中可以通過類名.靜態(tài)方法名來調(diào)用,但不能直接調(diào)用非靜態(tài)方法,需要通過對象來訪問非靜態(tài)方法
靜態(tài)代碼塊:
java靜態(tài)代碼塊是一組指令在類裝載時(shí)在內(nèi)存中用java ClassLoader執(zhí)行。
靜態(tài)塊常用于初始化類的靜態(tài)變量,大多用于在類裝載時(shí)候創(chuàng)建靜態(tài)資源。
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);
}
靜態(tài)塊只在類裝載入內(nèi)存時(shí),執(zhí)行一次。Java不允許在靜態(tài)塊中使用非靜態(tài)變量。
const
const是java預(yù)留關(guān)鍵字,用于后期擴(kuò)展用,用法和final相似,不常用
最后
在文章的最后作者為大家整理了很多資料!包括一線大廠Java面試題總結(jié)+各知識(shí)點(diǎn)學(xué)習(xí)思維導(dǎo)+一份300頁pdf文檔的Java核心知識(shí)點(diǎn)總結(jié)! 這些資料的內(nèi)容都是面試時(shí)面試官必問的知識(shí)點(diǎn),篇章包括了很多知識(shí)點(diǎn),其中包括了有基礎(chǔ)知識(shí)、Java集合、JVM、多線程并發(fā)、spring原理、微服務(wù)、Netty 與RPC 、Kafka、日記、設(shè)計(jì)模式、Java算法、數(shù)據(jù)庫、Zookeeper、分布式緩存、數(shù)據(jù)結(jié)構(gòu)等等。
歡迎關(guān)注公眾號(hào):前程有光,領(lǐng)取!