2012-01-25 109 views
4

對於VB.NET的Static關鍵字,是否存在Java等價物(特別是在Android上)?對於那些不熟悉VB.NET,採取下面的代碼片段...什麼是[Android] Java的等效VB.NET的靜態關鍵字?

Sub MyFunc() 
    Static myvar As Integer = 0 
    myvar += 1 
End Sub 

Static關鍵字使得它如此MYVAR保留其後續調用MYFUNC之間的值。

因此,在三次調用MyFunc之後,myvar的值將爲:1,23

如何在Java中的方法中創建一個跨調用持久變量?你可以嗎?

+1

Java也有「靜態」的關鍵字,它有異曲同工之妙 – Waqas

+1

從我收集的,Java的'static'更像是VB.NET的'Shared'表示...類成員不需要特定的類實例;沒有?或者,Java的'static'實際上服務於VB.NET的'Shared'和'Static'的雙重目的嗎?可以使用聲明爲靜態的java/c#成員中的 – eidylon

+0

而無需實例化實例,並且還可以在不同實例之間共享,從而在後續調用之間保留它的值。 – Waqas

回答

4

在方法內部號static關鍵字,Java沒有的東西,可以在各種電話被記住。

如果你想跨一個方法的多次調用保持一個值,你應該將它作爲實例變量或類變量存儲。

實例變量對於每個對象/實例都是不同的,而類變量(或靜態變量)對於它的類的所有對象都是相同的。

例如:

class ABC 
{ 
    int instance_var; // instance variable 
    static int static_var; // class variable 
} 

class ABC_Invoker 
{ 
    public static void main(string[] args) 
    { 
     ABC obj1 = new ABC(); 
     ABC obj2 = new ABC(); 

     obj1.instance_var = 10; 
     obj2.instance_var = 20; 

     ABC.static_var = 50; // See, you access static member by it's class name 

     System.out.prinln(obj1.instance_var); 
     System.out.prinln(obj2.instance_var); 
     System.out.prinln(ABC.static_var); 
     System.out.prinln(obj1.static_var); // Wrong way, but try it 
     System.out.prinln(obj2.static_var); // Wrong way, but try it 
    } 
} 
+0

所以我需要將我的變量移出方法,然後將它放在課程級別,那麼是的?然後我可以聲明我的方法和我的變量都是靜態的,它會有大致相同的效果呢?那將是最接近的事情? – eidylon

+2

是的,你應該在課堂級別移動變量。但是方法不需要是「靜態」的。一個非靜態方法可以訪問'static'變量。但請記住,其他方法也可以看到通過一種方法更改的值。 – Azodious

-1

它是Java

public static String mVar = "Some Value"; 
+0

不,它不是。問題是關於在**局部變量上使用'static' ** – MarkJ

+0

我不認爲這在Java中可用 –

+1

沒錯,所以你的答案是錯誤的,Azodius的答案是正確的。如果我是你,我會刪除這個答案。 – MarkJ

相關問題