• java回顾之final


    final关键词
    用于表示它修饰的类,方法,变量不可改变
    修饰变量时,一旦其获得了初始值,就不可改变,它既可以修饰成员变量,也可以修饰局部标量,形参等
    final修饰的成员变量必须现实的指定初始值,系统不会饮食的对其进行隐式初始化

    例如 

    public class FinalVariableTest 
    {
       public void test(final int a)
       {
    	   //a=5;//错误,应该由系统传入的参数进行初始化,所以这里不能被赋值
       }
    	public static void main(String[] args)
    	{
    		final String str="zx";//定义局部变量默认值,则不能再被赋值
    		//str="12";//错误,不能再被赋值
    		
    		final int a;//没有指定默认值,可以被赋值一次
    		a=5;
    		
    		//a=4;//再次被赋值,错误
    		
    	}
    }
    

      

    final修饰的基本类型变量和引用类型变量区别
    对于引用类型变量来说,他保存的仅仅是一个引用,final只保证所引用的地址没变,即引用的是同一个对象
    但是对象时可以随意改变的
    例如

    class PersonClass {
    	private int age;
    
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public PersonClass(){}
    	public PersonClass(int age)
    	{
    		this.age=age;
    	}
    }
     
     class Go
     {
    	 public static void main(String[] args)
    	 {
    		 final PersonClass pClass=new PersonClass(45);
    		// pClass=null;//引用的不再是原来的对象了,所以出错
    		 
    	 }
     }
    

      

    final方法表示不希望子类重写父类的某个方法
    比如

    class BaseClass
     {
    	 public final void get()
    	 {
    		 
    	 }
    	 private final void set()
    	 {
    		 
    	 }
     }
     class SonClass extends BaseClass
     {
    	 //public void get();//会出错,不能重写final方法
    	 public void set()
    	 {
    		 
    	 }//因为private子类无法访问,就相当于创建了一个新方法
    	
     }
    

      具体还有不可变类,出现的场合,比如你项目初始化一些不可变的参数,例如你使用一个map保存了项目中所有的配置文件的键值对,这些键值对是永不变的,为了防止客户的改变,你可能就需要使用不可变类,每个返回给用户一个保护性的拷贝。

    只要不是固定的,永不改变的东西,对于类的设计都不需要不可变类,不可变的类的实现也是需要消耗一定的内存和性能的,可以通过缓存不可变类来实现减少开销,具体实现方法,待写

  • 相关阅读:
    JAVA数组复制和扩容
    Nginx-fastdfs安装与配置
    ssh安全免密登录
    修改Linux默认源
    Linux查看IP
    整合ssm框架
    Java-maven-shangcheng-parent-web-配置
    Java-maven-shangcheng-manager-service-配置
    Java-maven-shangcheng-manager-配置
    jquery美化select,自定义下拉框样式
  • 原文地址:https://www.cnblogs.com/vincentmax/p/5935132.html
Copyright © 2020-2023  润新知