標(biāo)識符
定義
- 給包,類,方法,變量起名字的符號。
組成規(guī)則
- 標(biāo)識符由字母、數(shù)字、下劃線、美元符號組成。
命名原則:見名知意
- 包名:全部小寫,多級包用.隔開。
舉例:com.jourwon - 類、接口:一個單詞首字母大寫,多個單詞每個單詞的首字母大寫。
舉例:Student,Car,HelloWorld - 方法和變量:一個單詞首字母小寫,多個單詞從第二個單詞開始每個單詞的首字母大寫。
舉例:age,maxAge,show(),getAge() - 常量:如果是一個單詞,所有字母大寫,如果是多個單詞,所有的單詞大寫,用下劃線區(qū)分每個單詞。
舉例:DATE,MAX_AGE - 項目名:全部用小寫字母,多個單詞之間用橫桿-分割。
舉例:demo,spring-boot
注意事項
- 不能以數(shù)字開頭
- 不能是Java中的關(guān)鍵字
- Java標(biāo)識符大小寫敏感,長度無限制
- 標(biāo)識符不能包含空格
關(guān)鍵字
定義
- 被Java語言賦予了特殊含義,用作專門用途的字符串(單詞),這些關(guān)鍵字不能用于常量、變量、和任何標(biāo)識符的名稱。
Java關(guān)鍵字(Java 8版本)

Java關(guān)鍵字(Java 8 以后版本)

注意事項
- true,false和,null看起來像關(guān)鍵字,但它們實際上是文字; 您不能在程序中將它們用作標(biāo)識符。
注釋
定義
- 用于解釋說明程序的文字
分類
- 單行注釋
格式: // 注釋文字 - 多行注釋
格式: /* 注釋文字 */ - 文檔注釋
格式:/** 注釋文字 */
作用
- 在程序中,尤其是復(fù)雜的程序中,適當(dāng)?shù)丶尤胱⑨尶梢栽黾映绦虻目勺x性,有利于程序的修改、調(diào)試和交流。注釋的內(nèi)容在程序編譯的時候會被忽視,不會產(chǎn)生目標(biāo)代碼,注釋的部分不會對程序的執(zhí)行結(jié)果產(chǎn)生任何影響。
注意事項
- 多行和文檔注釋都不能嵌套使用。
訪問修飾符
定義
- Java中,可以使用訪問修飾符來保護對類、變量、方法和構(gòu)造方法的訪問。Java 支持 4 種不同的訪問權(quán)限。
分類
- private : 在同一類內(nèi)可見。使用對象:變量、方法。 注意:不能修飾類(外部類)
- default (即缺省,什么也不寫,不使用任何關(guān)鍵字): 在同一包內(nèi)可見,不使用任何修飾符。使用對象:類、接口、變量、方法。
- protected : 對同一包內(nèi)的類和所有子類可見。使用對象:變量、方法。 注意:不能修飾類(外部類)。
- public : 對所有類可見。使用對象:類、接口、變量、方法
訪問修飾符圖

分隔符
定義
- 空格、逗號、分號以及行結(jié)束符都被稱為分隔符,規(guī)定任意兩個相鄰標(biāo)識符、數(shù)字、保留字或語句之間必須至少有一個分隔符,以便程序編譯時能夠識別。
分類
- ; 分號 用來終止一個語句
- {} 花括號、大括號 用來包括自動初始化的數(shù)組的值,也用來定義程序塊、類、方法以及局部范圍
- [] 方括號、中括號 用來聲明數(shù)組的類型,也用來表示撤消對數(shù)組值的引用
- , 逗號 在變量聲明中,區(qū)分變量說明的各個變量。在for控制語句中,用來將圓括號內(nèi)的語句連接起來
- . 原點 用來將軟件包的名字與它的子包或類分隔。也用來將引用變量與變量或方法分隔
- () 圓括號 在定義和調(diào)用方法時用來容納參數(shù)表。在控制語句或強制類型轉(zhuǎn)換組成的表達(dá)式中用來表示執(zhí)行或計算的優(yōu)先權(quán)
注意事項
- 必須都是半角下的英文符號。
轉(zhuǎn)義字符
定義
- 轉(zhuǎn)義字符是一種特殊的字符常量。轉(zhuǎn)義字符以反斜線""開頭,后跟一個或幾個字符。轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義,故稱“轉(zhuǎn)義”字符。
常見轉(zhuǎn)義字符表

