java中的成員變量、靜態變量與局部變量


java中的變量分為成員變量(又叫實例變量)、靜態變量和局部變量。

1.成員變量

1.1 成員變量(實例變量)是在類中定義的非static修飾的變量,可以不用賦初始值,不同的數據類型有默認的初始值。

package test;

import org.junit.Test;

public class VariableTest {
	byte bt;
	short s;
	int age;
	long l;
	float f;
	double d;
	char c;
	boolean flag;
	String name;
	
	@Test
	public void cvariable(){
		VariableTest vt=new VariableTest();
		System.out.println("byte類型的默認值為:"+vt.bt);
		System.out.println("short類型的默認值為:"+vt.s);
		System.out.println("int類型的默認值為:"+vt.age);
		System.out.println("long類型的默認值為:"+vt.l);
		System.out.println("float類型的默認值為:"+vt.f);
		System.out.println("double類型的默認值為:"+vt.d);
		//'\u0000'為空
		if(c=='\u0000'){
			System.out.println("char類型的默認值為'\u0000'");
		}
		System.out.println("boolean類型的默認值為:"+vt.flag);
		System.out.println("String類型的默認值為:"+vt.name);
	}
}

 運行結果:

byte類型的默認值為:0
short類型的默認值為:0
int類型的默認值為:0
long類型的默認值為:0
float類型的默認值為:0.0
double類型的默認值為:0.0
char類型的默認值為'

1.2 實例變量只有初始化一個副本之后才可以使用,每當實例化一個對象,會在堆中創建一個副本並初始化,各個對象中對實例變量的修改互不影響。

package test;
import org.junit.Test;

public class VariableTest {
    int age;
    @Test
    public void cvariable2(){
        VariableTest vt1=new VariableTest();
        vt1.age++;
        System.out.println("vt1.age:"+vt1.age);  //vt1.age:1
        VariableTest vt2=new VariableTest();
        vt2.age++;
        System.out.println("vt2.age:"+vt2.age);  //vt2.age:1
    }
}

2.靜態變量

定義在類中被static修飾的變量,類加載時在方法區中分配存儲空間,被類所擁有,任意一個對象對其修改都會改變該變量的值。

package test;

import org.junit.Test;

public class VariableTest {
	
	static int num;
	
	@Test
	public void staticVariableTest(){
		VariableTest vt1=new VariableTest();
		vt1.num++;
		System.out.println(vt1.num);   //1
		VariableTest vt2=new VariableTest();
		vt2.num++;
		System.out.println(vt2.num);   //2
	}
	
}

 3.局部變量

局部變量是指定義在方法體中的變量,變量定義后必須賦初始值。若為基本類型,值直接存儲在棧中,若為引用類型,其對象存儲在堆中,而把對象的引用存儲在棧中。

 4.成員變量的作用域

 成員變量的作用域:

  • public:當前類,同一package的其他類,其他package的當前類的子類,其他package的類都可以訪問(4);
  • private:只有當前類能訪問(1);
  • protected:當前類,同一package的其他類,其他package的當前類的子類都可以訪問(3);
  • default:只有當前類和其位於同一包內的類可以訪問(2);

這些修飾符只能修飾成員變量,不能修飾局部變量。(只有public,abstract,final能用來修飾類)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM