1>>>构造的理解
方法名与类的名字相同 没有返回值类型
在创建对象的时候调用构造函数
不能在构造函数里面返回一个值 但可以用return 函数结束该构造函数
执行构造函数的过程:
person p =new Person();
先在栈 区开辟一个空间 存放 p变量
然后在堆区里面创建一个空间
初始化话成员 变量 成员方法
运行构造函数
变量p的地址 指向堆空间的地址
默认的构造函数
当一个类没有构造的时候 jvm会自动为这个类分配一个默认的构造函数
当你指定一个构造函数的时候 jvm 就不会给你分配构造函数 了 当你在调用空构造时侯会报错
构造函数重载 的互相调用可以 用this();来调用
只能写在第一行 避免递归调用就行
2>>>this的理解
this代表当前对象 指向当前的堆空间 this的本质就是 一个引用
>>>参数传递的理解
基本类型数据的传递 是直接修改 栈空间的数据
引用数据类型的传递 是把空间的地址 赋值给另一个变量 然后 通过 这个变量 指向相同的堆空间 修改 原来那个堆空间里面的内容
String 这个东西 有点变态 它是一个常量 String sm="SM"; 每一个等于号就相当与创建一个对象;
3>>>static的理解
静态的东西 和别的对象的成员变量,成员方法 不放在一块
它放在 一个静态块 所有的对象都可以 修改 都可以访问
静态变量在类加载时初始化.(类在第一次被使用的时候加载)
在静态方法中不能用this关键字
Person p = new Person();
栈内存创建变量
在名称空间中检查是否有Person.class, 有则不加载, 没有则加载
处理静态成员. 初始化静态变量, 运行静态代码块, 加载静态方法. 静态变量初始化和静态代码块顺序按代码从上到下顺序执行
堆内存创建对象, 初始化成员变量, 运行普通代码块, 加载非静态方法
运行构造函数
变量记住对象地址
五.垃圾回收
1.finalize()
在对象被销毁之前会自动调用finalize()方法
finalize()方法在每个类中都会有, 因为这个方法在Object类中定义.
Object是所有类的父类, 所有类都会继承Object类中的方法.
2.gc()
JVM虚拟机处理垃圾的机制是由垃圾的量来决定的, 当虚拟机中的垃圾对象足够多时, 就开始处理垃圾了.
如果我们想将虚拟机中的垃圾对象全部清除, 可以使用System.gc()方法通知虚拟机清理垃圾(需要时间).