jdk哪个版本之后不带final的方法和带有final的方法差异不大了?

“使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。” -- 摘自《Java编程思想》
今天查信息的时候发现了一句这样的话,但是这个最近的java版本指的是哪一版呢?

以下内容部分参考ChatGPT模型:


目前最新的Java版本是Java 16,从Java 12开始,JVM默认开启了G1垃圾回收器,并且对于一些使用final方法的优化也进行了更新。具体来说,从Java 12开始,对于final方法的内联优化只会在方法本身的字节码大小小于35字节的情况下进行,同时也对方法调用的堆栈深度做了限制。这就意味着,如果方法过于庞大或者调用深度过大,final方法的优化效果并不明显。因此,在Java 12及之后的版本中,final方法的使用并不是必要的,除非你确实需要将方法锁定以防止被子类修改。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快

java1.4以上吧,现在应该最低也是1.6起步什么的

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7600346
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:判定字符是否唯一Java版的三种解法【数组,位运算,双层循环】(力扣)
  • 除此之外, 这篇博客: java上传图片出现红色背景的问题中的 最近发现上传图片时有的图片可以正常上传,有的上传后颜色却变了,好像失真了一样,刚开始以为图片太大了,考虑压缩后再上传,不过发现并没有用,折腾了半天,发现是图片的位深度的问题,值为24的正常,32 的就会出现问题。别的值暂时没发现,先都给他转成24就行了。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • BufferedImage bfi = ImageIO.read( file);
    BufferedImage newBufferedImage = new BufferedImage(bfi.getWidth(),
    bfi.getHeight(), BufferedImage.TYPE_INT_RGB);
    newBufferedImage.createGraphics().drawImage(bfi, 0, 0, Color.WHITE, null);
    ImageIO.write(newBufferedImage, “jpg”, temp);
    FileInputStream inputStream = new FileInputStream(temp);
    MultipartFile multipartFile = new MockMultipartFile(temp.getName(), temp.getName(),
    ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);

    multipartFile 的位数就改成24了

    Alt

    带尺寸的图片: Alt

    居中的图片: Alt

    居中并且带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

  • 您还可以看一下 孙杰老师的图解&代码-常见算法的原理和实现-Java版课程中的 8分钟掌握算法(四),广度优先穷竭贪心算法解答“选硬币”问题,JAVA实现小节, 巩固相关知识点