Java中需要轉(zhuǎn)義的字符
- 在Java中,不管是String.split(),還是正則表達(dá)式,有一些特殊字符需要轉(zhuǎn)義,這些字符是
( [ { / ^ - $ | } ] ) ? * + .
轉(zhuǎn)義方法為字符前面加上"\",這樣在split、replaceAll時就不會報錯。不過要注意,String.contains()方法不需要轉(zhuǎn)義。
空行
空白行,或者有注釋的行,Java編譯器都會忽略掉
進(jìn)制
定義
- 進(jìn)制也就是進(jìn)位計數(shù)制,是人為定義的帶進(jìn)位的計數(shù)方法。
十進(jìn)制是逢十進(jìn)一,十六進(jìn)制是逢十六進(jìn)一,二進(jìn)制就是逢二進(jìn)一,以此類推,x進(jìn)制就是逢x進(jìn)位。
常用進(jìn)制類型
-
二進(jìn)制
計算機底層都是使用二進(jìn)制進(jìn)行存儲以及運算
0b****;(以0b或者0B開始,*表示0或1)比如:010101
-
原碼、反碼、補碼
-
原碼
- 原碼:將一個整數(shù)轉(zhuǎn)換成二進(jìn)制表示
以 int 類型為例,int類型占4個字節(jié)、共32位。
例如:
2 的原碼為:00000000 00000000 00000000 00000010
-2的原碼為:10000000 00000000 00000000 00000010
- 原碼:將一個整數(shù)轉(zhuǎn)換成二進(jìn)制表示
-
反碼
- 反碼
正數(shù)的反碼:與原碼相同
負(fù)數(shù)的反碼:原碼的符號位不變,其他位取反
例如,-2 的反碼為:11111111 11111111 11111111 11111101
- 反碼
-
補碼
- 補碼
正數(shù)的補碼:與原碼相同
負(fù)數(shù)的補碼:反碼+1
例如,-2 的補碼為:01111111 11111111 11111111 11111110
- 補碼
-
注意事項
- 二進(jìn)制的最高位是符號位(“0”代表正數(shù),“1”代表負(fù)數(shù));
- Java中沒有無符號數(shù);
- 計算機以整數(shù)的補碼進(jìn)行運算;
-
-
八進(jìn)制
- 0****;(以數(shù)字0開始,*表示0到7任意數(shù)字 比如:012345)
-
十進(jìn)制
- 0~9組成 比如:100
-
十六進(jìn)制
- 0x****;(以0x或者0X開始,*表示09或者af組成 比如:0x12c)
進(jìn)制轉(zhuǎn)換
-
十進(jìn)制轉(zhuǎn)二進(jìn)制
方法為:十進(jìn)制數(shù)除2取余法,即十進(jìn)制數(shù)除2,余數(shù)為權(quán)位上的數(shù),得到的商值繼續(xù)除2,依此步驟繼續(xù)向下運算直到商為0為止。- 150十進(jìn)制轉(zhuǎn)二進(jìn)制
- 150十進(jìn)制轉(zhuǎn)二進(jìn)制
-
二進(jìn)制轉(zhuǎn)十進(jìn)制
方法為:把二進(jìn)制數(shù)按權(quán)展開、相加即得十進(jìn)制數(shù)。- 150二進(jìn)制轉(zhuǎn)十進(jìn)制
- 150二進(jìn)制轉(zhuǎn)十進(jìn)制
流程控制語句
定義
流程是指程序運行時,各語句的執(zhí)行順序。流程控制語句就是用來控制程序中各語句執(zhí)行的順序。
分類
順序結(jié)構(gòu)
定義
順序結(jié)構(gòu)是程序中最簡單最基本的流程控制,沒有特定的語法結(jié)構(gòu),按照代碼的先后順序,依次執(zhí)行,程序中大多數(shù)的代碼都是這樣執(zhí)行的
舉例
/*
* 順序結(jié)構(gòu):從上往下,依次執(zhí)行
*/
public class OrderDemo {
public static void main(String[] args) {
System.out.println("開始");
System.out.println("語句A");
System.out.println("語句B");
System.out.println("語句C");
System.out.println("結(jié)束");
}
}
分支結(jié)構(gòu)(選擇結(jié)構(gòu))
定義
條件語句可根據(jù)不同的條件執(zhí)行不同的語句。包括if條件語句與switch多分支語句。
分類
if分支結(jié)構(gòu)
第一種格式
格式
if(條件表達(dá)式){
執(zhí)行的代碼塊;
}
執(zhí)行流程
執(zhí)行流程圖

