美文网首页
java中final关键字的用法和注意点(待更新)

java中final关键字的用法和注意点(待更新)

作者: 爱吃苹果的西瓜 | 来源:发表于2019-07-15 14:51 被阅读0次
关键字 基础用法 误区
final 修饰类、方法、变量

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

public class TestFinal {
    
    public static void main(String[] args){
        TestFinal testFinal = new TestFinal();
        StringBuffer buffer = new StringBuffer("hello");
        testFinal.changeValue(buffer);
        System.out.println(buffer);
        
    }
    
    public void changeValue(final StringBuffer buffer){
        //final修饰引用类型的参数,不能再让其指向其他对象,但是对其所指向的内容是可以更改的。
        //buffer = new StringBuffer("hi");
        buffer.append("world");
    }
}

运行结果

helloworld

运行这段代码就会发现输出结果为 helloworld。很显然,用final进行修饰虽不能再让buffer指向其他对象,但对于buffer指向的对象的内容是可以改变的。现在假设一种情况,如果把final去掉,结果又会怎样?看下面的代码:

public class TestFinal {
    
    public static void main(String[] args){
        TestFinal testFinal = new TestFinal();
        StringBuffer buffer = new StringBuffer("hello");
        testFinal.changeValue(buffer);
        System.out.println(buffer);
        
    }
    
    public void changeValue(StringBuffer buffer){
        //buffer重新指向另一个对象
        buffer = new StringBuffer("hi");
        buffer.append("world");
        System.out.println(buffer);
    }
}

运行结果

hiworld
hello

从运行结果可以看出,将final去掉后,同时在changeValue中让buffer指向了其他对象,并不会影响到main方法中的buffer。原因在于java采用的是值传递,对于引用变量,传递的是引用的值,也就是说让实参和形参同时指向了同一个对象,因此让形参重新指向另一个对象对实参并没有任何影响。

相关文章

  • java中final关键字的用法和注意点(待更新)

    来自《Java编程思想》的一段话“使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含...

  • 关键字——final

    final 关键字的节本用法 在java中, final 关键字可以 用来修饰类、方法、和变量(包括成员变量和局部...

  • 2018-11-14号相关学习资料

    java中final关键字的作用深入理解Java中的final关键字java中的final如何使用和理解PPT和1...

  • java - final 关键字

    java - final 关键字 java - final 关键字 在 java 中,final 关键字可以修饰类...

  • final、abstract以及接口

    final关键字 final 关键字可以用来修饰类,属性和方法。 final修饰类 Java 中 final 修饰...

  • Final of Java,这一篇差不多了

    前言 在Java中final是一个关键字,最近在研究和整理项目的代码,发现final出现的频次有些高,而且有些用法...

  • 面向对象

    一、类和对象 二、封装 三、继承 Java中final关键字的使用 final关键字: 使用final关键字做标识...

  • Java中final关键字

    Java中的final关键字非常重要,它可以应用于类,方法和变量; 什么是final? final是java中的一...

  • Java中的static和final

    java中的static和final 此篇文章是记录我在学习Java中static和final关键字的笔记。 st...

  • Java的 final 关键字

    本文主要探讨Java final 关键字修饰变量时的用法。!!!!文末有彩蛋!!!! 1.修饰类 当用final修...

网友评论

      本文标题:java中final关键字的用法和注意点(待更新)

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