.面向对象的生命周期:
OOA 面向对象的分析
OOD 面向对象的设计
OOP 面向对象的编程
先设计一个类(还没从C++里出来 当然也没有彻底进去哈哈哈哈)
public class Student
{
//姓名
String name;
//学号
int no;// 只有后面创造了对象,这些内存才会存在
int age;
String addr;
boolean sex;
//如果加了一个static 那么则这个变量属于类,属于所有对象共有
//这里不执行所以不用+main函数
}
//通过一个类可以实例化N个对象
//实例化对象语法: new 类名()
//new是java语言当中的一个运算符
//new运算符的作用是创建对象,在JVM堆内存中开辟新的内存空间
//栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中 压栈
//堆内存:new的对象在堆内存中存储
//Student 是一个引用对象
//s是一个局部变量,在栈内存中存储 称为引用
//对象不赋值的话有默认值
//对象是new运算符在堆内存中开辟的内存空间称为对象
//引用是一个变量,只不过这个变量用来保存另一个java对象的内存地址
//java没有指针 所以只能通过引用去读取堆内存中对象的内部实例对象
java里没有要求掌握指针,然后类的对象存储区在堆内存中,
类没有赋值时,都会使用默认值
Boolean false
Char '\u0000'(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d
Student s=new Student();
s是一个 引用用来保存Student的地址
public class OOTest01
{
public static void main(String[] args){
//通过一个类可以实例化N个对象
//实例化对象语法: new 类名()
//new是java语言当中的一个运算符
//new运算符的作用是创建对象,在JVM堆内存中开辟新的内存空间
//栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中 压栈
//堆内存:new的对象在堆内存中存储
//Student 是一个引用对象
//s是一个局部变量,在栈内存中存储 称为引用
//对象不赋值的话有默认值
//对象是new运算符在堆内存中开辟的内存空间称为对象
//引用是一个变量,只不过这个变量用来保存另一个java对象的内存地址
//java没有指针 所以只能通过引用去读取堆内存中对象的内部实例对象
Student s=new Student();
int stuNo=s.no;
int stuAge=s.age;
String stuName=s.name;
boolean stuSex=s.sex;
String stuAddr=s.addr;
System.out.println("学号 = "+stuNo);
System.out.println("姓名 = "+stuName);
System.out.println("性别 = "+stuAge);
System.out.println("地址 = "+stuAddr);
System.out.println("分割线————————^_");
System.out.println("学号 = "+s.no);
System.out.println("姓名 = "+s.name);
System.out.println("性别 = "+s.age);
System.out.println("地址 = "+s.addr);
System.out.println("分割线————————^_");
stuNo=87;
stuAge=24;
stuName="jake";
stuSex=true;
stuAddr="杭州";
System.out.println("分割线————————^_");
System.out.println("学号 = "+stuNo);
System.out.println("姓名 = "+stuName);
System.out.println("性别 = "+stuAge);
System.out.println("地址 = "+stuAddr);
}
}
这里还是要注重对于内存空间的理解
JVM有三个主要的内存区:
方法区内存
堆内存
栈内存
因为方法代码片段属于.class字节码的一部分,字节码文件在加载的时候,将其放到了方法区中。所以方法区内存最先有数据
后面程序运行main函数
main函数又有各种变量
Student s=new Student();
s是类对象的一个引用,用来保存对象的地址
new Student()它在堆内存中开辟一个对象 因为没有指针 所以java主要用引用来指向地址。
局部变量在栈内存中存储 成员变量中的实例变量在堆内存的java对象内部存储 实例变量是一个对象一份,100个对象有100份
正是因为实例变量存储在对象中 所以不可以用 类.实例变量 来访问