final

final关键字可以用来修饰类,方法以及成员变量,当用在不同的场景下时具有不同的意义。

修饰类

如果修饰类,则代表这个类不可继承

修饰方法

如果修饰方法,则代表这个方法不可覆写;同时,允许编译器将所有对这个方法的调用转化为inline调用,也就是说,把所有的调用处的方法名全部换为方法主体,这也会使得代码主体变得异常庞大,非常影响性能。

修饰变量

如果修饰基本类型,则代表该变量的值不可改变。

如果修饰引用类型,则代表该对象的引用不可改变。

finally

finally是用于异常处理时使用的语句,由finally关键词修饰的代码主体,无论异常是否发生,该代码块总会执行。

注意:哪怕try/catch中存在return,finally修饰的代码块依然会执行。

具体情况可以如下:

finally中包含return语句,则无论之前try语句中是否包含retrun,都不再执行,只执行finally中的return。

finally中不包含return语句,也没有改变try中的返回值,则finally中的语句执行完后会继续执行try中的return。

finally中不包含return语句,但是改变了try中的返回值,则finally中的语句执行完后会继续执行try中的return,并通过return继续返回值(此处类似函数调用,如果finally改变的返回值是基本类型,则改变不起作用;如果是引用类型,则finally中对该引用类型的属性值的改变起作用)。

finalize

finalize是一个方法名,它是在 Object 类中定义的,因此所有的类都继承了它。当需要从堆中永久删除某个对象之前,垃圾回收器会主动调用该对象的finalize()方法。

需要注意的是:

程序猿无法确定垃圾回收器何时调用该方法(哪怕你明着写出来,依然无法确定,所以一般程序猿不需要调用该方法)

无法保证调用不同对象的方法的顺序。换句话说如果对象A里面引用了对象B,则有可能先调用A的finalize()方法,也有可能先调用B的finalize()方法。

final、finally、finalize区别的更多相关文章

  1. Reader和Writer区别final.finally.finalize区别

    Reader和Writer是字符操作流,Writer是输出的,而Reader是输入的. 首先找到一个文件,比如:File file=new File("."+File.separa ...

  2. final finally finalize 区别及用法

    final 1,final修饰的class,代表不可以继承扩展. 2.final的方法也是不可以重写的. 3.final修饰的变量是不可以修改的.这里所谓的不可修改对于基本类型来来,的确是不可以修改. ...

  3. final finally finalize 区别

    public class Demo { public static void main(String[] args) { long start = System.currentTimeMillis() ...

  4. 谈谈 final finally finalize 区别

    声明 本篇所涉及的提问,正文的知识点,全都来自于杨晓峰的<Java核心技术36讲>,当然,我并不会全文照搬过来,毕竟这是付费的课程,应该会涉及到侵权之类的问题. 所以,本篇正文中的知识点, ...

  5. Final,finally,finalize区别

    final— 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为final的.将变量或方法声明为f ...

  6. final,finally,finalize有什么区别?String, StringBuffer, StringBuilder有什么区别?Exception和Error有什么区别?

    继上篇JVM学习之后,后面将分三期深入介绍剩余JAVA基础面试题,每期3题. 题目一.final,finally,finalize有什么区别? /*请尊重作者劳动成果,转载请标明原文链接:*/ /* ...

  7. Android源码中final关键字的用法及final,finally,finalize的区别

    Android开发的学习流程 final,finally,finalize的区别 Android的发展越来越快,Android开发人员越来越多,当两种情况碰撞,在诸多开发者中跟紧Android步伐脱颖 ...

  8. 【Java面试题系列】:Java中final finally finalize的区别

    本篇为[Java面试题系列]第三篇,文中如有错误,欢迎指正. 第一篇链接:[Java面试题系列]:Java基础知识常见面试题汇总 第一篇 第二篇链接:[Java面试题系列]:Java基础知识常见面试题 ...

  9. Java中final,finally和finalize区别

    Day11_SHJavaTraing_4-18-2017 Java中final,finally和finalize区别 1.final—修饰符(关键字) ①final修饰类,表示该类不可被继承 ②fin ...

  10. 一、基础篇--1.1Java基础-final, finally, finalize 的区别

    final, finally, finalize 首先,这三个关键字没什么关联,只是放在一起比较像,用法用处完全不同. final: final关键字可以用来修饰类.方法.变量(成员变量和局部变量), ...

随机推荐

  1. 如何配置JVM系统属性及获取方式System.getProperty("pname")

    https://www.cnblogs.com/keyi/p/7721893.html

  2. Java多线程:CountDownLatch、CyclicBarrier 和 Semaphore

    场景描述: 多线程设计过程中,经常会遇到需要等待其它线程结束以后再做其他事情的情况. 有几种方案:   1.在主线程中设置一自定义全局计数标志,在工作线程完成时,计数减1.主线程侦测该标志是否为0,一 ...

  3. .net reactor使用教程(一)——界面各功能说明(转)

    概述:安装了.net reactor之后,可以在安装目录下找到帮助文档REACTOR_HELP.chm,目前没有中文版本,里面详细介绍了.net reactor的各功能及使用场景.   安装了.net ...

  4. 如何在云端部署SAP HANA实战, Azure 上的 SAP HANA(大型实例)概述和体系结构

    什么是 Azure 上的 SAP HANA(大型实例)? Azure 上的 SAP HANA(大型实例)是一种针对 Azure 的独特解决方案. 除了提供 Azure 虚拟机以用于部署和运行 SAP ...

  5. 用xstart远程连接linux图形用户界面

    转载:https://blog.csdn.net/yabingshi_tech/article/details/51839379 双击xstart 输入:/usr/bin/xterm -ls -dis ...

  6. javap的使用

    今天听的分享里在介绍String时,提到了javap,学习了好久的java,但是好像从来没有了解过这个工具. javap是JDK提供的一个命令行工具,javap能对给定的class文件提供的字节代码进 ...

  7. SpringBoot------自定义Logback日志

    帮助文档: https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-featur ...

  8. Adas术语简称

    V2X: DSRC:专用短程通信(DSRC)的公用频谱信道交换数据

  9. ganglia-gmetad 配置文件

    gmetad 主要用来收集和汇聚gmond所收集的指标数据的守护进程,通过tcp端口8651监听其他gmetad连接,并向授权的主机提供xml格式的网络状态,gmetad通过tcp端口8652 对交互 ...

  10. greenplum 安装笔记

    折腾两天了,终于把greenplum装成功了.记录下遇到的问题. 环境变量一点要配置准确. greenplum安装,按照这里一步步走: http://www.cnblogs.com/liuyungao ...