1 变量、对象、类
-
变量:
变量是在编程中用来存储数据的占位符,它具有名称和值。在程序执行过程中,变量的值可以改变。根据作用域和生命周期的不同,变量可分为全局变量、局部变量、类变量(静态变量)、实例变量等。例如,在Java中,可以声明一个整型变量并赋值:int age = 25;
在这段代码中,
age
是一个变量,用于存储年龄这个数据。 -
对象:
对象是面向对象编程中的基本实体,它是类的一个实例。类是一个模板或蓝图,描述了一组相关属性(变量)和方法(行为)。当创建一个类的实例时,就得到了一个具体的对象。例如,假设有一个Person
类,包含姓名和年龄两个属性,以及一个介绍自己的方法:public class Person { String name; int age; public void introduce() { System.out.println("Hello, my name is " + name + ", and I am " + age + " years old."); } } // 创建一个Person对象 Person person = new Person(); person.name = "坤"; person.age = 30; person.introduce(); // 输出 "Hello, my name is 坤, and I am 30 years old."
在这里,
person
就是一个对象,它是Person
类的一个实例,拥有name
和age
属性,并且可以调用introduce()
方法。 -
类:
类是一种用户自定义的数据类型,它封装了数据(成员变量/属性)和操作数据的方法(成员函数/方法)。类是对现实世界中某个概念或实体的抽象,它可以被用来创建多个相同类型的对象。类定义了对象的状态和行为。继续上述例子,
Person
类就是一个定义了人这一概念的基本特性和行为的结构体。通过创建Person
类的对象,我们能够表示世界上无数个不同的人,并为他们设置不同的名字和年龄,同时也具备自我介绍的能力。
2 Java中变量的分类
-
按作用域(声明位置)区分:
- 局部变量:定义在方法、构造器或者代码块内部的变量,其作用范围仅限于它们所在的代码块内。当控制流离开该代码块时,局部变量就会被销毁。
- 成员变量:声明在类体中但不在任何方法内的变量,每个类实例都有自己的一份成员变量副本。成员变量的作用范围是整个类实例,从对象创建到垃圾回收为止。
- 类变量:使用
static
关键字修饰的成员变量,它属于类本身,而不是单个类实例。所有该类的对象共享同一份类变量副本,可以通过类名直接访问。
-
按生命周期(Lifetime)区分:
- 局部变量:生命周期最短,仅存在于创建它的方法或代码块执行期间。
- 成员变量(非静态):生命周期与对象相同,从对象创建开始,直到对象被垃圾回收结束。
- 类变量(静态变量):生命周期始于类加载完成,终于类卸载。即使没有创建类的实例,也可以通过类名访问类变量。
-
按存储位置(Storage Location)区分:
- 寄存器变量(Register Variables):这是编译器层面的概念,在Java中不明确指出,由JVM根据需要优化存储位置。
- 堆变量(Heap Variables):对象实例(包括非静态成员变量)存储在堆内存中。
- 方法区变量(Method Area Variables):类变量(静态变量)、常量池内容以及类结构信息存储在Java虚拟机的方法区内。
-
按数据类型区分:
- 基本类型变量:如int, double, boolean, char等。
- 引用类型变量:指向对象的引用,如String, Object以及其他自定义类的引用。
-
按是否可修改区分:
- 可变变量(Mutable Variables):值可以被改变的变量。
- 不可变变量(Immutable Variables):一旦初始化后就不能更改其值的变量,例如final修饰的基本类型变量和不可变对象引用。