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.不可变类

  • 相关阅读:
    R语言数据框部分笔记
    R语言数组部分的笔记
    R语言向量部分的笔记
    计算机等级考试二级python 第二章 python的基本语法元素
    计算机二级教程python第一章 程序设计语言
    Linux C实现发邮件功能
    telnet收发邮件
    Linux进(线)程同步各种锁
    About Mutex
    wait()与waitpid()与pthread_join()
  • 原文地址:https://www.cnblogs.com/bugstar/p/8492457.html
Copyright © 2011-2022 走看看