用static修飾的變量,和普通成員變量有什么區別,難道成員變量不是屬于整個類的么,之前為什么說成員變量和局部變量的時候,說成員變量的作用范圍是從類開始到結束。
用static修飾的變量,和普通成員變量有什么區別,難道成員變量不是屬于整個類的么,之前為什么說成員變量和局部變量的時候,說成員變量的作用范圍是從類開始到結束。
用static修飾的變量,和普通成員變量有什么區別,難道成員變量不是屬于整個類的么,之前為什么說成員變量和局部變量的時候,說成員變量的作用范圍是從類開始到結束。
2018-05-20
舉報
2018-10-20
static修飾的變量是在類加載的時候就被創建并分配內存空間,而沒有static修飾的變量只有在類被實例化時才會被創建并分配內存空間
2018-07-03
你聯系一下后面章節的靜態初始化,一般用【new 類名 】來創建對象時,會執行一個初始化塊,前面構造方法也說了,沒有構造方法時系統自動創建構造方法對成員變量初始化,而帶了static的會優先初始化。貌似還有節約內存的好處,具體不清楚。自己的理解,有錯誤歡迎指出。
2018-05-20
static修飾的變量可以被所有方法訪問,但是靜態方法只能訪問靜態變量,不能訪問普通成員變量。類的成員變量在整個類都有效,局部變量只在局部的方法中有效,你就看變量在哪個大括號范圍就可以判斷,比如:
public class HelloWorld
{
int a=10;
static int b=20;
public static void say1()
{
int c=30;
//System.out.println(a);//這里不能訪問a,因為靜態方法不能訪問非靜態變量a。
System.out.println(b);//這里可以訪問b,靜態方法可以訪問靜態變量b。
System.out.println(c);//這里可以訪問c,變量c只在say1( )方法內有效
//say1( )是靜態方法,只能訪問靜態變量,所有不能訪問靜態變量b,但是可以訪問非靜態變量c,因為c是非靜態方法say1( )的內部變量,也就是局部變量。
}
public void say2()
{
System.out.println(a);//可以訪問a,變量a在整個HelloWorld類中有效,是成員變量也叫全局變量。System.out.println(b);//可以訪問a,變量b在整個HelloWorld類中有效,是成員變量也叫全局變量。
//System.out.println(c);//這里不能訪問c,因為c是局部變量,只在say1( )有效
//say2( )是非靜態方法所有可以訪問所有變量,但是不能訪問變量c,因為c只能在say1( )內才有效
}
public static void main(String[] args)
{
HelloWorld poj1=new HelloWorld();
poj1.say1();
poj1.say2();
}
}
2018-05-20
static修飾的變量可以被所有方法訪問,但是靜態方法只能訪問靜態變量,不能訪問普通成員變量。類的成員變量在整個類都有效,局部變量只在局部的方法中有效,你就看變量在哪個大括號范圍就可以判斷,比如:
public class HelloWorld
{
int a=10;
static int b=20;
public static void say1()
{
int c=30;
//System.out.println(a);//這里不能訪問a,因為靜態方法不能訪問非靜態變量a。
System.out.println(b);//這里可以訪問吧,靜態方法可以訪問靜態變量b。
System.out.println(c);//這里可以訪問c,變量c只在say1( )方法內有效
}
public void say2()
{
System.out.println(a);//可以訪問a,變量a在整個HelloWorld類中有效,是成員變量也叫全局變量。
System.out.println(b);//可以訪問a,變量a在整個HelloWorld類中有效,是成員變量也叫全局變量。
//System.out.println(c);//這里不能訪問c,因為c是局部變量,只在say1( )有效
//非靜態方法可以訪問所有變量
}
public static void main(String[] args)
{
HelloWorld poj1=new HelloWorld();
poj1.say1();
poj.say2();
}
}