zoukankan      html  css  js  c++  java
  • 7.final关键字.md

    1.final类型变量

    定义:被final修饰的变量,一旦被赋初值后,则final类型变量的值就不能再改变。

    1.1成员变量
    final修饰的成员变量必须显式的赋初值。
    赋值的位置:
    •类变量:静态初始化块中或者声明改类变量时候
    •实例变量:非静态初始化块中,声明实例变量时候,构造器中
    •未初始化之前不能调用final修饰的变量

    public class VariableAssignment {
        //声明时候赋值
        final float num = 2f;
         
        //定义后在初始化块中
        final String name;
        {
            this.name = "haha";
        }
         
        //类变量在静态语句块中赋值
        final static double d;
        static{
            d = 2.0;
        }
         
        //构造中赋值
        final int n;
        public VariableAssignment(){
            n = 6;
        }
    } 
    

    1.2局部变量
    final修饰的局部变量可以赋值也可以不赋值,但是赋值只能一次。

    1.3final修饰基本类型变量和引用类型变量的区别
    final修饰基本类型变量,不能对已经赋值的变量再次修改值。但是对于引用类型变量而言,final保证的只是地址不变,但是对象本身是可能改变的

        public class Person {
        private int age;
         
        public Person(int age){
            this.age = age;
        }
         
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
         
    } 
    
    123456789 public class Study {
        public static void main(String[] args) {
            final Person p = new Person(2);
            //通过set方法改变了值
    
            p.setAge(6);
            int num = p.getAge();
            System.out.println(num);
             
        }//main
    } 
    

    1.4 final的宏替换作用

    public class Study {
        public static void main(String[] args) {
            final String s1 = "Hello World";
            final String s2 = "Hello" + " World";
            final String s3 = s1 + s2;
            System.out.println(s1 == s2); //输出true,s1在编译阶段已经被放到常量池中,s2和s1一样,所以直接引用常量池中的内容        System.out.println(s1 == s3); //输出false,因为s3在编译阶段无法确定内容,所以不能用宏替换
             
        }//main
    } 
    

    2.final方法

    3.final类

    4.不可变类

  • 相关阅读:
    【git】------git开发过程中的使用流程------
    js原型链的深度理解!
    mvc框架模式
    node环境下express路由,
    前后端 分离及不分离
    node中间件概念
    JS-------DOM0级事件处理和DOM2级事件处理-------简单记法
    call、apply、bind的区别
    移动端Click300毫秒点击延迟
    JS 详解 Cookie、 LocalStorage 与 SessionStorage
  • 原文地址:https://www.cnblogs.com/bugstar/p/8492457.html
Copyright © 2011-2022 走看看