day5-笔记

来源:互联网 发布:java字符串补零 编辑:程序博客网 时间:2024/05/01 10:43

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()方法通知虚拟机清理垃圾(需要时间).