在实例中说明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

时间: 2024-12-23 08:02:35

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

【java基础】成员变量和局部变量

成员变量和局部变量 根据定义变量位置的不同,可以将变量分为成员变量和局部变量        成员变量是在类范围内定义的变量        局部变量是在一个方法内定义的变量   成员变量可以分为:        实例属性 (不用static修饰)               随着实例属性的存在而存在       类属性 (static修饰)               随着类的存在而存在   成员变量无需显式初始化,系统会自动对其进行默认初始化   局部变量可分为:        形参(形式参数)

Java类的成员变量和局部变量

在Java中,成员变量和局部变量存在较大的差异性.首先,我们来看一下变量的分类图: 成员变量 成员变量被分为:类属性和实例属性. 类属性:定义一个属性时,不使用static修饰的就是实例属性, 实例属性:定义一个属性时,使用static修饰的是类属性. 类属性从这个类的准备阶段起开始存在,直到系统完全销毁这个类,类属性的作用域与这个类的生存范围相同: 而实例属性则从这个类的实例被创建开始存在,直到系统完全销毁整个实例,实例属性的作用域与对应实例的生存范围相同. PS:一个类在使用之前,要经过类加

【java基础】成员变量和局部变量02

成员变量和局部变量(2) 成员变量的初始化和内存中的运行机制         当系统加载类或者创建类的实例的时候,系统会自动为成员变量分配内存空间,并自动指定初始值. package object; public class Person { //定义一个静态的变量 public static String city; //定义一个非静态的变量 public String name; public static void main(String[] args) { /*当person类加载的时候

【Java基础】成员变量和局部变量的区别

在类中的位置不同 成员变量:在类内部方法外部 局部变量:在方法体内部定义的或者方法的参数中定义的在内存中的位置不同 成员变量:在堆内存,有初始化值,byte,short,int,long->0,char->'\u0000',float,double->0.0,引用类型->null: 局部变量:在栈内存,没有初始化的值,必须初始化后才能使用.生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失初始化值不同 成员变

第3章 Java语言基础 成员变量与局部变量

在对局部变量进行赋值时,不能对非静态字段age进行静态引用,如下图所示:

成员变量、局部变量、差异和静态变量

在堆栈区成员变量,自属于所述对象的部分成员.对象是成对分配 局部变量被分配在占,引用的对象被分配在栈上 静态变量被分配在静态区域中的方法区 1:成员变量和局部变量之间的差 (1)在类中的位置不同 成员变量:类中方法外 局部变量:方法定义中或者方法声明上 (2)在内存中的位置不同 成员变量:在堆中 局部变量:在栈中 (3)生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在.随着方法的调用完成而消失 (4)初始化值不同 成员变量:有默认值 局部变量:没

java 成员变量、局部变量、静态变量、类变量、非静态变量、实例变量、向前引用、非法向前引用、静态代码块、非静态代码块

①java类的成员变量有俩种: 一种是被static关键字修饰的变量,叫类变量或者静态变量 另一种没有static修饰,为成员变量 ②通俗点说: 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享.静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期. 而实例变量取决于类的实例.每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期. 注意点: 1.JAVA中初始化

随笔⑨ java中的变量 --- 类变量(静态变量),final变量,成员变量,局部变量

java中的变量 --- 类变量(静态变量),final变量,成员变量,局部变量 ① 类变量(也叫静态变量)是类中独立于方法之外的变量,用static 修饰,静态变量随着类的加载而加载. ② final变量:用final关键字修饰,不能被修改.与static一起用可表示常量. ③ 成员变量(也叫"实例变量"."域"):也是类中独立于方法之外的变量,不过没有static修饰.可以不进行初始化,Java会自动进行初始化,如果是引用类型默认初始化为null,如果是基本类型

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类。 (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。 (3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。 (4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。 分析以上程

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类. (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法.(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承.(4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承. 分析以上程序示例,主要疑惑点是“子类继承父类的成员变量,父类对象是否会实例化?私有成员变量是否会被继承?被继承的成员变量