/*
对象的创建和使用*/
public class OOTest01
{
public static void main(String[] args)
{
//通过一个类可是实例化N个对象
//实例化对象的语法:new.类名();
//new是java语言中的一个运算符
//new运算符的作用是创建对象,在JVM【堆】内存中开辟新的内存空间
//方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间中
//栈内存【局部变量】:方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈
//堆内存:new的对象在堆内存中存储
//Student是一个引用数据类型
//s是一个变量名
//new Student()是实例化一个学生对象
//s是一个局部变量【在栈内存中存储】
Student s=new Student();
//什么是对象:new运算符在【堆内存】中开辟的内存空间称为对象
//什么是引用:引用是一个变量,只不过这个变量中保存了另一个java对象的内存地址。
//java语言中,程序员不能直接操作堆内存,java中没有指针,不像C语言
//java语言中,程序员只能通过【引用】去访问堆内存中对象内部的实例变量
//访问实例变量的语法格式1:
//读取数据:引用名.变量名
int stuNo=s.no;
String stuName=s.name;
int stuAge=s.age;
boolean stuSex=s.sex;
String stuAddr=s.addr;
System.out.println(stuNo);//0
System.out.println(stuName);//null
System.out.println(stuAge);//0
System.out.println(stuSex);//false
System.out.println(stuAddr);//null
//访问实例变量的语法格式2:
//修改数据:引用名.变量名=值
s.no=10;
s.name="java"
s.age=20;
s.sex=true;
s.addr="世界村"
System.out.println(stuNo);//10
System.out.println(stuName);//java
System.out.println(stuAge);//20
System.out.println(stuSex);//true
System.out.println(stuAddr);//世界村
//---------------------------------------------------
//再通过类实例化一个全新的对象
//stu是一个引用
//stu同时也是一个局部变量
//Student是变量的数据类型
Student stu=new Student();
System.out.println(stu.no);//0
System.out.println(stu.name);//null
System.out.println(stu.sex);//false
System.out.println(stu.age);//0
System.out.println(stu.addr);//null
//举例子【错误例子】
//编译报错,no这个实例变量不能直接采用"类名"的方式访问
//因为no是实例变量,对象级别的变量,变量存储在java对象的内部,必须先有对对象
//通过对象才能访问no这个实例变量,不能直接通过"类名"访问
//System.out.println(Student.no);
//局部变量在栈内存中存储
//成员变量中的实例变量在堆内存的java对象内部存储
//实例变量是一个对象一份,100个对象有100份。【对象可以相同,也可以不相同】
}
}