執(zhí)行流程說明
首先判斷關(guān)系表達(dá)式看其結(jié)果是true還是false
如果是true就執(zhí)行語句體
如果是false就不執(zhí)行語句體
舉例
public class IfDemo {
public static void main(String[] args) {
System.out.println("開始");
// 定義兩個變量
int a = 10;
int b = 20;
if (a == b) {
System.out.println("a等于b");
}
int c = 10;
if (a == c) {
System.out.println("a等于c");
}
System.out.println("結(jié)束");
}
}
第二種格式
格式
if(條件表達(dá)式){
執(zhí)行的代碼塊;
}else{
執(zhí)行的代碼塊;
}
執(zhí)行流程
執(zhí)行流程圖

執(zhí)行流程說明
首先判斷關(guān)系表達(dá)式看其結(jié)果是true還是false
如果是true就執(zhí)行語句體1
如果是false就執(zhí)行語句體2
舉例
public class IfDemo2 {
public static void main(String[] args) {
System.out.println("開始");
// 判斷給定的數(shù)據(jù)是奇數(shù)還是偶數(shù)
// 定義變量
int a = 100;
// 給a重新賦值
a = 99;
if (a % 2 == 0) {
System.out.println("a是偶數(shù)");
} else {
System.out.println("a是奇數(shù)");
}
System.out.println("結(jié)束");
}
}
第三種格式
格式
if(條件表達(dá)式){
執(zhí)行的代碼塊;
}else if(條件表達(dá)式){
執(zhí)行的代碼塊;
}......(此處省略N個else if)
else{
執(zhí)行代碼塊;
}
執(zhí)行流程
執(zhí)行流程圖

執(zhí)行流程說明
首先判斷關(guān)系表達(dá)式1看其結(jié)果是true還是false
如果是true就執(zhí)行語句體1
如果是false就繼續(xù)判斷關(guān)系表達(dá)式2看其結(jié)果是true還是false
如果是true就執(zhí)行語句體2
如果是false就繼續(xù)判斷關(guān)系表達(dá)式…看其結(jié)果是true還是false
…
如果沒有任何關(guān)系表達(dá)式為true,就執(zhí)行語句體n+1
舉例
public class IfDemo3 {
public static void main(String[] args) {
// x和y的關(guān)系滿足如下:
// x>=3 y = 2x + 1;
// -1<=x<3 y = 2x;
// x<=-1 y = 2x – 1;
// 根據(jù)給定的x的值,計算出y的值并輸出。
// 定義變量
int x = 5;
/*
int y;
if (x >= 3) {
y = 2 * x + 1;
} else if (x >= -1 && x < 3) {
y = 2 * x;
} else if (x <= -1) {
y = 2 * x - 1;
}else {
y = 0;
}
*/
int y = 0;
if (x >= 3) {
y = 2 * x + 1;
} else if (x >= -1 && x < 3) {
y = 2 * x;
} else if (x <= -1) {
y = 2 * x - 1;
}
System.out.println("y的值是:"+y);
}
}
注意事項
1、一旦滿足某個條件表達(dá)式,則進(jìn)入其執(zhí)行語句塊執(zhí)行,執(zhí)行完畢后不會執(zhí)行其一下的條件語句。
2、如果多個條件表達(dá)式之間為“互斥”關(guān)系,多個語句之間可以上下調(diào)換順序,一旦是包含關(guān)系,要求條件表達(dá)式范圍小的寫到范圍大的上邊;
switch分支結(jié)構(gòu)
執(zhí)行流程
執(zhí)行流程說明
首先計算出表達(dá)式的值
其次,和case依次比較,一旦有對應(yīng)的值,就會執(zhí)行相應(yīng)的語句,在執(zhí)行的過程中,遇到break就會結(jié)束。
最后,如果所有的case都和表達(dá)式的值不匹配,就會執(zhí)行default語句體部分,然后程序結(jié)束掉。
執(zhí)行流程圖

