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

  • 相关阅读:
    安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)
    VM虚拟机安装 常用Linux命令 网卡配置 (第二天)
    数据库的交互模式 常用的dos命令 (第一天)
    Validate US Telephone Numbers FreeCodeCamp
    Arguments Optional FreeCodeCamp
    Everything Be True FreeCodeCamp
    Binary Agents FreeCodeCamp
    Steamroller FreeCodeCamp
    Drop it FreeCodeCamp
    Smallest Common Multiple FreeCodeCamp
  • 原文地址:https://www.cnblogs.com/studycode/p/9534866.html
Copyright © 2011-2022 走看看