当前位置: 移动技术网 > IT编程>开发语言>Java > Java笔记:类变量,实例变量以及注意事项

Java笔记:类变量,实例变量以及注意事项

2018年10月03日  | 移动技术网IT编程  | 我要评论
类变量(静态变量):独立于方法之外的变量,属于类本身。需要static修饰。 实例变量(非静态变量):独立于方法之外的变量,依赖实例存在。不需要static修饰。 Example(from CoreJava): 假定公司需要给每一个雇员赋予唯一的标识码。 分析:每一个雇员对象都有一个自己的id域,但 ...

类变量(静态变量):独立于方法之外的变量,属于类本身。需要static修饰。

实例变量(非静态变量):独立于方法之外的变量,依赖实例存在。不需要static修饰。

 

example(from corejava):

假定公司需要给每一个雇员赋予唯一的标识码。

分析:每一个雇员对象都有一个自己的id域,但这个类的所有实例将共享一个nextld 域。换句话说,如果有 1000 个employee类的对象,则有 1000 个实例域 id。但是,只有一个静态域 nextld。即使没有一个雇员对象,静态域 nextld 也存在。它属于类,而不属于任何独立的对象。

代码如下(以员工jack作为第一名员工简单示例):

 

 1  public class employee {
 2     
 3      public static int nextid=1;
 4      public int id;
 5      public void setid(){  //该方法意味着下面new的对象jack的id域(实例域)被设置为静态域nextld当前的值(1),并且静态域nextld的值加1
 6          id=nextid;
 7          nextid++;         
 8      }
 9      
10      public void method(){    //定义一个用于输出标识码的非静态方法
11          system.out.println(id);
12      }
13      
14      public static void main(string[] args){
15           employee jack=new employee();    //new一个叫jack的员工
16           jack.setid();    //调用setid方法为jack分配一个标识码
17           jack.method();    //调用method方法输出jack的标识码
18      }
19  
20 }

 

 

 

注:无法在静态变量中引用非静态成员(非静态变量,非静态方法),因为非静态的变量是依赖于对象存在的,对象必须实例化之后,它的变量才会在内存中存在。

  解决方案:一、将变量变为静态变量,在变量类型前增加static。

       二、先实例化一个对象,然后使用 对象名.变量名 来引用即可。

代码如下:

 

 1 //以下为第二种方法,第一种方法只需在第四行public和string之间增加static即可(name即变为静态变量)
 2 public class test {
 3     
 4         public string name;    //name为非静态变量
 5         
 6         public static void main(string[] args){
 7         test learner=new test();    //在主方法(为静态方法)中要调用非静态变量name,需要先实例化一个对象learner
 8         learner.name="西柚冬瓜";    //然后采用 对象名.变量名 方式来在主方法中引用非静态变量name
 9         system.out.println(learner.name);
10         }
11 
12 }

 

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网