//new是Java语言当中的一个运算符
//成员变量没有手动赋值的话,系统赋默认值
//默认值
/*
数据类型 默认值
----------------------------------------------------------
byte,short,int,long 0
float,double 0.0
boolean false
char /u0000
引用数据类型 null(空值)void是返回值类型为空类型
//什么是对象?new运算符在堆内存中开辟的内存空间称为对象
//什么是引用?引用是一个变量,只不过这个变量中保存了另一个java对象的内存地址。
//java语言当中,程序员不能直接操作堆内存,java中没有指针不像c语言。
//java语言当中,程序员只能通过“引用”去访问堆内存当中对象内部的实例变量。
//访问实例变量的语法格式:
//读取数据: 引用.变量名
//修改数据: 引用.变量名 = 值
//通过对象才能访问实例变量,不能直接通过“类名”访问
引用:引用是一个变量,变量中保存的是一个对象的内存地址,这样的变量被我们称为引用。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public class OOTest02
{
public static void main (string[ ] args){
//创建User
对象
User u = new User();
}



//引用是一个变量:变量包括局部变量和成员变量
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. java虚拟机主要包括三块内存空间分别是:栈内存、堆内存、方法区内存。
2. 堆内存和方法区内存各有一个,一个线程一个栈内存。
3. 方法调用的时候,该方法所需要的内存空间在栈内存中分配,称为压栈。方法执行结束之后该方法所需的内存空间释放,称为弹栈。
4. 栈中主要存储的是方法体当中的局部变量。
5. 方法的代码片段以及整个类的代码片段都被存储到方法区内存当中,在类加载的时候这些代码片段会载入。
6. 在程序执行过程中使用new运算符创建的java对象,存储在堆内存当中。对象内部有实例变量,所以实例变量存储在堆内存当中。
7.变量分类:
- 局部变量【方法体中声明】
- 成员变量【方法体外声明】
*实例变量(前边修饰符没有static)
*静态变量(前边修饰符中有static)
8. 静态变量存储在方法区内存当中。
9. 三块内存 当中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要针对的是堆内存。
10. 垃圾回收器【自动垃圾回收机制、GC机制】什么时候会考虑将某个java对象的内存回收呢?
*当堆内存当中的Java对象成为垃圾数据的时候,会被垃圾回收器回收。
*什么时候堆内存当中的java对象会变成垃圾呢?
没有更多的引用指向它的时候。
这个对象无法被访问,因为访问对象只能通过引用的方式访问。
