static关键字的使用

来源:互联网 发布:淘宝新手开店视频教程 编辑:程序博客网 时间:2024/06/07 04:57

     在初学java时,是通过马士兵老师的J2SE视频入门的,老师从java环境的配置,编译和运行,一步步的引领我们走向java的世界。随着课程的深入,发现还是有一些与之前学习相类似的内容,当时没有总结的,现在拿出小demo来弥补一下。本篇博文主要复习一下static关键字的使用。

   先上例子:

public class Cat{private int sid=0;private String name;int id;Cat(String name){this.name =name;id=sid++;}public void info(){System.out.println("My name is " + name + " No." + id);}public static void main(String arg[]){Cat.sid=100;Cat mimi =new Cat("mimi");Cat pipi=new Cat("pipi");mimi.info();pipi.info();}}
            例子中没有使用static关键字,在运行时,Cat.sid=100;会报错,显示错误信息为Cannot make a static reference to the non-static field Cat.sid。

   这是因为在主方法中使用了static关键字来声明,该方法就是静态方法,在调用时,不再针对某个对象调用,也就不会将对象的引用传递给它,所以在static方法中不可访问非static的成员变量。

   例子中sid专属于某个对象的,只有实例化出某个对象后,该对象才会具有sid,若不实例化,则这个对象就不存在,该sid就不能使用。于是就可引出static关键,修改如下。

public class Cat{private static int sid=0;private String name;int id;Cat(String name){this.name =name;id=sid++;}public void info(){System.out.println("My name is " + name + " No." + id);}public static void main(String arg[]){Cat.sid=100;Cat mimi =new Cat("mimi");Cat pipi=new Cat("pipi");mimi.info();pipi.info();}}

             在类中,只需将sid用static声明为静态成员变量,它为该类的公有变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份。静态方法不会针对某个对象,没有对象照样可以调用。(类.方法名即Cat.静态方法名,不用写对象的名字,)也正因此,在static方法中不能访问非静态(非static)成员,上述例子的运行结果为:

              My name is mimi No.100

              My name is pipi No.101



0 0