读书笔记
类内成员变量分为:
有static:静态变量/类变量。属于类本身的特性
无static:非静态变量/实例变量。属于对象
开发中需要我们将内存分配合理
代码如下
Person.java
public class Person
{
String name;
int age;
static int eyenum;
public void info()
{
System.out.println("我的名字是:" + name + ",我的年龄是:" + age);
}
}
FieldTest.java
public class FieldTest
{
public static void main(String[] args)
{
Person.eyenum = 2;//_________(1)_________
System.out.println("Person的eyenum属性:" + Person.eyenum);
Person p1 = new Person();
p1.name = "BaiJie";
p1.age = 19;
System.out.println("通过p1的eyenum属性:" + p1.eyenum);//_________(2)____________
p1.info();
Person p2 = new Person();
p2.name = "XuHongxiang";
p1.age = 19;
p2.eyenum = 3;//_________(3)___________
System.out.println("---------------\n通过p1的eyenum属性:" + p1.eyenum);
System.out.println("通过p2的eyenum属性:" + p2.eyenum);
System.out.println("Person的eyenum属性:" + Person.eyenum);
}
}
警告如下
运行结果
Person的eyenum属性:2
通过p1的eyenum属性:2
我的名字是:BaiJie,我的年龄是:19
---------------
通过p1的eyenum属性:3
通过p2的eyenum属性:3
Person的eyenum属性:3
代码分析
(1)::把Person.eyenum赋值为2。
(2):由于eyenum本质上是Person类的类变量而非实例变量,所以即使JAVA允许通过Person实例来访问,但底层依然会转换为通过Person访问eyenum类变量。
(3):当通过p2对eyenum类变量赋值,实际上仍然是对Person类的eyenum类变量进行赋值。
故p1、p2、Personl类访问eyenum时都是输出3。