ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

final关键字

2022-03-18 19:05:47  阅读:130  来源: 互联网

标签:int Value fd1 关键字 private new final


1.final修饰类

不能被继承 : String System StringBuffer

2. final 修饰方法

不可以被重写: Object 的 getClass()

3. final 修饰变量

常量,无法被改变 必须要在对象创建之前 或者 对象创建时候 赋值

  • final 修饰属性:可以考虑的赋值位置

    • 显式初始化

    • 代码块中初始化

    • 构造器中初始化

 

 1 import java.util.Random;
 2 
 3 class Value{
 4     int i;
 5     public Value(int i){
 6         this.i = i;
 7     }
 8 }
 9 public class FinalData {
10     private static Random rand = new Random(47);
11     private String id;
12     public FinalData(String id){
13         this.id = id;
14     }
15     private final int valueOne = 9;//编译期就初始化了 编译器常量
16     //?
17     private static final int VALUE_TWO = 99;//static final
18     public static final int VALUE_THREE = 39;
19 
20     private final int i4 = rand.nextInt(20);// 第一次赋值的时候就已经 给常量赋值  一旦赋值 他们的值不能被改变 永远都是这样的
21     static final int INT_5 = rand.nextInt(20);//static  注意 是在类加载的时候 就被初始化 无论创建多少对象都无法被改变
22 
23     private Value v1 = new Value(11);
24     private final Value v2 = new Value(22);
25     private static final Value VAL_3 = new Value(33);
26 
27     private final int[] a = {1,2,3,4,5,6};
28     public String toString(){
29         return id + ":" +  "i4 = " + i4 + ", INT_5 = " + INT_5;
30     }
31 
32     public static void main(String[] args) {
33         FinalData fd1 = new FinalData("fd1");
34 //        fd1.valueOne++; //报错    final数据 不能被改变
35         fd1.v2.i++;//v2 中的 属性i值内容被改变了 是可以的  不是修改的 final Value 这个常量对象 所以可以
36         fd1.v1 = new Value(9);//v1 不是final  可以被改变
37 //        fd1.v2 = new Value(1);//报错 final对象 不能被改变
38 
39 
40         for (int i = 0; i < fd1.a.length; i++) { fd1.a[i]++; }//没有报错  修改的是 final数组对象的内部值
41 //        fd1.a = new int[3];//报错 修改了 final 数组对象
42 
43         System.out.println(fd1);//对象
44 
45         //创建的新的对象
46         FinalData fd2 = new FinalData("fd2");
47 
48 
49         System.out.println(fd1);
50         System.out.println("new Object");
51         System.out.println(fd2);
52     }
53 }
54 /*
55 fd1:i4 = 15, INT_5 = 18
56 fd1:i4 = 15, INT_5 = 18
57 new Object
58 fd2:i4 = 13, INT_5 = 18
59 */

 

标签:int,Value,fd1,关键字,private,new,final
来源: https://www.cnblogs.com/lzw-lxy/p/16023147.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有