您的位置  > 互联网

(干货)直接上干货!定义类中的成员!

定义类实际上就是定义类中的成员。

成员:成员变量属性、成员函数行为。

局部变量在方法内部声明,只能在方法内部使用。 调用外部方法时会分配内存。 方法执行后,请求自动释放内存并终止。 使用局部变量时,必须先对其进行初始化。 初始化。 它是在方法体中定义的变量,也是方法的参数,仅在定义它的方法内有效。 如果成员变量违反了人工初始化,系统会自动根据其类型对其进行初始化。 基本数据类型变量被系统赋值为 0,引用变量被赋值为 null。

成员变量和局部变量就像正式工和临时工。 成员变量是正式员工,他们一直存在,与公司同生共死。 局部变量是临时工作者。 公司让临时工做点事,做完了,临时工就走了。 没有了,毁了。

静态变量是所有对象共有的变量。 无需创建对象即可直接引用它们。 普通变量只有在创建了类的对象后才能被引用。 局部变量和成员变量属于非静态变量,必须在调用前动态创建,不能直接调用。 非静态成员变量定义后,计算机随机给出一个地址。 当程序结束时,地址被恢复。 静态成员变量是不被回收的,一旦给了它地址,这个地址就属于它了。 不管程序是否结束,它都在等待一个语句来释放它,或者当计算机关闭时它就消失了。

全局变量,也称为成员变量,是指类中定义的变量; 它们在整个类中有效,可以分为类变量和实例变量。 类变量也称为静态变量。 修改后可以直接用类名或者对象来调用。 而且,所有对象的同一个类变量共享相同的内存空间。 实例变量不需要修改,只能通过对象来调用,并且所有对象的相同实例变量共享不同的内存空间。

成员变量和局部变量的区别:

1、成员变量是在类中定义的,并且可以在整个类中访问。

局部变量定义在函数、语句和局部代码块中,并且仅在它们所属的区域中有效。

2、成员变量存在于堆内存中的对象中。

局部变量存在于堆栈内存中的方法中。

3、成员变量随着对象的创建而存在,随着对象的消失而消失。

局部变量随着其所属区域的执行而存在,并随着其所属区域的结束而释放。

4、成员变量有默认的初始化值。

局部变量没有默认的初始化值。

看代码:

class Person{  
    String name;//姓名,这是一个成员变量  
    static String country = "中国";//国籍,这是一个静态变量  
  
    public void printInfo()  {  
        System.out.println(name+":"+country);  
    }  
}  

在上面的代码中,我们可以看到变量名是一个成员变量,而是一个静态变量,用关键字修饰。

1、两个变量的生命周期不同:

成员变量:在对象创建时存在,在对象回收时释放。

静态变量:类加载时存在,类消失时消失。

那么课程什么时候消失呢? 一般情况下,当虚拟机结束时,课程也结束。 当然,这只是在正常情况下。

2、两个变量的调用方式不同:

我们来看一下上面代码的测试:

class StaticTest{  
    public static void main(String[] args){  
        Person p = new Person();  
        p.name = "小强";  
        String name = Person.name;  
        System.out.println(p.country+"--"+Person.country);  
    }  
}  

我们可以看到,直接使用类名调用成员变量会导致错误“无法从静态上下文访问非静态变量”。

当我们注释掉这条语句然后运行它时:

class StaticTest{  
    public static void main(String[] args){  
        Person p = new Person();  
        p.name = "小强";  
        //String name = Person.name;  
        System.out.println(p.country+"--"+Person.country);  
    }  
}  

结果发现

程序运行正常,访问合法,所以我们可以总结出以下区别:

成员变量:只能被对象调用。

静态变量:可以被对象和类调用。 在上一节中,我们了解到可以使用类名直接调用修饰成员。

3、两个变量的别名不同:

成员变量:也称为实例变量。

静态变量:也称为类变量。

4、两个变量的存储位置不同:

成员变量:存储在堆内存中的对象中,因此也称为对象特定数据。

静态变量:存储在方法区的静态区(共享数据区),因此也称为类的共享数据。