成员变量
我们来研究一个事物时一般从以下几个角度考虑:
1、属性:外在特征(例如人的身高,体重);2、行为:能够做什么(例如说话,打球等行为)。
而在Java语言中,最基本的单位是类,类就是用来体现事物的。用类class来描述事物也是如此:
1、属性:对应类中的成员变量;2、行为:对应类中的成员函数。
定义类其实就是在定义类中的成员(成员变量和成员函数)
拓展:类是一个抽象的概念,而对象就是类的具体的存在,体现。例如:生活中的汽车,可以看做一个类,我们称之为汽车类,每一台车都有颜色和轮胎数(可以定义为属性,即成员变量),每一台车都可以跑(即车的行为,对应类总的成员函数),我们把汽车实例化一下,即会产生一个对象,比如一台奔驰AMG35、宝马M2。
public class Car {
private String color; // 成员变量
private int numLuntai; // 成员变量
public Car(String color, int numLuntai){
super();
this.color = color;
this.numLuntai = numLuntai;
}
public void run() {
System.out.println(this.numLuntai+ "个轮子的" +this.color + "轿车在马路上行驶着");
}
}
package demo;
public class ClassTest {
public static void main(String[] args){
Car cartest = new Car("黑色", 4);
cartest.run();
}
}
结果:
其中color和numLuntai就称为Car 类的成员变量,这个属性能够用来描述一个类的属性,否则,它就应该定义为局部变量。
public class Car {
private String color; // 定义汽车颜色,全局变量
private int numLuntai; // 定义汽车轮胎数,全局变量
public Car(String color, int numLuntai){
super();
this.color = color;
this.numLuntai = numLuntai;
}
public void run() {
String carName=”宝马牌”; //局部变量
System.out.println(this.numLuntai+ "个轮子的" +this.color + carName+"轿车在马路上行驶着");
}
}
publicclass ClassTest {
public static void main(String[] args){
Car bmw = new Car("黑色", 4); // 创建一个轿车对象,名字为bmw
bmw.run();
}
}
静态变量
由static修饰的变量称为静态变量,其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的特殊描述。 示例:
package demo;
public class StaticDemo{
public static void main(String[]args){
Person p = new Person();
System.out.println(p.country);
System.out.println(Person.country);
}
}
class Person{
String name;
static String country = "CN";
public void show(){
System. out.println(country + ":" + name);
}
}
输出:
成员变量和静态变量的区别
1、两个变量的生命周期不同
成员变量随着对象(p)的创建而存在,随着对象被回收而释放。
静态变量随着类(Person)的加载而存在,随着类的消失而消失。
2、调用方式不同
成员变量只能被对象调用。
静态变量可以被对象调用(p),还可以被类名调用(Person)。
3、别名不同
成员变量也称为实例变量。
静态变量也称为类变量。
4、数据存储位置不同
成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
附:成员变量、局部变量、静态变量的对比