zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    Hadoop安装教程_伪分布式
    上课老师讲的数据交换你听懂了吗
    上次的计网络课你是不是又旷课了
    网络数据通信技术
    来,让我们一起来学习VIM
    Hadoop安装教程_单机(含Java、ssh安装配置)
    win10无法使用VMwareWorkstation的解决办法
    VMwareWorkstation如何设置共享文件夹
    Ubuntu16.04安装Vmware Tools
    虚拟机的vmnet8网卡找不到了
  • 原文地址:https://www.cnblogs.com/Joy06/p/3672652.html
Copyright © 2011-2022 走看看