java中final修飾符執行個體分析_java

來源:互聯網
上載者:User

final修飾符:

final修飾成員變數必須有程式員顯示指定初始值。
類的Field:必須在靜態初始化塊中或聲明該Field時指定初始值。
執行個體Field:必須在非靜態初始塊中,聲明Field或者構造器中指定初始值。

final局部變數:必須由程式員顯示初始化。

final修飾的基本變數和參考型別變數的區別?

final修飾的基本變數:不能對基本變數重新賦值。
final修飾的引用變數:只保證這個參考型別所引用的地址不會變,即
一直引用同一個對象,但這個對象完全可以發生改變。

複製代碼 代碼如下:

/**
  
*/
import java.util.*;
public class Demo5
{
 public static void main(String[] args)
 {
  final B b = new B(22);
  b.test();
  //合法  改變值,但仍是指向同一個引用
  b.setAge(20);
  System.out.println(b.getAge());
  // 非法
  // b = null;
  b.test2();
 }
}
 /**
 fianl修飾成員變數
*/
class A
{
 //合法
 final int a = 10;
 //構造器或初始化化塊中指定初始值
 final String str;
 final int c;
 final static double d;
 {
  str = "hello";
  //非法
  // a = 100;
 }
 static
 {
  d = 100;
 }
 
 // 構造器可對沒在初始化塊中指定的Field指定初始值
 public A()
 {
  // 非法
  // str = "ddd";
  c = 1000;
 }
 public double changFinal()
 {
  // 不能再普通方法中為final指定初始值
  // return d = 1000.90;
  return 0;
 }
}
 /**
 fianl修飾數組 對象
*/
class B
{
 private int age;
 public B()
 {
 
 }
 
 public B(int age)
 {
  this.age = age;
 }
 
 public void setAge(int age)
 {
  this.age = age;
 }
 
 public int getAge()
 {
  return this.age;
 }
 
 public void test()
 {
  final int[] arr={23,434,56,898};
  System.out.println(Arrays.toString(arr));
  Arrays.sort(arr);
  System.out.println(Arrays.toString(arr));
  arr[2] = 200;
  System.out.println(Arrays.toString(arr));
  //下面對Arr重新賦值 非法
  // arr = null;
 }
 
 /**
  加深對final的理解
 */
 public void test2()
 {
  String str1 = "美好未來";
  //直接引用常量池中的"美好未來"
  String str2 = "美好"+"未來";
  //true
  System.out.println(str1 == str2);
  
  String s1 = "美好";
  String s2 = "未來";
  String s3 = s1+s2;
  //false  s1 s2隻是變數 在編譯時間期不能確定
  //若想在編譯時間期確定 則用 final修飾 s1 s2
  System.out.println(str1 == s3);
 }
}

小夥伴們是否對java中final修飾符有所瞭解了呢,相信注釋中已經給大家解釋的很清楚了,我這裡就不再囉嗦

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.