欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中final變量使用總結(jié)

 更新時間:2015年06月12日 09:01:14   投稿:junjie  
這篇文章主要介紹了Java中final變量使用總結(jié),final關(guān)鍵字可用于變量聲明,一旦該變量被設(shè)定,就不可以再改變該變量的值,通常final定義的變量為常量,需要的朋友可以參考下

final關(guān)鍵字可用于變量聲明,一旦該變量被設(shè)定,就不可以再改變該變量的值。 通常final定義的變量為常量。如:

復(fù)制代碼 代碼如下:

final double PI = 3.14; 

當(dāng)在程序中使用PI這個常量時,它的值就是3.14,如在程序中再次對定義為final的常量賦值,編譯器將不能接受;
final關(guān)鍵字定義的變量必須在聲明時對其進(jìn)行賦值操作。final除了可以修飾基本數(shù)據(jù)類型的常量,還可以修飾對象引用。由于數(shù)組也可以被用作一個對象引用,所以final可以修飾數(shù)組。一旦一個對象引用被修飾為final后,它只能恒定指向一個對象,無法將其改變?yōu)榱硪粋€對象。一個既是static又是final的字段只占據(jù)一段不能改變的存儲空間。如下例:

import static java.lang.System.out; 
import java.util.Random; 
class Test{ 
  int i = 0; 
} 
public class FinalData { 
  static Random rand = new Random(); 
  private final int VALUE_1 = 9;//final定義的變量必須使用大寫字母命名 
  private static final int VALUE_2 = 10;//并且使用下劃線進(jìn)行連接; 
  private final Test test = new Test(); 
  private Test test2 = new Test(); 
  private final int[] a = {1,2,3,4,5,6}; 
  private final int i4 = rand.nextInt(20); 
  private static final int i5 = rand.nextInt(20); 
  public String toString() 
  { 
    return i4 + "" + i5 + ""; 
  } 
  public static void main(String[] args) { 
    FinalData data = new FinalData(); 
    //data.test = new Test(); 
    //data.VALUE_2++; 
    data.test2 = new Test(); 
    for(int i=0; i<data.a.length; i++) 
    { 
      //a[i] = 9; 
    } 
    out.println(data); 
    out.println("data2"); 
    out.println(new FinalData()); 
    out.println(data); 
  } 
} 

一個被定義為final的對象只能指向唯一一個對象,不可以將它指向其他對象,但是一個對象本身的值確實可以改變的,那么為了使一個常量真正做到不可更改,可以將常量說明為static final. 如下例:

import static java.lang.System.out; 
import java.util.Random; 
public class FinalStaticData { 
  private static Random rand = new Random(); 
  private final int a1 = rand.nextInt(10); 
  private static final int a2 = rand.nextInt(10); 
   
  public static void main(String[] args) { 
    FinalStaticData fdata = new FinalStaticData();//實例化一個對象 
    out.println("重新實例化對象調(diào)用a1的值:" + fdata.a1); 
    out.println("重新實例化對象調(diào)用a2的值:" + fdata.a2);   
    FinalStaticData fdata2 = new FinalStaticData();// 實例化新對象 
    out.println("重新實例化對象調(diào)用a1的值:" + fdata2.a1); 
    out.println("重新實例化對象調(diào)用a2的值:" + fdata2.a2); 
  } 
} 

重新實例化對象調(diào)用a1的值:9 
重新實例化對象調(diào)用a2的值:2 
重新實例化對象調(diào)用a1的值:1 
重新實例化對象調(diào)用a2的值:2 

總結(jié):

定義為final常量不是恒定不變的,將隨機數(shù)賦予final的變量,可以做到每次運行程序時改變a1的值,但是a2被定義為static final形式,所以內(nèi)存中為a2開辟了一個恒定的區(qū)域,當(dāng)再次實例化一個FianlStaticData對象時,仍然指向a2這塊內(nèi)存區(qū)域,所以a2的值保持不變。