舉例
public class SwitchDemo {
public static void main(String[] args) {
//創(chuàng)建鍵盤錄入對象
Scanner sc = new Scanner(System.in);
//接收數(shù)據(jù)
System.out.println("請輸入一個數(shù)字(1-7):");
int weekday = sc.nextInt();
//switch語句實現(xiàn)選擇
switch(weekday) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("你輸入的數(shù)字有誤");
break;
}
}
}
注意事項
1、swich(表達(dá)式)中表達(dá)式的返回值必須是以下幾種類型之一:
byte,short,char,int,枚舉(jdk1.5),String(jdk1.7)
2、case子句中的值必須是常量,且所有case子句中的值應(yīng)是不同的;
3、default子句是可任選的,當(dāng)沒有匹配的case時,執(zhí)行default;
4、break語句用來在執(zhí)行完一個case分支后使程序跳出swich語句塊;如果沒有break程序會順序執(zhí)行到swich結(jié)尾;
if分支結(jié)構(gòu)和switch分支結(jié)構(gòu)區(qū)別
if和swich語句很想,如果判斷的具體數(shù)值不多,而且復(fù)合byte、short、int、char這四種類型。建議使用swich語句,因為效率稍高;
其他情況:對區(qū)間進(jìn)行判斷,對結(jié)果為boolean類型進(jìn)行判斷,使用if,if的使用范圍比較廣泛。
循環(huán)結(jié)構(gòu)
定義
循環(huán)語句就是在滿足一定條件的情況下反復(fù)執(zhí)行某一個操作。包括while循環(huán)語句、do···while循環(huán)語句和for循環(huán)語句。
分類
for循環(huán)語句
執(zhí)行流程
執(zhí)行流程圖

執(zhí)行流程說明
A:執(zhí)行初始化語句
B:執(zhí)行判斷條件語句,看其結(jié)果是true還是false
如果是false,循環(huán)結(jié)束。
如果是true,繼續(xù)執(zhí)行。
C:執(zhí)行循環(huán)體語句
D:執(zhí)行控制條件語句
E:回到B繼續(xù)
格式
for(初始化語句;判斷條件語句;控制條件語句) {
循環(huán)體語句;
}
舉例
public class ForDemo {
public static void main(String[] args) {
//原始寫法
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("-------------------------");
//用循環(huán)改進(jìn)
for(int x=1; x<=10; x++) {
System.out.println("HelloWorld");
}
}
}
foreach循環(huán)語句
執(zhí)行流程
執(zhí)行流程說明
和for循環(huán)執(zhí)行流程相似
格式
for (聲明語句 : 表達(dá)式) {
//代碼句子
}
舉例
public class Test {
public static void main(String args[]) {
int [] numbers = {10, 20, 30, 40, 50};
for ( int x : numbers ) {
System.out.print( x );
System.out.print(",");
}
System.out.print();
String [] names = {"James", "Larry", "Tom", "Lacy"};
for ( String name : names ) {
System.out.print( name );
System.out.print(",");
}
}
}
定義
它是Java5后新增的for語句的特殊簡化版本,并不能完全替代for語句,但所有foreach語句都可以改寫為for語句。foreach語句在遍歷數(shù)組等時為程序員提供了很大的方便。
while循環(huán)語句
格式
基本格式
while(判斷條件語句) {
循環(huán)體語句;
}
擴展格式
初始化語句;
while(判斷條件語句) {
循環(huán)體語句;
控制條件語句;
}
執(zhí)行流程
執(zhí)行流程圖

