一、概念区分
0、变量
通常说的变量,就是将对象的状态存储到字段中
int a = 10;
1、成员变量
成员变量:作用范围是整个类,相当于C语言中的全局变量,定义在方法体和语句块之外,一般定义在类的声明之下;
成员变量包括:实例变量、静态变量(又叫类变量) 和 常量。
2、实例变量
实例变量: 不用 static
修饰的成员变量。
随对象的创建而创建,每个对象都有自己的独有的实例变量,属于对象私有。
调用要实例化对象,用 对象名.实例变量名
才可以调用,如:
Demo demo = new Demo();
int youAge = demo.age;
当然,一般都会将成员变量设为 private
,通过属性方法调用。
3、静态变量、类变量
静态变量: 用static
修饰的成员变量,又叫类变量。
一个类里只有一份,属于对象共有,调用是一般用 类名.静态变量名
就可以调用,或者用 对象名.静态变量名
也可以调用,调用的都是同一个变量,如:Student.height
。
static final int HEIGHT= 10;
4、常量
用 final
修饰的成员变量叫常量,在类中也是只有一份,同时不可以修改它的值。
final int TIMES= 10;
5、静态常量
用 static final
修饰的成员变量叫常量,在类中也是只有一份,同时不可以修改它的值。
static final int TIMES = 10;
6、字段
通常是在类中定义的成员变量,所以也和成员变量的概念差不多是一个意思。
7、 属性
属性是只局限于类中方法的声明,不与其他的类成员相关。只与类中的 get()/set()
方法有关。
如果类中有这样的 getX()/setX()
方法,我们就可以说类中有可以读写的x属性。
如:
private String name;
public int getName() { //name 的可读属性
return this.name;
}
public void setName(String name) {//name 的可写属性
this.name= name;
}
8、局部变量
作用范围在它定义的方法体或者语句块内部,出了这个范围就无效了。
public void get(){
int a = 10;
}
二、代码示例
public class Student{
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;
}
}