美文网首页
Android进阶–final、finally、finalize

Android进阶–final、finally、finalize

作者: 遛狗的程序员 | 来源:发表于2018-07-22 18:22 被阅读11次

首先补充听课心得(二)内容:默认情况在Android Studio中使用try-with-resources会提示Try-with-resources requires API level 19的警告️ ,你需要自己再build.gradle文件中设置指定JDK版本:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

问题:

  • final、finally、finalize有什么区别?

这是一道经典的基础面试题,这里不作分析,不了解的自己Google哦(它们除了字母类似,各自之间没啥关系,有点类似Java和JavaScript有啥关系了)

补充其他知识点:
  1. final也许会有性能的好处,比如利用final可能(注意是可能)对性能有好处。比如:可能有助于将方法进行内联,可以改善编译器进行条件编译的能力等等。日常开发中,除非有特别考虑,不然最好不要指望这种小技巧带来所谓的性能提升。
  2. 不要在finally中使用return语句,finally总是执行,除非程序或者线程被终止。比如以下代码:
//try-catch异常退出、不被执行
try{
    system.exit(1)
}finally{
    println("会被执行吗?")
}
//try-catch无线循环,不被执行
try{
    while(true){
        println("do something")
    }finally{
        println("会被执行吗?")
    }
}

如果你非要在finally中使用return语句,请注意以下结论:

  • finally块的语句是在try|catch的return语句执行之后,返回之前(try|catch中return在返回前,将其他所有操作都执行完,保留返回的值)。
  • finally中return语句会覆盖try|catch中return语句直接返回。

具体代码实践请参考文章:Java finally语句到底是在return之前还是之后执行?
try-catch-finally语句中return的执行顺序思考

  1. final不是immutable。(类似:String为什么需要final修饰?HashMap、HashSet的键值为什么不要使用不可变类型?)除了immutable内部如何实现的,个人认为主要作用:
  • 安全,尤其并发的时候线程安全
  • 类似String设计成immutable有着一个字符串常量池的属性,这样存在大量字符串的时候,节省内存空间、提高效率。具体类似讨论可以参考知乎文章:在java中String类为什么要设计成final?
  1. 小插曲,对Java的finalizer,cleaner的理解。有兴趣可以参考文章:Java的finalizer,cleaner等如何实现? Effective Java 第三版——8. 避免使用Finalizer和Cleaner机制

参考:

声明:此为原创,转载请联系作者


作者:微信公众号添加公众号-遛狗的程序员 ,或者可以扫描以下二维码关注相关技术文章。

qrcode_for_gh_1ba0785324d6_430.jpg

当然喜爱技术,乐于分享的你也可以可以添加作者微信号:

WXCD.jpeg

相关文章

  • Android进阶–final、finally、finalize

    首先补充听课心得(二)内容:默认情况在Android Studio中使用try-with-resources会提示...

  • java 基础知识点1-final与各类引用

    1.final,finally,finalize区别 final表示不可修改,finally是保证重点代码一定执行...

  • java学习——源码分析finalize和FinalRefere

    一道常见的java面试题:描述final、finally、finalize的区别final、finally是常用的...

  • 经典面试题目

    谈谈final,finally,finalize有什么不同? final可以用来修饰类、方法、变量。final修饰...

  • Java面试题

    final, finally,finalize的区别: final 生命属性,方法,和类,final声明的属性是常...

  • java核心技术36讲笔记

    Java-Basic 谈谈final、 finally、 finalize有什么不同? 典型回答:final可以用...

  • Java语言中机组混淆的知识

    第一组:final、finally和finalize? 阿情说:final和finally是Java语言中的关键字...

  • final,finally,finalize

    final,java中的关键字,修饰符,修饰类、方法或变量。修饰类表示该类不可以被其他类继承,修饰方法表示该方法不...

  • final finally finalize

    final可以修饰变量,方法,类。修饰变量,变量的值不能被修改;修饰方法,方法不能被重写;修饰类,类不能被继承。 ...

  • final,finally,finalize

    说在前面,每天积累一点点,详情请点击github final final是可以修饰域,参数,方法,类的关键字。 f...

网友评论

      本文标题:Android进阶–final、finally、finalize

      本文链接:https://www.haomeiwen.com/subject/wbcrmftx.html