• final使用


    参考连接:http://a123159521.iteye.com/blog/689441

    Java中的final关键字通常的指的是“这是无法改变的”。它可能被做为三种的修饰词.------数据,方法,类。 
    一 final数据 
    1.在修饰基本类型时,表示它是一个常量,在定义时必须给予赋值. 
       特别的一个既是static又是final 的字段只占据一段不能改变的存储空间。 
    2.在修饰对象或者数组时,它表示对对象或数组的引用恒定不变,然而对象本身却是可以修改的. 
      空白final:声明为final但末给定初值的字段,但必须确保空白final在使用前被初始化,一般在构造方法完成。 
      final参数:在方法的参数列表以声明的方式将参数指明为final,这意味着在方法里无法修改参数的引用所指向的对象。 
    二 final方法 
    1. 把方法锁定,使得在子类(导出类)中不能修改它的含义。 
    2.效率,一个final方法被调用时会转为内嵌调用,不会使用常规的压栈方式,使得运行效率较高,尤其是在方法体较简单的情况下, 
       但也并不绝对。(与C++中的inline关键字类似) 
    特别的:类中的所有private方法都隐式地指定为是final,所以在继承关系中不存在覆盖问题。 
    三 final类 
    声明为final的类不能派生出了子类,也就是不能被继承,一个final类中的所有方法都隐式地指定为final. 

    我当时主要不懂的地方是final修饰对象的时候,fianl修饰对象的时候,指向的对象成员是可以发生变化的,但是final修饰的对象指向的内存无法改变,如下面例子:

    package test;
    public class CodeTest{
        int value;
        public CodeTest(int value){
            this.value=value;
        }
        public void charge(int dis){
            this.value+=dis;
        }
        public void test(){
            System.out.println(value);
        }
        
        public static void main(String[] args) {    
             CodeTest ori1=new CodeTest(1);
             CodeTest ori2=new CodeTest(2);
             final CodeTest Fori1=new CodeTest(3);
             Fori1.charge(10);      //这句话很正确,变量改变不影响Fori1指向的空间
             Fori1=new CodeTest(10);  //这句话错误,应该Fori1已经指向了一个空间,地址无法改变
             Fori1=ori1;               //这句话也错误,同上
        }    
    }
    View Code

     

  • 相关阅读:
    mybatis中resultMap配置细则
    关于mybatis中typeHandler的两个案例
    Sharding模式
    Data Partitioning Guidance
    算法相关——Java排序算法之桶排序(一)
    Java并发——线程中断学习
    Android开发——ListView使用技巧总结(二)
    Android开发——ListView使用技巧总结(一)
    [原]Jenkins(十八) jenkins再出发之jenkins 内置变量
    [原]Jenkins(十七) jenkins再出发之配置SVN
  • 原文地址:https://www.cnblogs.com/Joy06/p/3672652.html
Copyright © 2020-2023  润新知