//定义一个用户类
public class User
{
//属性【以下都是成员变量之实例变量】
//用户编号
//int是一种【基本数据】类型:整数型
//no是一个实例变量
int no;
//用户名
//String是一种引用数据类型:代表字符串
//name是一个实例变量
//name是一个引用
String name;
//家庭住址
//Address是一种引用数据类型:代表家庭住址
//addr是一个实例变量
//addr是一个引用
Address addr;
}
//定义一个家庭住址类
public class Address
{
//属性【成员变量之实例变量】
//城市
//String是一种引用数据类型,city是一个变量名,属于实例变量
//city是一个引用:保存内存地址的一个变量,该变量保存内存地址指向了堆内存中的对象
String city;
//街道
String street;
//邮编
String zipcode;
}
//测试类
public class OOTest02
{
public static void main(String[] args)
{
//创建User对象
//u是局部变量
//u是一个引用
//u保存内存地址指向堆内存的User对象
User u=new User();
//输出User对象内部实例变量的值
System.out.println(u.no);//0
System.out.println(u.name);//null
System.out.pritnln(u.addr); //null
//修改User对象内部实例的值
u.no=110;
//"jack"是一个java对象,属于String对象,在堆内存中会自动new实例化出来
u.name="jack";
//Address是我们刚刚定义的一个类,如果要使用Address类里面的变量,就需要实例化Address类对象
u.addr=new Address();
//重点:在main方法中目前只能看到一个引用"u"
//一切都只能通过引用u来进行访问对象
u.addr.city="世界村";//赋值
u.addr.street="北京路";
System.out.println(u.name+"居住城市:"+u.addr.city);
System.out.pritnln(u.name+"居住街道:"+u.addr.street);
//结论:引用可以是局部变量,也可以是成员变量【实例变量】
}
}