在实例中说明java的类变量,成员变量和局部变量

 

java中一般有三种变量:类变量,成员变量和局部变量。类变量

1.下面先看类变量,看下面这个例子

public class Demo6{
    public String name;
    public int age;
    public static String sex="男";

    public Demo6(String name, int age){
        this.name = name;
        this.age = age;;
    }

    public void say(){
        System.out.println("我的名字是"+name+",我今年"+age+"岁.");
    }

    public static void main(String args[]){
        Demo6 obj = new Demo6("alex",25);
        obj.say();
        System.out.println("我是"+sex+"生");
//        System.out.println("我今年"+age+"岁");
    }
}

类变量可以无需实例化便可访问(ps:如果一个实例改掉了类变量的值,其他实例调用此类变量值时也是改动后的)

如果去掉注释

System.out.println("我今年"+age+"岁");

,则会报错:Error:(19, 34) java: /Users/lsf/IdeaProjects/JavaPractice/src/Demo6.java:19: 无法从静态上下文中引用非静态 变量 age  

2.接下来来看成员变量和局部变量,还是看这个例子,做一点小改动

public class Demo6{
    public String name;
    public int age;
    public static String sex="男";

    public Demo6(String name1, int age){
        this.name = name1;
        this.age = age;;
    }

    public void say(){
        System.out.println("我的名字是"+name+",我今年"+age+"岁.");
//        System.out.println("我的名字是"+name1+",我今年"+age+"岁.");
    }

    public static void main(String args[]){
        Demo6 obj = new Demo6("alex",25);
        obj.say();
        System.out.println("我是"+sex+"生");
    }
}

  当执行下面这句时结果是正确的:

System.out.println("我的名字是"+name+",我今年"+age+"岁.");

这是因为name是成员变量,在整个实例中有效。而name1是局部变量,只在方法体内有效,如果像下面这样直接调用name1,则会报错

System.out.println("我的名字是"+name1+",我今年"+age+"岁.");

报错信息为:

Error:(13, 36) java:找不到符号
符号: 变量 name1
位置: 类 Demo6

posted @ 2015-07-09 00:07  李雷雷alexkn  阅读(8086)  评论(0编辑  收藏  举报