java中如何区分成员变量的两种形式?要举例说明下谢谢。
3个回答
展开全部
类的成员变量根据是否使用了static修饰符,可划分为两种类型,分别是静态变量(又称类变量)和实例变量。(以下所述绝非粘贴)
静态变量:使用了static修饰符的变量。
实例变量:没有使用static修饰符的变量。
静态变量的特点:
1.静态变量在内存中只有一个,JVM(Java虚拟机)在加载类的时候为静态变量分配内存,静态变量位于方法区内,被类的所有实例共享。
2.静态变量可以直接通过类名进行访问,也可以通过类的实例访问。
3.静态变量的生命周期与类的生命周期同步,即当加载类时,静态变量被创建并分配内存;当类销毁时,静态变量也随之销毁所占的内存空间。
实例变量的特点:
1.类的每个实例都有相应的实例变量,每当创建一个类的实例时,JVM(Java虚拟机)都会为实例变量分配一个内存空间。实例变量位于堆中。
2.实例变量必须通过类的实例进行访问。
3.实例变量的生命周期取决于实例的生命周期,即当实例被创建时,实例变量被创建并分配内存空间;当实例被销毁时,实例变量也随之销毁并销毁所占的内存空间。
楼主,上面写的是我的笔记,下面是我写的一个例子,来区别实例变量和静态变量。
第一个类:
//模拟选举计算投票
public class Xuanju {
public static int count=0;//静态变量,来统计总票数,初始化为0
public int number=0;//实例变量,表示每个人投的票数,初始化为0
public void add(int num){
count=count+num;//统计总票数
number=number+num;//统计每个选民的票数
}
}
第二个是测试类:
public class Xuanjutest {
public static void main(String[] args) {
Xuanju a=new Xuanju();//创建选举人a
Xuanju b=new Xuanju();//创建选举人b
Xuanju c=new Xuanju();//创建选举人c
a.add(1);//a投1票
b.add(1);//b投1票
c.add(1);//c投1票
System.out.println("a投"+a.number+"票");
System.out.println("b投"+b.number+"票");
System.out.println("c投"+c.number+"票");
System.out.println("总票数为"+Xuanju.count);
}
}
输出结果是:
a投1票
b投1票
c投1票
总票数为3
静态变量:使用了static修饰符的变量。
实例变量:没有使用static修饰符的变量。
静态变量的特点:
1.静态变量在内存中只有一个,JVM(Java虚拟机)在加载类的时候为静态变量分配内存,静态变量位于方法区内,被类的所有实例共享。
2.静态变量可以直接通过类名进行访问,也可以通过类的实例访问。
3.静态变量的生命周期与类的生命周期同步,即当加载类时,静态变量被创建并分配内存;当类销毁时,静态变量也随之销毁所占的内存空间。
实例变量的特点:
1.类的每个实例都有相应的实例变量,每当创建一个类的实例时,JVM(Java虚拟机)都会为实例变量分配一个内存空间。实例变量位于堆中。
2.实例变量必须通过类的实例进行访问。
3.实例变量的生命周期取决于实例的生命周期,即当实例被创建时,实例变量被创建并分配内存空间;当实例被销毁时,实例变量也随之销毁并销毁所占的内存空间。
楼主,上面写的是我的笔记,下面是我写的一个例子,来区别实例变量和静态变量。
第一个类:
//模拟选举计算投票
public class Xuanju {
public static int count=0;//静态变量,来统计总票数,初始化为0
public int number=0;//实例变量,表示每个人投的票数,初始化为0
public void add(int num){
count=count+num;//统计总票数
number=number+num;//统计每个选民的票数
}
}
第二个是测试类:
public class Xuanjutest {
public static void main(String[] args) {
Xuanju a=new Xuanju();//创建选举人a
Xuanju b=new Xuanju();//创建选举人b
Xuanju c=new Xuanju();//创建选举人c
a.add(1);//a投1票
b.add(1);//b投1票
c.add(1);//c投1票
System.out.println("a投"+a.number+"票");
System.out.println("b投"+b.number+"票");
System.out.println("c投"+c.number+"票");
System.out.println("总票数为"+Xuanju.count);
}
}
输出结果是:
a投1票
b投1票
c投1票
总票数为3
展开全部
区分成员变量两种形式?
哪两种啊》
成员变量是属于对象的。你直接使用类名点 是不能引用的。
在本身类中,成员变量是不能在静态方法中直接引用,如public static void main(String[] args){}
还有什么啊?就是成员的属性就是一顶属于特定的对象。就比如 数组的length 属性。你数组都没定义,那你有什么属性啊。
String[] strArray = null;
System.out.println(strArray.length);
这就会报空指针了。这个length就是成员的么。
你就比如,Action.SUCCESS 这个就是静态的啊。(这个是常量,static final)
你就可以直接使用啊。
哪两种啊》
成员变量是属于对象的。你直接使用类名点 是不能引用的。
在本身类中,成员变量是不能在静态方法中直接引用,如public static void main(String[] args){}
还有什么啊?就是成员的属性就是一顶属于特定的对象。就比如 数组的length 属性。你数组都没定义,那你有什么属性啊。
String[] strArray = null;
System.out.println(strArray.length);
这就会报空指针了。这个length就是成员的么。
你就比如,Action.SUCCESS 这个就是静态的啊。(这个是常量,static final)
你就可以直接使用啊。
追问
呵呵 我刚学到这里 指针还不太清楚 就是举例简单明了些 成员变量不是分为实例变量和类变量吗? 好像是用new来区分的,具体怎么的我不清楚,能说说吗?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询