![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
JAVA 简述static成员变量与非static成员变量的主要区别
5个回答
展开全部
主要区别:
static变量是静态变量,当加载类时即已加载,非static变量实例对象时加载。
static变了是静态变量,在内存中只保存一份,当改变其中的值,其它实例中的该static变量也会改变,非static变量只会在具体所在的那个对象中改变,不会影响其它实例
static变量的调用方法是类.变量 而非static变量是new 对象,用实例.变量。
static可以与final 组成常量
展开全部
static是为了将某个成员变量/方法关联到类(class)而非实例(instance)。
你不需要创建一个对象就可以直接使用这个类的static成员,
在A类中调用B类的static成员可以使用B.staticMember的写法。
注意一个类的static成员变量是唯一的,被所有该类对象所共享的。
比如说有一个类Dog;
属性:clolor,狗狗可以有好多颜色;
munberOfLegs =4 每只狗狗只有4条腿,这个就应该是静态的;
静态的属性不依赖于类的存在而存在,简单说,你可以定义
Dog dog1 = new Dog();
Dog dog2 = new Dog();
Dog dog3 = new Dog();
这里定义了三条狗狗,狗狗的颜色依赖于类本身,即dog1,dog2,dog3;三条狗狗可以有不同的颜色;
而狗狗的腿的数量不依赖于dog1,dog2,dog3;所有的狗狗都是4条腿
你不需要创建一个对象就可以直接使用这个类的static成员,
在A类中调用B类的static成员可以使用B.staticMember的写法。
注意一个类的static成员变量是唯一的,被所有该类对象所共享的。
比如说有一个类Dog;
属性:clolor,狗狗可以有好多颜色;
munberOfLegs =4 每只狗狗只有4条腿,这个就应该是静态的;
静态的属性不依赖于类的存在而存在,简单说,你可以定义
Dog dog1 = new Dog();
Dog dog2 = new Dog();
Dog dog3 = new Dog();
这里定义了三条狗狗,狗狗的颜色依赖于类本身,即dog1,dog2,dog3;三条狗狗可以有不同的颜色;
而狗狗的腿的数量不依赖于dog1,dog2,dog3;所有的狗狗都是4条腿
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2017-11-26 · 知道合伙人数码行家
关注
![](https://wyw-base.cdn.bcebos.com/pc-content/follow.gif)
展开全部
您好,提问者:
1、静态变量用static关键字修饰。
2、如果定义了静态变量,那么加载class文件的时候会优先加载。
3、它的范围是直到程序停止,静态内存才会消失。
4、而且static关键字修饰的变量会只加载一次。
5、静态方法中可以直接调用静态的,而非new,访问格式:类名.静态;
6、静态方法中不可直接调用非静态方法,但是非静态方法中,可以直接调用静态的。
1、静态变量用static关键字修饰。
2、如果定义了静态变量,那么加载class文件的时候会优先加载。
3、它的范围是直到程序停止,静态内存才会消失。
4、而且static关键字修饰的变量会只加载一次。
5、静态方法中可以直接调用静态的,而非new,访问格式:类名.静态;
6、静态方法中不可直接调用非静态方法,但是非静态方法中,可以直接调用静态的。
追问
如果考试照你这么答,不行吧!!
追答
可以的,你也可以加点代码。
这样分1,2,3,4,5,6分开俩讲区别,已经很能说明问题了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
static成员变量 - 有全局变量的作用
非static成员变量 - 则没有全局变量的作用
class A{
static int wang; //有全局变量的作用
int ju;
static int fun1(void); //如果你声明了一个静态函数,请见下面如何调用
}
// 实现类
public class Music4 {
public static void main(String[] args) {
A a= new A();
A b= new A();
a.wang = 19;
a.ju = 20;
System.out.print(a.wang);
System.out.print('\n');
System.out.print(a.ju);
System.out.print('\n');
System.out.print(b.wang);
System.out.print('\n');
System.out.print(b.ju);
A.fun1();//你可以直接调用该函数,而不用实例化
}
}
/**输出结果:
19
20
19
0
*/
非static成员变量 - 则没有全局变量的作用
class A{
static int wang; //有全局变量的作用
int ju;
static int fun1(void); //如果你声明了一个静态函数,请见下面如何调用
}
// 实现类
public class Music4 {
public static void main(String[] args) {
A a= new A();
A b= new A();
a.wang = 19;
a.ju = 20;
System.out.print(a.wang);
System.out.print('\n');
System.out.print(a.ju);
System.out.print('\n');
System.out.print(b.wang);
System.out.print('\n');
System.out.print(b.ju);
A.fun1();//你可以直接调用该函数,而不用实例化
}
}
/**输出结果:
19
20
19
0
*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主要是static成员变量可以在类中直接调用,不用接类名点出来
另外就是设计到在jvm中的内存分配问题
用static修饰的是直接加载到方法区,其他的就在栈呐堆呐中加载
另外就是设计到在jvm中的内存分配问题
用static修饰的是直接加载到方法区,其他的就在栈呐堆呐中加载
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |