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