java学习笔记<八>final修饰符

来源:互联网 发布:灯具安装网络接单平台 编辑:程序博客网 时间:2024/03/29 13:26

final关键字可以修饰类,变量,和方法,用于表示它修饰的类,方法,变量不可改变。final修饰变量时,表示该变量一旦获得了初始值就不可改变,final既可以修饰成员变量,也可以修饰局部变量,形参。final修饰的变量不可被改变,一旦获得了初始值,该final变量的值就不能被重新赋值

java语法规定;final修饰的成员变量必须由程序员显式地指定初始值。

类field:必须在静态初始化块中或声明该field时指定初始值

实例field:必须在非静态初始化块,声明该field或构造器中指定初始值

final局部变量

public class FInalLocalVariableTest

 { 

    public void test (final int a)

{

     a=5;     //不能对final修饰的形参赋值,这个语句是非法的,因为形参在调用该方法时,由系统根据传入的参数来完成初始化,因此使用final修饰的形参不能被赋值

}  

}

final修饰基本类型变量和引用类型变量的区别

当使用final修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变。但对于引用类型变量而言,它保存的仅仅是一个引用,final只保证这个引用变量所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以改变

import java.util.Arrays;


class People
{
  private int age;
  public People(){}
  public People(int age)
  {
 this.age=age;  
  }
  public  int setAge( int age)
  {
 return this.age;
 
  }
 
  
}
public class FinalTest
{
public static void main(String args)
{
final int[] iArr={5,6,9,12};
System.out.println(Arrays.toString(iArr));
Arrays.sort(iArr);
System.out.println(Arrays.toString(iArr));
iArr[2]=8;
System.out.println(Arrays.toString(iArr));
final People p=new People(45);
p.setAge(23);

}
}

满足以下3个条件的类field,实例field,还是局部变量相当于一个直接量

1.使用final修饰符修饰

2在定义该final变量时指定了初始值

3该初始值可以在编译时就被确定下来

final方法

final修饰的方法不可被重写,如果出于某个原因,不希望子类重写父类的某个方法,则可以使用final修饰该方法

final类

final修饰的类不能有子类,为了保证某个类不被继承则可以使用final来修饰


0 0
原创粉丝点击