技巧:

在JAVA中定義全局常量,通常使用public static final修飾,這樣的常量只能在定義時被賦值。

相關(guān)文章

  • 利用Java快速查找21位花朵數(shù)示例代碼

    利用Java快速查找21位花朵數(shù)示例代碼

    這篇文章主要給大家介紹了關(guān)于利用Java快速查找21位花朵數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • collection集合體系與并發(fā)修改異常的解決方法

    collection集合體系與并發(fā)修改異常的解決方法

    今天小編就為大家分享一篇關(guān)于collection集合體系與并發(fā)修改異常的解決方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • List集合中對數(shù)據(jù)實現(xiàn)多重規(guī)則進(jìn)行排序的案例

    List集合中對數(shù)據(jù)實現(xiàn)多重規(guī)則進(jìn)行排序的案例

    今天小編就為大家分享一篇關(guān)于List集合中對數(shù)據(jù)實現(xiàn)多重規(guī)則進(jìn)行排序的案例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • java 一鍵部署 jar 包和 war 包

    java 一鍵部署 jar 包和 war 包

    這篇文章主要介紹了Java創(chuàng)建打包命令、創(chuàng)建啟動文件等功能實現(xiàn)Java一鍵部署 jar 包和 war 包,感興趣的下伙伴可以參考下文
    2021-09-09
  • RocketMQ?Broker實現(xiàn)高可用高并發(fā)的消息中轉(zhuǎn)服務(wù)

    RocketMQ?Broker實現(xiàn)高可用高并發(fā)的消息中轉(zhuǎn)服務(wù)

    RocketMQ消息代理(Broker)是一種高可用、高并發(fā)的消息中轉(zhuǎn)服務(wù),能夠接收并存儲生產(chǎn)者發(fā)送的消息,并將消息發(fā)送給消費者。它具有多種消息存儲模式和消息傳遞模式,支持水平擴展和故障轉(zhuǎn)移等特性,可以為分布式應(yīng)用提供可靠的消息傳遞服務(wù)
    2023-04-04
  • Java整合Jackson實現(xiàn)反序列化器流程

    Java整合Jackson實現(xiàn)反序列化器流程

    Jackson是一個開源的Java序列化和反序列化工具,可以將Java對象序列化為XML或JSON格式的字符串,以及將XML或JSON格式的字符串反序列化為Java對象。由于其使用簡單,速度較快,且不依靠除JDK外的其他庫,被眾多用戶所使用
    2023-01-01
  • 高可用架構(gòu)etcd選主故障主備秒級切換實現(xiàn)

    高可用架構(gòu)etcd選主故障主備秒級切換實現(xiàn)

    這篇文章主要為大家介紹了高可用架構(gòu)etcd選主故障主備秒級切換的實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-02-02
  • 基于Java 生產(chǎn)者消費者模式(詳細(xì)分析)

    基于Java 生產(chǎn)者消費者模式(詳細(xì)分析)

    下面小編就為大家分享一篇基于Java 生產(chǎn)者消費者模式(詳細(xì)分析),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Java排序算法三之歸并排序的遞歸與非遞歸的實現(xiàn)示例解析

    Java排序算法三之歸并排序的遞歸與非遞歸的實現(xiàn)示例解析

    這篇文章主要介紹了Java排序算法三之歸并排序的遞歸與非遞歸的實現(xiàn)示例解析,文章通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 在 Spring Boot 中集成 MinIO 對象存儲

    在 Spring Boot 中集成 MinIO 對象存儲

    MinIO 是一個開源的對象存儲服務(wù)器,專注于高性能、分布式和兼容S3 API的存儲解決方案,本文將介紹如何在 Spring Boot 應(yīng)用程序中集成 MinIO,以便您可以輕松地將對象存儲集成到您的應(yīng)用中,需要的朋友可以參考下
    2023-09-09

最新評論