• final finally finalize 的区别


    1.final

    final修饰类,说明这个类不能被继承,是以个顶级类。

    final修饰变量,说明这个变量是常量。

    final修饰方法,表示这个方法不能被重写,不过可以冲在final方法。

    比如有个基类Person,里面有一个public final void eat()方法,可以在Person类中重载同名方法,比如public void eat(String name,int age)。假如有一个子类Student,那么在Student中可以override父类的非final方法,但是不能override final方法。

    Person

    View Code
    package test2;
    
    public class Person {
        private String name;
        private int age;
        
        public final void eat()
        {
            System.out.println("this is in person class");
        }
        
        public void eat(String name,int age)
        {
            
        }
        
    }

    Student

    View Code
    package test2;
    
    public class Student extends Person {
    
        @Override
        public void eat(String name, int age) {
            // TODO Auto-generated method stub
            super.eat(name, age);
        }
    }

    常见的final方法就是Object类累中的wait()和notify()方法。

    2.finally

    finally是关键字,在异常处理中,try子句中执行需要运行的内容,catch子句用于捕获异常,finally子句表示不管是否发生异常,都会执行。finally可有可无。但是try...catch必须成对出现。

    3.finalize() 

    finalize() 方法名,Object类的方法,Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象进行调用。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的子类覆盖 finalize() 方法以整理系统资源或者执行其他清理操作。

    代码实例:

    View Code
    class Person
    {
        private String name;
        private int age;
    
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String toString()
        {
            return "姓名:"+this.name+",年龄:"+this.age;
        }
        
        public void finalize() throws Throwable{//对象释放空间是默认调用此方法
            System.out.println("对象被释放-->"+this);//直接输出次对象,调用toString()方法
        }
        
    }
    
    public class SystemDemo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Person per=new Person("zhangsan",30);
            per=null;//断开引用,释放空间
            //方法1:
            System.gc();//强制性释放空间
            //方法2:
    //        Runtime run=Runtime.getRuntime();
    //        run.gc();
        }
    
    }
  • 相关阅读:
    关于hexo-abbrlink链接undefined
    如何修改layer-layui中的confirm
    cmder的segmentation fault错误修复
    论好的代码习惯的养成/做一个优雅的coder
    50行代码写的一个插件,破解一个H5小游戏
    慎用array_filter函数
    python:if 语句的使用方法
    python:for语句的使用方法
    关于python3 发送邮件
    zookpeer的安装与配置
  • 原文地址:https://www.cnblogs.com/xwdreamer/p/2454178.html
Copyright © 2020-2023  润新知