在Java中,变量可以分为实例变量和类变量两种类型。
实例变量,顾名思义,是属于对象实例的变量。每个对象都有自己的一份实例变量,它们的值可以互相独立。实例变量一般定义在类的内部,方法外部,使用public
、private
等关键字修饰,具体形式如下:
public class Person{ private String name; private int age; ... }
在上述代码中,name
和age
就是实例变量,它们属于对象实例,可以通过new
操作符实例化一个新的Person对象,访问它们的值,比如:
Person p1 = new Person(); Person p2 = new Person(); p1.name = "张三"; p1.age = 20; p2.name = "李四"; p2.age = 21; System.out.println(p1.name +" "+ p1.age); //输出"张三 20" System.out.println(p2.name +" "+ p2.age); //输出"李四 21"
上述代码中,通过p1.name
和p1.age
、p2.name
和p2.age
访问两个对象的实例变量,它们的值互相独立不会相互影响。
类变量,也叫静态变量,是属于类的变量。类的所有实例都共享一份类变量,它们的值是相同的。类变量可以直接通过类名.变量名
的方式访问,不需要实例化对象。类变量一般定义为static
类型,使用public
、private
等关键字修饰,具体形式如下:
public class Circle{ private static double PI = 3.14159; private double radius; ... }
在上述代码中,PI
就是类变量,它属于类而不是某个对象实例。可以通过Circle.PI
访问这个类变量,比如:
Circle c1 = new Circle(); Circle c2 = new Circle(); c1.radius = 1.0; c2.radius = 2.0; double area1 = c1.radius * c1.radius * Circle.PI; double area2 = c2.radius * c2.radius * Circle.PI; System.out.println("area1="+area1); //输出3.14159 System.out.println("area2="+area2); //输出12.56636
上述代码中,通过Circle.PI
访问类变量,计算圆的面积。变量radius
是实例变量,不属于类。创建两个Circle对象,它们的面积不同但PI值都相同。