为了账号安全,请及时绑定邮箱和手机立即绑定

用static修饰的变量,和普通成员变量有什么区别,难道成员变量不是属于整个类的么,之前为什么说成员变量和局部变量的时候,说成员变量的作用范围是从类开始到结束。

用static修饰的变量,和普通成员变量有什么区别,难道成员变量不是属于整个类的么,之前为什么说成员变量和局部变量的时候,说成员变量的作用范围是从类开始到结束。


正在回答

4 回答

static修饰的变量是在类加载的时候就被创建并分配内存空间,而没有static修饰的变量只有在类被实例化时才会被创建并分配内存空间


0 回复 有任何疑惑可以回复我~

你联系一下后面章节的静态初始化,一般用【new 类名 】来创建对象时,会执行一个初始化块,前面构造方法也说了,没有构造方法时系统自动创建构造方法对成员变量初始化,而带了static的会优先初始化。貌似还有节约内存的好处,具体不清楚。自己的理解,有错误欢迎指出。

1 回复 有任何疑惑可以回复我~

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();

}

}


8 回复 有任何疑惑可以回复我~

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();

}

}



4 回复 有任何疑惑可以回复我~
#1

有态度的网友

say2()方法第二行注释错了吧
2018-07-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

用static修饰的变量,和普通成员变量有什么区别,难道成员变量不是属于整个类的么,之前为什么说成员变量和局部变量的时候,说成员变量的作用范围是从类开始到结束。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信