java類的實例變數
A. java中如何理解類屬性、實例屬性、類成員變數、實例變數、類變數、field這些名稱概念呢
這是在做題還是幹嘛。。
實際上會用就行,沒必要死摳概念。java中沒有內置的屬性概念,只有get set方法包裝。
C#里默認有屬性。
B. JAVA中的實例變數,嗯百度變數,和類變數,都有什麼不同,能詳細解釋嗎
java類的成員變數有倆種:
一種是被static關鍵字修飾的變數,叫類變數或者靜態變數;
另一種沒有static修飾,為實例變數。
類的靜態變數在內存中只有一個,java虛擬機在載入類的過程中為靜態變數分配內存,靜態變數位於方法區,被類的所有實例共享。靜態變數可以直接通過類名進行訪問,其生命周期取決於類的生命周期。
而實例變數取決於類的實例。每創建一個實例,java虛擬機就會為實例變數分配一次內存,實例變數位於堆區中,其生命周期取決於實例的生命周期。
public class Temp {
int t; //實例變數
public static void main(String args[]){
int t=1; //局部變數
System.out.println(t); //列印局部變數
Temp a= new Temp(); //創建實例
System.out.println(a.t); //通過實例訪問實例變數
}
}
結果為:
1
0 (成員變數具有預設值 而局部變數則沒有)
把代碼改為
public class Temp {
static int t; //類變數
public static void main(String args[]){
System.out.println(t); //列印類變數
int t=1; //局部變數
System.out.println(t); //列印局部變數
Temp a= new Temp(); //創建實例
System.out.println(a.t); //通過實例訪問實例變數
}
}
結果則為
0
1
0
不知道你的實例變數和網路變數啥意思啊
C. 在JAVA中什麼是實例變數
在java變數分為實例變數和靜態變數
方法實例方法和靜態方法
如
class Example{
int data;//定義實例變數,也叫成員變數
public void method(){
.....
}
static int count = 0;//定義靜變數
public static func(){ //靜態方法
......
}
public void static main(String arg[]){
Example e = new Example();//實例化一個對象
e.data = 0;//若要調用實例變數,則必須通過對象e來調用
count++;//要調用靜態變數,則在這里直接調用
//同樣,實例方法和靜態方法也是如此
}
}
如果要在其它類中調用實例變數,則用 類.對象.實例變數,(如果實例變數是public)
若調用靜態方法,用 類.方法 調用。
實例變數和實例方法是 對象的屬性,
而靜態變數和靜態方法是 類的屬性。
D. java中類變數、實例變數和局部變數有何區別
類變數:
比較特殊的實例變數,用static修飾的,一個類共用這個變數,所有由這類生成的對象都共用這個變數,類裝載時就分配存儲空間。一個對象修改了變數,則所以對象中這個變數的值都會發生改變。
實例變數:
從屬於類,由類生成對象時,才分配存儲空間,各對象間的實例變數互不幹擾,能通過對象的引用來訪問實例變數。
局部變數:
方法中或者某局部塊中聲明定義的變數或方法的參數被稱為局部變數
E. java 中,什麼是實例變數(Instance Variables)
實例變數就是實例化該類對象才調用的非靜態變數!
class A{
int i;//實例變數
public void mack() {
int m =1;//局部變數
}
}
單你new 一個A的對象的時候!對象就會在內存中為i分配一個內存!你就可以調用該變數!單你調用mack方法時候才會為m分配內存進行調用!
F. JAVA中成員變數、局部變數、實例變數、類變數之間有什麼關系
java易混淆概念之類變數、實例變數、局部變數
類變數、實例變數、局部變數類變數是類中獨立於方法之外的變數,用static 修飾。
實例變數也是類中獨立於方法之外的變數,不過沒有static修飾。
局部變數是類的方法中的變數。
G. 實例變數的java中的實例變數:
實例變數:定義在類中但在任何方法之外。(New出來的均有初始化)
當一個對象被實例化之後,每個實例變數的值就跟著確定;
實例變數在對象創建的時候創建,在對象被銷毀的時候銷毀;
實例變數的值應該至少被一個方法、構造方法或者語句塊引用,使得外部能夠通過這些方式獲取實例變數信息;
實例變數可以聲明在使用前或者使用後;
訪問修飾符可以修飾實例變數;
實例變數對於類中的方法、構造方法或者語句塊是可見的。一般情況下應該把實例變數設為私有。通過使用訪問修飾符可以使實例變數對子類可見;
實例變數具有默認值。數值型變數的默認值是0,布爾型變數的默認值是false,引用類型變數的默認值是null。變數的值可以在聲明時指定,也可以在構造方法中指定;
實例變數可以直接通過變數名訪問。但在靜態方法以及其他類中,就應該使用完全限定名:ObejectReference.VariableName。 局部變數:定義在方法之中的變數。
1. 局部變數要先賦值,再進行運算,而實例變數均已經賦初值。(這是局部變數和實例變數的一大區別)
2. 實例變數的對象賦值為null。
3. 局部變數不允許范圍內定義兩個同名變數。實例變數的作用域在本類中完全有效,當被其他的類調用的時候也可能有效。
4. 實例變數和局部變數允許命名沖突。 public class Sample
{
private int a=1; //實例變數
public void b()
{
int a=2; //局部變數
System.out.println(局部變數:a=+a);
System.out.println(實例變數:a=+this.a);//局部變數的作用域內引用實例變數:this.變數名
}
public static void main(String[] args)
{
new Sample().b();
}
}
運行輸出:
局部變數:2
實例變數;1
H. JAVA中靜態變數和實例變數的區別
Java類的成員變數有2種:一種是被static關鍵字修飾的變數,叫類變數或者靜態變數;另一種沒有static修飾,為實例變數。
在語法定義上的區別:靜態變數前要加static關鍵字,而實例變數前則不加。
在程序運行時的區別:實例變數屬於某個對象的屬性,必須創建了實例對象,其中的實例變數才會被分配空間,才能使用這個實例變數。靜態變數不屬於某個實例對象,而是屬於類,所以也稱為類變數,只要程序載入了類的位元組碼,不用創建任何實例對象,靜態變數就會被分配空間,靜態變數就可以被使用了。總之,實例變數必須創建對象後才可以通過這個對象來使用,靜態變數則可以直接使用類名來引用。
類的靜態變數在內存中只有一個,java虛擬機在載入類的過程中為靜態變數分配內存,靜態變數位於方法區,被類的所有實例共享。靜態變數可以直接通過類名進行訪問,其生命周期取決於類的生命周期。
而實例變數取決於類的實例。每創建一個實例,java虛擬機就會為實例變數分配一次內存,實例變數位於堆區中,其生命周期取決於實例的生命周期。
I. java中什麼是實例變數,類變數,局部變數
類變數是在類中定義和存儲的,它們的值適用於類及其所有實例。而當類被實例化成為一個實例化對象的時候,對象中的變數將會成為實例變數。
每個實例都將有實例變數的一個拷貝,它們可以修改實例變數的值,而不會影響其他的實例;而類變數只有一個拷貝,修改它的值將影響所有的實例。
只在特定的過程或函數中可以訪問的變數,被稱為局部變數。與局部變數相對應的,是全局變數。全局變數就是從定義的位置起,作用域覆蓋整個程序范圍的變數。
局部變數可以和全局變數重名,但是局部變數會屏蔽全局變數。在函數內引用這個變數時,會用到同名的局部變數,而不會用到全局變數。
J. java里類變數和實例變數的區別
每次創建一個類的對象的時候,系統為它創建了類的每一個實例變數的副本。我們就可以從對象中訪問該實例變數。
類變數或說靜態變數跟實例變數是不一樣的,不管為一個類創建了多少個對象,系統只為每個類變數分配一次存儲空間。系統為類變數分配的內存是在執行main方法時馬克-to-win, 就是在程序最最開始的時候(見下面StaticDemo的例子)。所有的對象共享了類變數。可以通過對象或者通過類本身來訪問類變數。
Staticfields
Afielddefineasstatic,
Instancefields
Afielddefinewithoutstatic,
順便提一句:通常用下面的形式,定義類的常量。(類或實例都可以訪問)
staticfinaldoublePI=3.14159;
靜態方法(方法前冠以static)和實例方法(前面未冠以static)的區別
調用靜態方法或說類方法時,可以使用類名做前綴,也可以使用某一個具體的對象名;通常使用類名。
非static的方法是屬於某個對象的方法,而static的方法是屬於整個類的,不被任何一個對象單獨擁有;
由於static方法是屬於整個類的,所以它不能操縱和處理屬於某個對象的成員變數,而只能處理屬於整個類的成員變數,也即,static方法只能處理static域或靜態方法。實例方法可以訪問實例域, 靜態域或靜態方法, 記住都行。
聲明為static的方法有以下幾條限制: 1.它們僅能調用其他的static方法。
2.它們只能訪問static數據。
3.它們不能以任何方式引用this或super(關鍵 字super與繼承有關,在下一章中描述)。
—this
So,
Static
methodcan』;itcanonlyinvoke
otherstaticclassmembers.Itcanaccessclassmembersonly.
instancecanusestaticmethod.
Instancemethods:
,
.Instancemethods
areassociatedwithobjects–notclasses.
.
classStaticExa{
staticinta=4;
staticintb=9;
staticvoidcall(){
System.out.println("a="+a);//靜態方法可以訪問靜態屬性
}
}
publicclassTest{
staticintc=43;
publicstaticvoidmain(Stringargs[]){
/*剛運行到這一步時,debug觀察,StaticExa.a的值就等於42,Test.c的值就等於43,
說明系統在我們的程序一開始時,就會給所有的類變數賦值。如果是對象參考,就是null,
見photoshop的例子*/
System.out.println("開始觀察StaticExa.a和Test.c");
詳情網上找「馬克-to-win」,參考他的網站或他的網路空間:java第2章的內容