執(zhí)行流程說明
while循環(huán)語句的循環(huán)方式為利用一個條件來控制是否要繼續(xù)反復(fù)執(zhí)行這個語句。
舉例
public class WhileDemo {
public static void main(String[] args) {
//輸出10次HelloWorld
/*
for(int x=1; x<=10; x++) {
System.out.println("HellloWorld");
}
*/
//while循環(huán)實現(xiàn)
int x=1;
while(x<=10) {
System.out.println("HellloWorld");
x++;
}
}
}
do…while循環(huán)語句
格式
基本格式
do {
循環(huán)體語句;
}while((判斷條件語句);
擴展格式
初始化語句;
do {
循環(huán)體語句;
控制條件語句;
} while((判斷條件語句);
執(zhí)行流程
執(zhí)行流程圖

執(zhí)行流程說明
A:執(zhí)行初始化語句;
B:執(zhí)行循環(huán)體語句;
C:執(zhí)行控制條件語句;
D:執(zhí)行判斷條件語句,看是true還是false
如果是true,回到B繼續(xù)
如果是false,就結(jié)束
舉例
public class DoWhileDemo {
public static void main(String[] args) {
//輸出10次 HelloWorld
/*
for(int x=1; x<=10; x++) {
System.out.println("HelloWorld");
}
*/
//do...while改寫
int x=1;
do {
System.out.println("HelloWorld");
x++;
}while(x<=10);
}
}
三種循環(huán)的區(qū)別
雖然可以完成同樣的功能,但是還是有小區(qū)別:
do…while循環(huán)至少會執(zhí)行一次循環(huán)體。
for循環(huán)和while循環(huán)只有在條件成立的時候才會去執(zhí)行循環(huán)體
for循環(huán)語句和while循環(huán)語句的小區(qū)別:
使用區(qū)別:控制條件語句所控制的那個變量,在for循環(huán)結(jié)束后,就不能再被訪問到了,而while循環(huán)結(jié)束還可以繼續(xù)使用,如果你想繼續(xù)使用,就用while,否則推薦使用for。原因是for循環(huán)結(jié)束,該變量就從內(nèi)存中消失,能夠提高內(nèi)存的使用效率。
跳轉(zhuǎn)語句(控制循環(huán)結(jié)構(gòu))
定義
Java語言中提供了3種跳轉(zhuǎn)語句,分別是break語句、continue語句和return語句。
分類
break
break的使用場景
break的使用場景:
在選擇結(jié)構(gòu)switch語句中,在循環(huán)語句中
離開使用場景的存在是沒有意義的
break的作用:跳出單層循環(huán)
舉例
/*
* break:中斷的意思
* 使用場景:
* A:switch語句中
* B:循環(huán)中
* 注意:
* 離開使用場景是沒有意義的。
* 作用:
* 跳出循環(huán),讓循環(huán)提前結(jié)束
*/
public class BreakDemo {
public static void main(String[] args) {
//break;
for(int x=1; x<=10; x++) {
if(x == 3) {
break;
}
System.out.println("HelloWorld");
}
}
}
continue
continue的使用場景
continue的使用場景:
在循環(huán)語句中
離開使用場景的存在是沒有意義的
continue的作用:
單層循環(huán)對比break,然后總結(jié)兩個的區(qū)別
break 退出當(dāng)前循環(huán)
continue 退出本次循環(huán)
舉例
/*
* continue:繼續(xù)的意思
* 使用場景:
* 循環(huán)中
* 注意:
* 離開使用場景是沒有意義的
* 作用:
* 結(jié)束一次循環(huán),繼續(xù)下一次的循環(huán)
* 區(qū)別:
* break:退出循環(huán)
* continue:結(jié)束一次循環(huán),繼續(xù)下一次的循環(huán)
*/
public class ContinueDemo {
public static void main(String[] args) {
//continue;
for(int x=1; x<=10; x++) {
if(x == 3) {
//break;
continue;
}
System.out.println("HelloWorld");
}
}
}
return
return的使用場景
return的使用場景:
在循環(huán)語句中
在方法中
return的作用:可以從一個方法返回,并把控制權(quán)交給調(diào)用它的語句。
直接結(jié)束整個方法,從而結(jié)束循環(huán)。
舉例
public class ReturnDemo {
public static void main(String[] args) {
getStr();
}
public String getStr() {
return "Hello";
}
}
表達(dá)式
定義
- 用運算符把常量或者變量連接起來符號java語法的式子就可以稱為表達(dá)式。
類型和值
- 表達(dá)式值的數(shù)據(jù)類型即為表達(dá)式的類型。
- 對表達(dá)式中操作數(shù)進(jìn)行運算得到的結(jié)果是表達(dá)式的值。
運算順序
- 應(yīng)按照運算符的優(yōu)先級從高到低的順序進(jìn)行;
- 優(yōu)先級相同的運算符按照事先約定的結(jié)合方向進(jìn)行;
舉例
- a + b
3.14 + a
(x + y) * z + 100
boolean b= i < 10 && (i%10 != 0)
運算符
定義
分類
算術(shù)運算符
-
算術(shù)運算符
- / % ++ -- +
-
注意事項
- 1、/ 左右兩端的類型需要一致;
- 2、%最后的符號和被模數(shù)相同;
- 3、前++;先+1,后運算 后++;先運算,后+1;
- 4、+:當(dāng)String字符串與其他數(shù)據(jù)類型只能做連接運算;并且結(jié)果為String類型;
-
比較運算符(關(guān)系運算符)
= += -= *= /= %=
比較運算符1
- 比較運算符
比較運算符2
- 比較運算符2
-
注意事項
- 1、比較運算符的兩端都是boolean類型,也就是說要么是true,要么是false;
- 2、比較運算符的"=="與"="的作用是不同的,使用的時候需要小心。
-
賦值運算符
- = += -= *= /= %=
- 基本的賦值運算符:=
- 擴展的賦值運算符:+=,-=,*=,/=,%=
+=: a+=20;相當(dāng)于a = (a的數(shù)據(jù)類型)(a + 20);
-
邏輯運算符(符號的兩端都是boolean類型)
& | ^ ! && ||
-
注意事項
- 1、& 與 &&以及|與||的區(qū)別:
- &:左邊無論真假,右邊都會進(jìn)行運算;
- &&:如果左邊為假,則右邊不進(jìn)行運算;
- | 與 || 的區(qū)別同上;在使用的時候建議使用&&和||;
- 2、(^)與或(|)的不同之處是:當(dāng)左右都為true時,結(jié)果為false。
邏輯運算符
- 邏輯運算符
-
位運算符(兩端都是數(shù)值型的數(shù)據(jù))
- 位運算符1
- 位運算符1
- 位運算符2
- 位運算符2
-
三元運算符(三目運算符)
三元運算符
- 三元運算符
-
注意事項
- 1、表達(dá)式1與表達(dá)式2的類型必須一致;
- 2、使用三元運算符的地方一定可以使用if..else代替,反之不一定成立;
運算符的優(yōu)先級

- 優(yōu)先級按照從高到低的順序書寫,也就是優(yōu)先級為1的優(yōu)先級最高,優(yōu)先級14的優(yōu)先級最低。使用優(yōu)先級為 1 的小括號可以改變其他運算符的優(yōu)先級。
變量
定義
- 在程序執(zhí)行的過程中,在某個范圍內(nèi)其值可以發(fā)生改變的量。
從本質(zhì)上講,變量其實是內(nèi)存中的一小塊區(qū)域
分類
-
按被聲明的位置劃分
-
成員變量
方法外部,類內(nèi)部定義的變量
-
類變量(靜態(tài)變量):獨立于方法之外的變量,用 static 修飾。
- 類變量也稱為靜態(tài)變量,在類中以static關(guān)鍵字聲明,但必須在方法構(gòu)造方法和語句塊之外。
- 無論一個類創(chuàng)建了多少個對象,類只擁有類變量的一份拷貝。
- 靜態(tài)變量除了被聲明為常量外很少使用。常量是指聲明為public/private,final和static類型的變量。常量初始化后不可改變。
- 靜態(tài)變量儲存在靜態(tài)存儲區(qū)。經(jīng)常被聲明為常量,很少單獨使用static聲明變量。
- 靜態(tài)變量在第一次被訪問時創(chuàng)建,在程序結(jié)束時銷毀。
- 與實例變量具有相似的可見性。但為了對類的使用者可見,大多數(shù)靜態(tài)變量聲明為public類型。
- 默認(rèn)值和實例變量相似。數(shù)值型變量默認(rèn)值是0,布爾型默認(rèn)值是false,引用類型默認(rèn)值是null。變量的值可以在聲明的時候指定,也可以在構(gòu)造方法中指定。此外,靜態(tài)變量還可以在靜態(tài)語句塊中初始化。
- 靜態(tài)變量可以通過:ClassName.VariableName的方式訪問。
- 類變量被聲明為public static final類型時,類變量名稱一般建議使用大寫字母。如果靜態(tài)變量不是public和final類型,其命名方式與實例變量以及局部變量的命名方式一致。
-
實例變量(非靜態(tài)變量):獨立于方法之外的變量,不過沒有 static 修飾。
- 實例變量聲明在一個類中,但在方法、構(gòu)造方法和語句塊之外;
- 當(dāng)一個對象被實例化之后,每個實例變量的值就跟著確定;
- 實例變量在對象創(chuàng)建的時候創(chuàng)建,在對象被銷毀的時候銷毀;
- 實例變量的值應(yīng)該至少被一個方法、構(gòu)造方法或者語句塊引用,使得外部能夠通過這些方式獲取實例變量信息;
- 實例變量可以聲明在使用前或者使用后;
- 訪問修飾符可以修飾實例變量;
- 實例變量對于類中的方法、構(gòu)造方法或者語句塊是可見的。一般情況下應(yīng)該把實例變量設(shè)為私有。通過使用訪問修飾符可以使實例變量對子類可見;
- 實例變量具有默認(rèn)值。數(shù)值型變量的默認(rèn)值是0,布爾型變量的默認(rèn)值是false,引用類型變量的默認(rèn)值是null。變量的值可以在聲明時指定,也可以在構(gòu)造方法中指定;
- 實例變量可以直接通過變量名訪問。但在靜態(tài)方法以及其他類中,就應(yīng)該使用完全限定名:ObejectReference.VariableName。
-
類變量和實例變量的區(qū)別
-
調(diào)用方式
- 靜態(tài)變量也稱為類變量,可以直接通過類名調(diào)用。也可以通過對象名調(diào)用。這個變量屬于類。
- 成員變量也稱為實例變量,只能通過對象名調(diào)用。這個變量屬于對象。
-
存儲位置
- 靜態(tài)變量存儲在方法區(qū)長中的靜態(tài)區(qū)。
- 成員變量存儲在堆內(nèi)存。
-
生命周期
- 靜態(tài)變量隨著類的加載而存在,隨著類的消失而消失。生命周期長。
- 成員變量隨著對象的創(chuàng)建而存在,隨著對象的消失而消失。
-
與對象的相關(guān)性
- 靜態(tài)變量是所有對象共享的數(shù)據(jù)。
- 成員變量是每個對象所特有的數(shù)據(jù)。
-
-
-
局部變量
- 局部變量:類的方法中的變量。
- 局部變量聲明在方法、構(gòu)造方法或者語句塊中;
- 局部變量在方法、構(gòu)造方法、或者語句塊被執(zhí)行的時候創(chuàng)建,當(dāng)它們執(zhí)行完成后,變量將會被銷毀;
- 訪問修飾符不能用于局部變量;
- 局部變量只在聲明它的方法、構(gòu)造方法或者語句塊中可見;
- 局部變量是在棧上分配的。
- 局部變量沒有默認(rèn)值,所以局部變量被聲明后,必須經(jīng)過初始化,才可以使用。
-
成員變量和局部變量的區(qū)別
-
作用域
- 成員變量:針對整個類有效。
- 局部變量:只在某個范圍內(nèi)有效。(一般指的就是方法,語句體內(nèi))
-
存儲位置
- 成員變量:隨著對象的創(chuàng)建而存在,隨著對象的消失而消失,存儲在堆內(nèi)存中。
- 局部變量:在方法被調(diào)用,或者語句被執(zhí)行的時候存在,存儲在棧內(nèi)存中。當(dāng)方法調(diào)用完,或者語句結(jié)束后,就自動釋放。
-
生命周期
- 成員變量:隨著對象的創(chuàng)建而存在,隨著對象的消失而消失
- 局部變量:當(dāng)方法調(diào)用完,或者語句結(jié)束后,就自動釋放。
-
初始值
- 成員變量:有默認(rèn)初始值。
- 局部變量:沒有默認(rèn)初始值,使用前必須賦值。
-
-
使用原則
- 在使用變量時需要遵循的原則為:就近原則
首先在局部范圍找,有就使用;接著在成員位置找。
- 在使用變量時需要遵循的原則為:就近原則
-
-
按所屬的數(shù)據(jù)類型劃分
-
基本數(shù)據(jù)類型變量
-
基本數(shù)據(jù)類型
- byte,short,int,long,float,double,char,boolean
-
變量的定義格式
- 數(shù)據(jù)類型 變量名 = 初始化值;
-
注意
- 整數(shù)默認(rèn)是int類型,定義long類型的數(shù)據(jù)時,要在數(shù)據(jù)后面加L。
- 浮點數(shù)默認(rèn)是double類型,定義float類型的數(shù)據(jù)時,要在數(shù)據(jù)后面加F。
-
引用數(shù)據(jù)類型變量
-
定義格式
- 數(shù)據(jù)類型 變量名 = 初始化值;
注意:格式是固定的,記住格式,以不變應(yīng)萬變 - 舉例
public class Variable{
// 類變量
static int allClicks=0;
// 實例變量
String str="hello world";
public void method(){
// 局部變量
int i =0;
}
}
注意事項
- 類外面不能有變量的聲明
常量
定義
- 常量定義:在程序執(zhí)行的過程中,其值不可以發(fā)生改變的量。常量不同于常量值,它可以在程序中用符號來代替常量值使用,因此在使用前必須先定義。
- 常量值定義:常量和常量值是不同的概念,常量值又稱為字面常量,它是通過數(shù)據(jù)直接表示的。
- 關(guān)系:常量值是常量的具體和直觀的表現(xiàn)形式,常量是形式化的表現(xiàn)。通常在程序中既可以直接使用常量值,也可以使用常量。
分類
- 字符串常量 用雙引號括起來的內(nèi)容(“HelloWorld”)
- 整數(shù)常量 所有整數(shù)(12,-23)
- 小數(shù)常量 所有小數(shù)(12.34)
- 字符常量 用單引號括起來的內(nèi)容(‘a(chǎn)’,’A’,’0’)
- 布爾常量 較為特有,只有true和false
- 空常量 null(數(shù)組部分講解)
舉例
- Java 語言使用 final 關(guān)鍵字來定義一個常量
final int COUNT=10;
final float HEIGHT=10.2F;
注意事項
- 在定義常量時就需要對該常量進(jìn)行初始化。
- final 關(guān)鍵字不僅可以用來修飾基本數(shù)據(jù)類型的常量,還可以用來修飾對象的引用或者方法。
- 為了與變量區(qū)別,常量取名一般都用大寫字符。
數(shù)據(jù)類型
定義
- Java語言是強類型語言,對于每一種數(shù)據(jù)都定義了明確的具體的數(shù)據(jù)類型,在內(nèi)存中分配了不同大小的內(nèi)存空間。
分類
-
基本數(shù)據(jù)類型
-
數(shù)值型
- 整數(shù)類型(byte,short,int,long)
- 浮點類型(float,double)
字符型(char)
布爾型(boolean)
-
-
引用數(shù)據(jù)類型
- 類(class)
- 接口(interface)
- 數(shù)組([])
計算機存儲單元
定義:變量是內(nèi)存中的小容器,用來存儲數(shù)據(jù)。那么計算機內(nèi)存是怎么存儲數(shù)據(jù)的呢?無論是內(nèi)存還是硬盤,計算機存儲設(shè)備的最小信息單元叫“位(bit)”,我們又稱之為“比特位”,通常用小寫的字母b表示。而計算機最小的存儲單元叫“字節(jié)(byte)”,通常用大寫字母B表示,字節(jié)是由連續(xù)的8個位組成。
-
常用存儲單元關(guān)系
- 1B= 8b
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
- 1B= 8b
Java基本數(shù)據(jù)類型圖

數(shù)據(jù)類型轉(zhuǎn)換
-
定義
- 數(shù)據(jù)類型的轉(zhuǎn)換是在所賦值的數(shù)值類型和被變量接收的數(shù)據(jù)類型不一致時發(fā)生的,它需要從一種數(shù)據(jù)類型轉(zhuǎn)換成另一種數(shù)據(jù)類型。
-
分類
-
隱式轉(zhuǎn)換
-
定義
- 在運算過程中,由于不同的數(shù)據(jù)類型會轉(zhuǎn)換成同一種數(shù)據(jù)類型,所以整型、浮點型以及字符型都可以參與混合運算。自動轉(zhuǎn)換的規(guī)則是從低級類型數(shù)據(jù)轉(zhuǎn)換成高級類型數(shù)據(jù)。
-
轉(zhuǎn)換規(guī)則
- 數(shù)值型數(shù)據(jù)的轉(zhuǎn)換:byte→short→int→long→float→double。
- 字符型轉(zhuǎn)換為整型:char→int。
-
轉(zhuǎn)換條件
- 自動類型轉(zhuǎn)換的實現(xiàn)需要同時滿足兩個條件:①兩種數(shù)據(jù)類型彼此兼容,②目標(biāo)類型的取值范圍大于源數(shù)據(jù)類型(低級類型數(shù)據(jù)轉(zhuǎn)換成高級類型數(shù)據(jù))。例如 byte 類型向 short 類型轉(zhuǎn)換時,由于 short 類型的取值范圍較大,會自動將 byte 轉(zhuǎn)換為 short 類型。
-
-
顯式轉(zhuǎn)換
-
定義
- 當(dāng)兩種數(shù)據(jù)類型不兼容,或目標(biāo)類型的取值范圍小于源類型時,自動轉(zhuǎn)換將無法進(jìn)行,這時就需要進(jìn)行強制類型轉(zhuǎn)換。
-
語法格式
- 目標(biāo)類型 變量名 = (目標(biāo)類型) (被轉(zhuǎn)換的數(shù)據(jù));
舉例:int b = (byte)(a + b);
- 目標(biāo)類型 變量名 = (目標(biāo)類型) (被轉(zhuǎn)換的數(shù)據(jù));
-
注意
- 如果超出了被賦值的數(shù)據(jù)類型的取值范圍得到的結(jié)果會與你期望的結(jié)果不同
- 不建議強制轉(zhuǎn)換,因為會有精度的損失。
-
-








