首先看个例子:
- package zm.demo;
- public class Demo {
- private int Id;// 成员变量(字段), 实例变量(表示该 Id 变量既属于成员变量又属于实例变量)
- private String name;// 成员变量(字段), 实例变量
- public int age;// 成员变量(字段), 实例变量(这里用来举例子, 在实际中一般都会设置为 private)
- public static final String mood = "开心";// 成员变量(公共字段), 常量
- private static String height = "都很高";// 成员变量(字段), 类变量(静态变量)
- public void study() {// 普通方法
- String study = "learning";// 局部变量
- }
- public int getId() {//id 的可读属性
- return Id;
- }
- public void setId(int id) {//id 的可写属性
- Id = id;
- }
- public String getName() {//name 的可读属性
- return name;
- }
- public void setName(String name) {//name 的可写属性
- this.name = name;
- }
- public int getAge() {//age 的可读属性
- return age;
- }
- public void setAge(int age) {//age 的可写属性
- this.age = age;
- }
- }
1. 成员变量: 作用范围是整个类, 相当于 C 语言中的全局变量, 定义在方法体和语句块之外, 一般定义在类的声明之下; 成员变量包括: 实例变量, 类变量 (又叫静态变量) 和常量.
2. 局部变量: 作用范围在它定义的方法体或者语句块内部, 出了这个范围就无效了.
3. 实例变量: 不用 static 修饰的成员变量, 随对象的创建而创建, 每个对象都有自己的独有的实例变量, 属于对象私有; 调用要实例化对象, 用对象名. 实例变量名才可以调用, 如: Demo demo = new Demo(); int YouAge = demo.age;(当然, 一般都会将成员变量设为 private, 通过属性方法调用).
4. 静态变量: 用 static 修饰的成员变量, 又叫类变量, 一个类里只有一份, 属于对象共有, 调用是一般用类名. 静态变量名就可以调用, 或者用对象名. 静态变量名也可以调用, 调用的都是同一个变量, 如: Demo.height.
5. 类变量: 和静态变量是同一个概念.
6. 常量: 用 static final 修饰的成员变量叫常量, 在类中也是只有一份, 同时不可以修改它的值.
7. 字段: 通常是在类中定义的成员变量, 所以也和成员变量的概念差不多是一个意思.
8. 属性: 属性是只局限于类中方法的声明, 不与其他的类成员相关. 只与类中的 get()/set()方法有关.
如果类中有这样的 getX()/setX()方法, 我们就可以说类中有可以读写的 x 属性 (如果 getXY()/setXY() 方法后面的 Y 是小写, 就叫 xy 属性, 如果 Y 是大写, 就叫 XY 属性), 如:
- public int getId() {//id 的可读属性
- return Id;
- }
- public void setId(int id) {//id 的可写属性
- Id = id;
- }
我们就说 Demo 类有可读写的 id 属性, 只有 getId(), 没有 setId(), 我们就说有可读的 id 属性, 只有 setId(), 没有 getId(), 我们就说有可写的 id 属性.
总结:
该 Demo 类中有: 5 个字段, 3 个可读写属性, 5 个成员变量, 1 个局部变量, 3 个实例变量, 1 个静态变量 (类变量) 和 1 个常量.
来源: http://www.bubuko.com/infodetail-2995024.html