1. java中static是什麼意思,該怎麼用
就是靜態。如果一個成員被聲明為static,它就能夠在它的類的任何對象創建之前被訪問,而不必引用任何對象。你可以將方法和變數都聲明為static。static 成員的最常見的例子是main( ) 。因為在程序開始執行時必須調用main() ,所以它被聲明為static。
聲明為static的變數實質上就是全局變數。當聲明一個對象時,並不產生static變數的拷貝,而是該類所有的實例變數共同擁有一個static變數。聲明為static的方法有以下幾條限制:
· 它們僅能調用其他的static 方法。
· 它們只能訪問static數據。
· 它們不能以任何方式引用this 或super(關鍵字super 與繼承有關)。
舉例
如果你需要通過計算來初始化你的static變數,你可以聲明一個static塊,Static 塊僅在該類被載入時執行一次。下面的例子顯示的類有一個static方法,一些static變數,以及一個static 初始化塊:
// Demonstrate static variables,methods,and blocks.
class UseStatic {
static int a = 3;
static int b;
static void meth(int x) {
System.out.println("x = " + x);
System.out.println("a = " + a);
System.out.println("b = " + b); }
static {
System.out.println("Static block initialized.");
b = a * 4; }
public static void main(String args[]) {
meth(42); }
}
一旦UseStatic 類被裝載,所有的static語句被運行。首先,a被設置為3,接著static 塊執行(列印一條消息),最後,b被初始化為a*4 或12。然後調用main(),main() 調用meth() ,把值42傳遞給x。3個println ( ) 語句引用兩個static變數a和b,以及局部變數x 。 注意:在一個static 方法中引用任何實例變數都是非法的。
下面是該程序的輸出:
Static block initialized.
x = 42
a = 3
b = 12
2. Java中,static成員可以被繼承嗎
static成員可以被繼承,final定義的類不能有子類,方法不能被覆寫,變數即為常量,不能修改
3. java static成員變數方法和非static成員變數方法的區別
內存分配
靜態靜態,就是當類被載入時,這個內存就靜靜的待在這里,就已經存在,而普通成員變數,只有類被實例化時才分配內存。
調用方法
成員變數需要對象才能被調用;而靜態成員變數可以直接通過類來調用,當然也可以直接調用
PS:小小疑問為什麼可以直接調用,我看一些參考書上只說可以通過類來調用?
public class demo {
static int i=10;
public static void main(String[] args){
int k=i;//直接調用
int j=demo.i;//通過類來調用
System.out.println("直接調用k:"+k);
System.out.println("通過類來調用j:"+j);
}
}
生命周期
靜態成員變數從類被載入開始到類被卸載,一直存在;普通成員變數只要在類被實例化也就是創建對象是才開始存在,一直到對象結束,生命也告終。
共享方式
靜態成員變數是全類共享的,即使不是對象,也可以調用,並且內存不變;普通成員變數是每個對象單獨享用的,就是說你這個對象有一個int i=1,我再給該類創建一個新的對象,他也有一個int i,但他可以不等於1,可以等於5,也可以等於10,但無論等於多少,都不會影響之前對象的i的值,而靜態成員變數不是這樣。
4. JAVA里的靜態成員是什麼
是類和類的多個對象共同擁有的一個屬性或者是方法,靜態成員可以通過類名.靜態成員名或者是對象名.靜態成員名調用,需要注意的是,如果你定義了一個靜態成員public static int A = 10,類調用了這個靜態成員並且將10改成了20,那麼其它的對象再調用這個A此時他們得到的值就是20,因為他們和類共同擁有一個靜態成員。
5. java語法中的static是什麼意思
static表示「全局」或者「靜態」的意思,用來修飾成員變數和成員方法,也可以形成靜態static代碼塊,但是Java語言中沒有全局變數的概念。
被static修飾的成員變數和成員方法獨立於該類的任何對象。也就是說,它不依賴類特定的實例,被類的所有實例共享。
只要這個類被載入,Java虛擬機就能根據類名在運行時數據區的方法區內定找到他們。因此,static對象可以在它的任何對象創建之前訪問,無需引用任何對象。
用public修飾的static成員變數和成員方法本質是全局變數和全局方法,當聲明它類的對象市,不生成static變數的副本,而是類的所有實例共享同一個static變數。
static變數前可以有private修飾,表示這個變數可以在類的靜態代碼塊中,或者類的其他靜態成員方法中使用(當然也可以在非靜態成員方法中使用--廢話),但是不能在其他類中通過類名來直接引用,這一點很重要。
實際上你需要搞明白,private是訪問許可權限定,static表示不要實例化就可以使用,這樣就容易理解多了。static前面加上其它訪問許可權關鍵字的效果也以此類推。
6. JAVA static成員
類被虛擬機載入時除了載入完畢成員後,先執行靜態快.
7. java中的static到底有什麼作用
static表示「全局」或者「靜態」的意思,用來修飾成員變數和成員方法,也可以形成靜態static代碼塊,但是Java語言中沒有全局變數的概念。被static修飾的成員變數和成員方法獨立於該類的任何對象。也就是說,它不依賴類特定的實例,被類的所有實例共享。static變數前可以有private修飾,表示這個變數可以在類的靜態代碼塊中,或者類的其他靜態成員方法中使用(當然也可以在非靜態成員方法中使用--廢話),但是不能在其他類中通過類名來直接引用,這一點很重要。實際上你需要搞明白,private是訪問許可權限定,static表示不要實例化就可以使用,這樣就容易理解多了。static前面加上其它訪問許可權關鍵字的效果也以此類推。
8. Java中static的作用
1.static 成員變數
在 Java 中還支持用 static 修飾的內部類,稱為靜態內部類。靜態成員內部類的特點主要是它本身是類相關的內部類,所以它可以不依賴於外部類實例而被實例化。靜態內部類不能訪問其外部類的實例成員(包括普通的成員變數和方法),只能訪問外部類的類成員(包括靜態成員變數和靜態方法)。即使是靜態內部類的實例方法(非靜態成員方法)也不能訪問其外部類的實例成員。
9. 在Java中static修飾的成員屬於類本身,而不屬於該類的實例,這句話到底是什麼意思
類和類的實例你能夠區分不,比如Person就表示「人」這個類,而小明是個具體的人,是該類的對象。
static修飾的成員屬於類本身,就是靜態成員,比如對於Person類,可以有「直立行走」的特性walkWithFoot ,是全體人類公有的,因此可以在引用時直接用Person.walkWithFoot來使用。
而其他沒用static修飾的,就是成員變數或方法,必須先new出來類的對象,比如speak(),對於不同的人說的話不同,就得new Person("小明").speak()。
這就是加不加static的區別。你看一看JDK類裡面自帶的static變數和方法,比如Integer.parseInt(String str),是轉換字元串到數字的方法,都不需要創建實際的對象,就可以應用了。
10. JAVA 簡述static成員變數與非static成員變數的主要區別是什麼
static是為了將某個成員變數/方法關聯到類(class)而非實例(instance)。
你不需要創建一個對象就可以直接使用這個類的static成員,
在A類中調用B類的static成員可以使用B.staticMember的寫法。
注意一個類的static成員變數是唯一的,被所有該類對象所共享的。
比如說有一個類Dog;
屬性:clolor,狗狗可以有好多顏色;
munberOfLegs =4 每隻狗狗只有4條腿,這個就應該是靜態的;
靜態的屬性不依賴於類的存在而存在,簡單說,你可以定義
Dog dog1 = new Dog();
Dog dog2 = new Dog();
Dog dog3 = new Dog();
這里定義了三條狗狗,狗狗的顏色依賴於類本身,即dog1,dog2,dog3;三條狗狗可以有不同的顏色;
而狗狗的腿的數量不依賴於dog1,dog2,dog3;所有的狗狗都是4條腿