文章目錄
- (1) 類名.方法
- (2) 變量
(1) 類名.方法
要是類名直接調用的方法,那這個方法就是靜態的(static)方法,是不用new出新對象實例就可以直接調用的方法。看下面例子:
class A {public static void Method1(int a, int b) {//方法體}public void Method2(int c) {//方法體}public static void main(String[] args) {A.Method1(50, 90); //類名(A)直接調用靜態方法Method1(),括號 內是傳遞的實參(實際參數)//如果不是靜態方法,要調用它就需要先創建實例,然后利用實例對象來調用方法A a = new A(); //實例化對象aa.Method2(100);}
}
這是靜態方法和非靜態方法的一個區別,靜態方法是類的方法,可以使用類名加英文句號加靜態方法名來直接調用,<靜態方法名里面寫的就是【實參】>,用于向方法傳遞需要的參數。
(2) 變量
2.1 定義
(1) 由字母、數字、下劃線、$組成,不能以數字開頭。
(2) 大小寫敏感。
(3) 不得使用java中的關鍵字和保留字。
關鍵字:都是小寫的,jdk1.2多了strictfp(經準浮點型),關鍵字 jdk1.4多了assert(斷言)關鍵字,jdk1.5多了enum(枚舉) 關鍵字。
true、false、null 嚴格說不應該算關鍵字,應稱其為保留字更合適。
習慣:
(1) 標識符要符合語義信息。
(2) 包名所有字母小寫。
(3) 類名每個單詞首字母大寫,其它小寫,如:TarenaStudent。
(4) 變量和方法:第一個單詞小寫,從第二個單詞開始首字母大寫,如:tarenaStudent。
(5) 常量:所有字母大寫,每個單詞之間用 _ 連接。
2.2 常用的轉義字符:
“\b” (退格)
“\f” (換頁)
“\n” (換行)
“\r” (回車)
“\t” (水平制表符(到下一個tab位置))
"’ " (單引號)
“” " (雙引號)
“\” (反斜杠)
2.3 變量字節
變量 | 類型 | 字節 |
---|---|---|
boolean | 布爾型 | 1個字節 8bit(8位) |
byte | 字節類型 | 1個字節 |
char | 字符類型 | 2個字節 |
short | 短整型 | 2個字節 |
int | 整型 | 4個字節 |
float | 浮點型(單精度) | 4個字節 |
long | 長整型 | 8個字節 |
double | 雙精度類型 | 8個字節 |
Java中默認的整數類型是int,如果要定義為long ,則要在數值后加上L或者l
默認的浮點型是雙精度浮點,如果要定義float,則要在數值后面加上f或者F
一個字節等于8位,1個字節等于256個數。2^8
一個英文字母或者阿拉伯數字占一個字節
一個漢字占2個字節
2.4 局部變量和全局變量
局部變量:在方法、構造方法或者語句塊中定義的變量被稱為局部變量。變量聲明和初始化都是在方法中,方法結束后,變量就會自動銷毀。
成員變量:成員變量是定義在類中,方法體之外的變量。這種變量在創建對象的時候實例化。成員變量可以被類中方法、構造方法和特定類的語句塊訪問。
類變量:類變量也聲明在類中,方法體之外,但必須聲明為static類型。
一個源文件中只能有一個public類
一個源文件可以有多個非public類
源文件的名稱應該和public類的類名保持一致。例如:源文件中public類的類名是Employee,那么源文件應該命名為Employee.java。
如果一個類定義在某個包中,那么package語句應該在源文件的首行。
如果源文件包含import語句,那么應該放在package語句和類定義之間。如果沒有package語句,那么import語句應該在源文件中最前面。
import語句和package語句對源文件中定義的所有類都有效。在同一源文件中,不能給不同的類不同的包聲明。
類有若干種訪問級別,并且類也分不同的類型:抽象類和final類等。
package 的作用就是 c++ 的 namespace 的作用,防止名字相同的類產生沖突。
Java 編譯器在編譯時,直接根據 package 指定的信息直接將生成的 class 文件生成到對應目錄下。如 package aaa.bbb.ccc 編譯器就將該 .java 文件下的各個類生成到 ./aaa/bbb/ccc/ 這個目錄。
JAVA文件中只能含有一個Public類
2.5 成員變量和類變量的區別
由static修飾的變量稱為靜態變量,其實質上就是一個全局變量。如果某個內容是被所有對象所共享,那么該內容就應該用靜態修飾;沒有被靜態修飾的內容,其實是屬于對象的特殊描述。
不同的對象的實例變量將被分配不同的內存空間, 如果類中的成員變量有類變量,那么所有對象的這個類變量都分配給相同的一處內存,改變其中一個對象的這個類變量會影響其他對象的這個類變量,也就是說對象共享類變量。
成員變量和類變量的區別:
1、兩個變量的生命周期不同
成員變量隨著對象的創建而存在,隨著對象的回收而釋放。
靜態變量隨著類的加載而存在,隨著類的消失而消失。
2、調用方式不同
成員變量只能被對象調用。
靜態變量可以被對象調用,還可以被類名調用。
3、別名不同
成員變量也稱為實例變量。
靜態變量也稱為類變量。
4、數據存儲位置不同
成員變量存儲在堆內存的對象中,所以也叫對象的特有數據。
靜態變量數據存儲在方法區(共享數據區)的靜態區,所以也叫對象的共享數據。
static 關鍵字,是一個修飾符,用于修飾成員(成員變量和成員函數)。
特點:
1、想要實現對象中的共性數據的對象共享。可以將這個數據進行靜態修飾。
2、被靜態修飾的成員,可以直接被類名所調用。也就是說,靜態的成員多了一種調用方式。類名.靜態方式。
3、靜態隨著類的加載而加載。而且優先于對象存在。
弊端:
1、有些數據是對象特有的數據,是不可以被靜態修飾的。因為那樣的話,特有數據會變成對象的共享數據。這樣對事物的描述就出了問題。所以,在定義靜態時,必須要明確,這個數據是否是被對象所共享的。
2、靜態方法只能訪問靜態成員,不可以訪問非靜態成員。
因為靜態方法加載時,優先于對象存在,所以沒有辦法訪問對象中的成員。
3、靜態方法中不能使用this,super關鍵字。
因為this代表對象,而靜態在時,有可能沒有對象,所以this無法使用。
什么時候定義靜態成員呢?或者說:定義成員時,到底需不需要被靜態修飾呢?
成員分兩種:
1、成員變量。(數據共享時靜態化)
該成員變量的數據是否是所有對象都一樣:
如果是,那么該變量需要被靜態修飾,因為是共享的數據。
如果不是,那么就說這是對象的特有數據,要存儲到對象中。
2、成員函數。(方法中沒有調用特有數據時就定義成靜態)
如果判斷成員函數是否需要被靜態修飾呢?
只要參考,該函數內是否訪問了對象中的特有數據:
如果有訪問特有數據,那方法不能被靜態修飾。
如果沒有訪問過特有數據,那么這個方法需要被靜態修飾。
成員變量和靜態變量的區別:
1、成員變量所屬于對象。所以也稱為實例變量。
靜態變量所屬于類。所以也稱為類變量。
2、成員變量存在于堆內存中。
靜態變量存在于方法區中。
3、成員變量隨著對象創建而存在。隨著對象被回收而消失。
靜態變量隨著類的加載而存在。隨著類的消失而消失。
4、成員變量只能被對象所調用 。
靜態變量可以被對象調用,也可以被類名調用。
所以,成員變量可以稱為對象的特有數據,靜態變量稱為對象的共享數據。
一個包就是一個目錄,一個包內的所有的類必須放在一個目錄下,那個目錄的名字必須是包的名字。
如果某個成員有static關鍵字做修飾,它就不再屬于每一個對象,而是屬于整個類的了。
如果某個成員有static關鍵字做修飾,它就不再屬于每一個對象,而是屬于整個類的了。