• Java-Finalize(GC)和类与类和接口之间的关系


    关于java中的toString方法

    /*
    关于 object中的 tostring方法
    sun在 object类中设计 tostring方法的目的:返回java对象的字符串的表示形式
     在现实开发中, object里边的 tostring方法已经不够用了
     object的 tostring方法实现的结果不满意object中的 tostring方法就是要重写的
     sun是这样子实现 tostring方法的
     public string tostring(){
         return getClass().getName() + "@" + Intger.toHexString(hashcode());
     }
     Object中的toString方法返回:类名@Java对象的内存地址经过哈希算法得出的int类型值
     再转换成十六进制
     这个输出结果可以等同看做Java对象在堆中的内存地址
     */
    //创建一个Object类型的对象
    Object object = new Object();
    System.out.println(object);//java.lang.Object@47089e5f
    //调用一个toString 方法
    System.out.println(object.toString());//java.lang.Object@47089e5f
    
    Person person = new  Person("Steven",18);
    
    //调用toString方法
    String pStr = person.toString();
    System.out.println("person = " + pStr);
    class  Person {
         String name;
         int age;
    
         Person(String name , int age){
              this.name = name;
              this.age = age;
         }
         //重写toString方法
         //根据项目的需求而定
         //需要显示格式:Person[name=Steven,age=18]
         public String toString(){
    
              return "Person[name="+name+",age="+age+"]";//person = Person[name=Steven,age=18]
         }
    
    }

    1.垃圾回收机制

    finalize[ˈfaɪnəlaɪz] //完成,使结束 类似OC dealloc

    垃圾回收器( Garbage Collection),也叫GC,垃圾回收器主要有以下特点

    ◆当对象不再被程序使用时,垃圾回收器将会将其回收

    ◆垃圾回收是在后台运行的,我们无法命令垃圾回收器马上回收资源,但是我们可以告诉他,尽快回收资源(System.gc和 Runtime.getRuntime().gc())

    ◆垃圾回收器在回收某个对象的时候,首先会调用该对象的 finalize方法

    ◆GC主要针对堆内存

    ◆单例模式的缺点

     

     finalize方法什么时候调用

     1.finalize方法每一个JaVa对象都部有

     2. finalize方法不需要程序员去调用,有系统自动调用

     3.Java对象如果没有更多的引用指向它,则该Java对象称为垃圾数据等待垃圾回收器回收,垃圾回收器在回收这个Java对象之前会自动调用该对象的finalize方法

       @Override
        protected void finalize() throws Throwable {
           super.finalize();
        }
     People people = new People();
    
     //没有引用再指向他,等待回收
     people = null;
     //开发者只能"建议"垃圾回收器回收垃圾
     System.gc();
    
    
    class People {
         protected void finalize() throws Throwable {
              System.out.println(this + "马上就要被回收了 ~!");//People@18317cb3马上就要被回收了 ~!
              People p = this;//让引用再次指向该对象,该对象不是垃圾数据,不会被垃圾回收器回收!
         }
    }

    2.类与类和接口之间的关系

    ①.类与类的继承关系

    public class Animal {
    
    }
    
    class Dog extends Animal{//Dog is a Animal
    
    }

    ②类与接口之间的实现关系

    public interface I {
        public void method01();
    }
    // is - like - a 类与接口之间的关系: 实现
    class A implements I {//A is like I
    
        public void method01() {
             //实现
        }
    }

    ③类与类之间的关联关系

    //类与类之间的关联关系:
    public class B {//B has a c
        private C c;
    }
    
    class  C{
    
    }

    包其实就是目录,特别是项目比较大,java文件特别多的情况下,我们应该分目录管理,在Java中称为分包管理,包名通常采用小写

      1.包最好采用小写字母

      2.包的命名有规则,不能重复

    //package 必须放到 所有语句的第一行,注释除外。

    软件的包机制

      1.解决的类的命名冲突问题,在类名前加命名空间(包机制)

     

      2.在Java中使用package语句定义包。(单包,复包)

     

      3.package语句只能出现在.java源文件的第一行

     

      4.package定义的格式,通常使用公司域名倒序输出方式

      顶级域名:tanzhouedu.com

      一级域名:www.tanzhouedu.com

      二级域名:soft.tanzhouedu.com

      三级域名:java.soft.tanzhouedu.com

      XX级域名:xx...

     

      二级目录:tanzhouedu.com/java

     

      com(企业公司).tz(公司名).until(业务模块名称)

     

       package定义格式:公司域名倒序.项目名.模块名

     

      5.完整的命名是带有包名的

      package com.tz,javase.pak.package_import;

     

     

      6.带有包结构的如何运行程序

      java com.tz.javase.pak.Student

      类装载器 后面跟 类名

      javac Java的编译器后边跟路径

     

      import java.util.Date;

     

      public class Config {

     

        public static void main(String[] args) {

     

             java.util.Date d = new java.util.Date();

     

             System.out.println("日期:"+d);

        }

     

      }

      7.

      import com.tz.javase.pak.*;//导入pak里边的所有类

      import语句只能出现在package语句之下,class定义之上

     

      8.JDK常用包

      java.lang ,此包Java 语言标准包,使用此包中的内容无需import导入

      java.sql提供了JDBC接口类

      java.util提供了常用工具类

      java.io,提供了各种输入输出流

     

    java访问级别修饰符

    private protected public 限定其他类对该类、属性和方法的使用权限

    private 只能在本类中访问

    缺省: 本类,在同一个包下可以访问,其他不行

    protected:本类,同一个包下,子类都可以访问,不同包,不行;

    public :任何位置都可以

  • 相关阅读:
    什么是模块化及其优点是什么
    oop的三大特性和传统dom如何渲染
    MVC和MVVM的差别
    SpringMVC实例及注解(二)
    Spring MVC实例创建(一)
    Mybatis联合查询(一)
    Mybatis参数传递及返回类型
    Mybatis实例增删改查(二)
    Mybatis实例及配置(一)
    SpringMVC
  • 原文地址:https://www.cnblogs.com/StevenHuSir/p/Java_Finalize_GC.html
Copyright © 2020-2023  润新知