java中的final关键字初步接触


//代码示例

import java.util.*;

import static net.mindview.util.Print.*;

class Value{

int i;

public Value(int i){this.i=i};

}

public class FinalData{

private static Random rand=new Random(47);

private String id;

public FinalData(String id){this.id=id;}

private final int valueOne=9;//私有final成员

private static final int VALUE_TWO=99;//静态私有final成员

public static final int VALUE_THREE=39;

private final int i4=rand.nextInt(20);

static final int INT_5=rand.nextInt(20);

private Value v1=new Value(11);

private final Value v2=new Value(22);

private static final Value VAL_3=new Value(33);

private final int[] a={1,2,3,4,5,6};

public String toString(){

return id+": "+"i4= "+i4+", INT_5= "+INT_5;

}

public static void main(String args[])

{

FinalData fd1=new FinalData("fd1");

//error: fd1.valueOne++;

fd1.v2.i++;   //注意:成员v2是final修饰;但是v2表示的是引用而非对象本身

fd1.v1=new Value(9);

for(int i=0;i<fd1.a.length;i++)

{

fd1.a[i]++;

//error:fd1.v2=new Value(0);

//error:fd1.VAL_3=new Value(1);

//error:fd1.a=new int[3];

}

print(fd1);

print("Creating new FinalData");

FinalData fd2=new FinalData("fd2");

print(fd1);

print(fd2);

}

};

//输出结果

fd1: i4= 15, INT_5= 18

Creating new FinalData

fd1: i4= 15, INT_5= 18

fd2: i4= 13, INT_5= 18

首先看输出结果:fd1与fd2对比,i4结果发生了变化,INT_5没有变,i4的修饰符是private 和 final ;INT_5的修饰符是static 和final;由于i4仅仅只是私有的final成员,所以不同对象的引用所具有的i4的值当然可以不同,但是相同对象的i4的值不可以发生变化;而INT_5因为是static的成员,并且也有final关键字修饰,所以INT_5是该类共有的成员,而且不可以发生改变;

再来看几条error;第一条error是对fd1.valueOne自加发生的错误;

private final int valueOne=9;这条语句表示valueOne成员是一个私有的final成员并且初始化为9;所以任何对其进行改变的语句都是错误的;

v2是Value对象的引用,同时也有final修饰,当出现final修饰对象的引用时,表示对象本身可变,但是该引用只能指向该对象(即引用不可变);

VAL_3是private和static和final修饰的成员,也是一个对象的引用,所以无法将它改变指向其他对象;

关于数组,数组也是对象的引用,所以无法改变指向的对象;

总结:

final关键字修饰基本数据类型,对象的引用,成员方法,数组,类;

1:修饰基本数据类型是,表示该变量不可变;

2:修饰对象引用时,表示该对象的引用不可变,只能指向该对象,对象本身可以改变;

3:修饰成员方法时,表示该方法不可变且继承时不会被覆盖;

4:数组和对象引用类似,可以看作引用的集合;

5:修饰类,表示该类不想改变也不可以被继承;

时间: 2024-10-14 14:14:50

java中的final关键字初步接触的相关文章

浅析Java中的final关键字

原文出处: 海子 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正. 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字

转载:浅析Java中的final关键字

文章转自:http://www.cnblogs.com/dolphin0520/p/3736238.html 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cn

浅析Java中的final关键字(转载)

自http://www.cnblogs.com/dolphin0520/p/3736238.html转载 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字的基本用法. 1.修饰类 当用final修饰一个类时,表明这个类不能被继承.也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰.final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方

关于Java中的final关键字

Java中的final关键字是用来限制用户行为的,说白了,就是用来限制我们这些程序员的.final可以用来修饰:变量.方法.类. 1)Java final variable final用来修饰变量时,该变量的值是不能改变的,其实就变成了常量,等同于c++中的constant关键字.来个栗子尝尝: 1 class Bike9{ 2 final int speedlimit=90;//final variable 3 void run(){ 4 speedlimit=400; 5 } 6 publi

深入理解Java中的final关键字

Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例.final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的. final关键字的含义? final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如

浅析Java中的final关键字(转)

浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/3736238.html 一

浅谈Java中的final关键字

谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字的基本用法. 1.修饰类   当用final修饰一个类时,表明这个类不能被继承.也就是说,如果一个类你永远不会让他被继承,就可以用final

深入理解Java中的final关键字(转)

文章转自http://www.importnew.com/7553.html Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例.final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的. final关键字的含义? final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变

【转】浅析Java中的final关键字

谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字的基本用法. 1.修饰类 当用final修饰一个类时,表明这个类不能被继承.也就是说,如果一个类你永远不会让它被继承,就可以用final进行