2013-07-04 36 views
7
private static int Fibonoci(int n) { 
static int first=0; 
static int second=1; 
static int sum; 
if(n>0) 

我得到一個錯誤「非法修改」如果我刪除static關鍵字沒有錯誤,我需要這些變量是靜態我可以在Java中聲明靜態成員函數中的靜態變量嗎?

+0

將它們包裝在一個類中。 – BigMike

+4

'我需要這些變量是靜態的'然後將它們聲明爲類中的靜態字段。 – Pshemo

+0

你爲什麼需要它們是靜態的? –

回答

12

你不能聲明varibale的方法中作爲靜態的。
內部方法所有變量都是局部變量,在這個方法之外沒有任何存在,這就是爲什麼它們不能是靜態的。

static int first=0; 
static int second=1; 
static int sum; 
private static int Fibonoci(int n) { 
    //do somthing 
} 

您正在嘗試編寫代碼爲斐波納契數列,併爲您不需要的,只是這裏的靜態變量是一些鏈接,誰介紹了溶膠爲

http://crunchify.com/write-java-program-to-print-fibonacci-series-upto-n-number/

http://electrofriends.com/source-codes/software-programs/java/basic-programs/java-program-find-fibonacci-series-number/

+1

只有類變量(字段)和方法可以是靜態的。 – vikingsteve

0

這個變量名爲Local Variables,它們在方法scop或構造函數內,它們不能是實例或類變量。

private static int COUNT;// Class Variable 
private static int Fibonoci(int n) { 
int a =3 ; // local variable 
} 

我需要這些變量是靜態的,對吧,你爲什麼需要這個?因爲用於特殊purpuse的靜態變量,但是,你可以像上面的代碼那樣創建靜態字段。

3

static s在功能範圍內不允許在Java中使用。

0

Local variables不能被聲明爲靜態。換句話說Static不適用於local variables

我沒有看到declaring他們static有任何使用。

跟隨JLs on static fields

靜態字段,有時被稱爲一個類變量,當類(§12.4)初始化被體現。

1

你不能在方法中聲明一個靜態變量,static意味着它是一個類的變量/方法,它屬於整個類,但不屬於它的某個特定對象。 這意味着static關鍵字只能在'類作用域'中使用,即它在方法內部沒有任何意義。

我不知道你想達到什麼,但如果你真的想讓這些變量是靜態的,那麼你可以在你的類中聲明它們爲靜態字段。

0

您必須將靜態變量定義爲類中的成員。在方法中定義的變量是局部變量,它們的生命週期在方法結束時結束。局部變量是特定於調用的,成員變量是特定於對象的,靜態變量是特定於類的變量。

0

您需要聲明的功能之外的靜態變量:

static int first=0; 
static int second=1; 
static int sum; 
private static int Fibonoci(int n) { 
    if(n>0) 
0

你不能聲明varibale的方法中作爲靜態的。換句話說,我們可以說, 局部變量不能被聲明爲靜態的。

1

的根本原因:靜態變量在類加載時間分配的內存,因爲它們是類的一部分,而不是它的對象。

現在,如果靜態變量位於方法中,那麼該變量將進入方法的作用域,JVM將無法爲其分配內存。

+1

但這正是靜態局部變量用於像C或C++這樣的語言中的原因:使用靜態內存而不是堆棧,但將其範圍限制在函數內部。類範圍中的靜態變量是另一回事,因爲它對所有其他方法都是可見的。 – SasQ

相關問題