• 11.2 final变量


    1、概述
      a、final关键字可用于变量声明,一旦该变量设定,就不可以在改变该变量的值。通常,由final定义的变量为常量。
      b、final关键字定义的变量必须在声明是对其进行赋值操作。
      c、final出了可以修饰基本数据类型的常量,还可以修饰对象引用。
      d、在被定义为final的常量时需要使用大写字母命名,并且中间使用下划线进行连接,这是Java中的编码规则。
      e、在Java中定义全局变量,通常使用public static final修饰,这样的常量只能在定义时被赋值。

    例11.4

     1 package com.lzw;
     2 import static java.lang.System.out;
     3 import java.util.Random;
     4 
     5 class Test{
     6     int i = 0;
     7 }
     8 
     9 public class FinalData {
    10     static Random rand = new Random();
    11     private final int VALUE_1 = 9; //声明一个final常量
    12     private static final int VALUE_2 =10;  //声明一个final、static常量
    13     private final Test test = new Test();  //声明一个final引用
    14     private Test test2 = new Test();  //声明一个不是final的引用
    15     private final int[] a = {1,2,3,4,5,6};   //声明一个定义为final的数据
    16     private final int i4 = rand.nextInt(20);
    17     private static final int i5 = rand.nextInt(20);
    18     public String toString() {
    19         return i4 + " " + i5 + " ";
    20     }
    21     
    22     //主方法
    23     public static void main(String[] args) {
    24         FinalData data = new FinalData();
    25         //可以对指定为final的引用中的成员变量赋值,但不能将定义为final的引用指向其它引用
    26 //        data.test = new Test();
    27 //        data.VALUE_2++;
    28         
    29         //不能改变定义为final的常量值
    30         data.test2 = new Test();
    31         
    32         for(int i=0;i<data.a.length;i++) {
    33             //不能对定义为final的数组赋值
    34 //            a[i] = 9;   
    35         }
    36         
    37         out.println(data);
    38         out.println("data2");
    39         out.println(new FinalData());
    40         out.println(data);
    41     }
    42 }
    View Code

    2、通常一个被定义为final的对象引用只能指向唯一一个对象,不可以将它在指向其它对象,但是一个对象本身的值却是可以改变的,那么为了使一个常量真正做到不可更改,可以将常量声明为static final。

    例11.5

     1 package com.lzw;
     2 import java.util.Random;
     3 import static java.lang.System.out;
     4 
     5 public class FinalStaticData {
     6     private static Random rand = new Random();   //实例化一个Random类对象
     7     private final int a1 = rand.nextInt(10);      //随机产生0~10之间的随机数赋予定义为final的a1
     8     private static final int a2 =rand.nextInt(10);
     9     
    10     //主方法
    11     public static void main(String[] args) {
    12         //实例化一个对象
    13         FinalStaticData fdata = new FinalStaticData();  
    14         out.println("重新实例化调用a1的值:" + fdata.a1);  //调用定义为final的a1
    15         out.println("重新实例化调用a2的值:" + fdata.a2);  //调用定义为static final的a2
    16         
    17         //实例化另外一个对象
    18         FinalStaticData fdata2 = new FinalStaticData(); 
    19         out.println("重新实例化调用a1的值:" + fdata2.a1);  //调用定义为final的a1
    20         out.println("重新实例化调用a2的值:" + fdata2.a2);  //调用定义为static final的a2
    21     }
    22             
    23 }
    View Code

  • 相关阅读:
    Timer 函数 C#
    【学习笔记】 golang的插件 创建share object
    mongodb数组操作
    mongo数据库的表设计原则:二
    mongodb + nginx 存储照片方案
    mongodb聚合操作$使用例子
    mongo配置复制集
    尼采全集
    java日志框架
    常用包收集
  • 原文地址:https://www.cnblogs.com/studycode/p/9534866.html
Copyright © 2020-2023  润新知