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)鍵字
其中const和goto都是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);