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