zoukankan      html  css  js  c++  java
  • Java基础之final关键字

    final修饰类

    当用final去修饰一个类的时候,表示这个类不能被继承。由于禁止了继承,所以一个final类中的所有方法都默认为final。 在自己设计一个类的时候,要想好这个类将来是否会被继承,如果可以被继承,则该类不能使用fianl修饰,在这里呢,一般来说工具类我们往往都会设计成为一个fianl类。在JDK中,String类被设计为final类型。

    public final class Feige {
        public final void say() {
            System.out.println(666);
        }
    }
    

    final修饰方法

    final方法主要的作用:防止任何继承类重写此方法。若希望一个方法的行为在继承期间保持不变,不可被重写,就可以采取用final修饰方法这种方法。一个类的private方法会隐式的被指定为final方法。

    public  class Feige {    
        public final void say() {
            System.out.println(666);
        }
    }
    

    final修饰成员变量

    final修饰成员变量必须要赋初始值,而且是只能初始化一次。有两种方式:1、直接赋值 2、在构造方法中赋初值。
    如果修饰的成员变量是基本类型,则表示这个变量的值不能改变。
    如果修饰的成员变量是一个引用类型,则是说这个引用的地址的值不能修改,但是这个引用所指向的对象里面的内容还是可以改变的。

    public class Feige {
        private final String name = "feige";
        private final String sex;
        private final static String hobby;
        
        public Feige() {
            sex = "男";
        }
        static {
            hobby="啪啪啪";
        }
    }
    

    深入了解final关键字

    public static void main(String[] args)  {
         String a = "hello2"; 
         final String b = "hello";
         String d = "hello";
         String c = b + 2; 
         String e = d + 2;
         System.out.println((a == c));
         System.out.println((a == e));
         System.out.println((c == e));
    }
    结果:
    true
    false
    false
    

    解析:
    为什么第一个比较结果为true,而第二个比较结果为fasle。这里面就是final变量和普通变量的区别了,当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切值,则编译器会把它当做编译期常量使用。也就是说在用到该final变量的地方,相当于直接访问的这个常量,不需要在运行时确定。因此在上面的一段代码中,由于变量b被final修饰,因此会被当做编译器常量,所以在使用到b的地方会直接将变量b替换为它的值。d是一个变量,在堆上创建一个d,然后再和"2"拼接,这样形成一个新的对象,e是新对象的引用,这样,e是在堆上面,而c在常量池中,所以指向的不是同一个对象,故为false。

  • 相关阅读:
    关于C51的中断函数要注意的几个问题
    WORD文档中插入页码的问题
    【转载】vim复制时的缩进
    【转载】在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间
    【转载】LINUX上MYSQL优化三板斧
    【转载】小结一下linux 2.6内核的四种IO调度算法
    【转载】linux挂载mount参数优化
    【转载】ipcs与Linux共享内存
    【转载】Linux下的IO监控与分析
    【转载】netstat--查看服务器[有效]连接数--统计端口并发数--access.log分析
  • 原文地址:https://www.cnblogs.com/feiqiangsheng/p/11148528.html
Copyright © 2011-2022 走看看