java中final修飾符實(shí)例分析
final修飾符:
final修飾成員變量必須有程序員顯示指定初始值。
類(lèi)的Field:必須在靜態(tài)初始化塊中或聲明該Field時(shí)指定初始值。
實(shí)例Field:必須在非靜態(tài)初始?jí)K中,聲明Field或者構(gòu)造器中指定初始值。
final局部變量:必須由程序員顯示初始化。
final修飾的基本變量和引用類(lèi)型變量的區(qū)別?
final修飾的基本變量:不能對(duì)基本變量重新賦值。
final修飾的引用變量:只保證這個(gè)引用類(lèi)型所引用的地址不會(huì)變,即
一直引用同一個(gè)對(duì)象,但這個(gè)對(duì)象完全可以發(fā)生改變。
/**
*/
import java.util.*;
public class Demo5
{
public static void main(String[] args)
{
final B b = new B(22);
b.test();
//合法 改變值,但仍是指向同一個(gè)引用
b.setAge(20);
System.out.println(b.getAge());
// 非法
// b = null;
b.test2();
}
}
/**
fianl修飾成員變量
*/
class A
{
//合法
final int a = 10;
//構(gòu)造器或初始化化塊中指定初始值
final String str;
final int c;
final static double d;
{
str = "hello";
//非法
// a = 100;
}
static
{
d = 100;
}
// 構(gòu)造器可對(duì)沒(méi)在初始化塊中指定的Field指定初始值
public A()
{
// 非法
// str = "ddd";
c = 1000;
}
public double changFinal()
{
// 不能再普通方法中為final指定初始值
// return d = 1000.90;
return 0;
}
}
/**
fianl修飾數(shù)組 對(duì)象
*/
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));
//下面對(duì)Arr重新賦值 非法
// arr = null;
}
/**
加深對(duì)final的理解
*/
public void test2()
{
String str1 = "美好未來(lái)";
//直接引用常量池中的"美好未來(lái)"
String str2 = "美好"+"未來(lái)";
//true
System.out.println(str1 == str2);
String s1 = "美好";
String s2 = "未來(lái)";
String s3 = s1+s2;
//false s1 s2只是變量 在編譯時(shí)期不能確定
//若想在編譯時(shí)期確定 則用 final修飾 s1 s2
System.out.println(str1 == s3);
}
}
小伙伴們是否對(duì)java中final修飾符有所了解了呢,相信注釋中已經(jīng)給大家解釋的很清楚了,我這里就不再啰嗦
相關(guān)文章
springboot+idea熱啟動(dòng)設(shè)置方法(自動(dòng)加載)
這篇文章主要介紹了springboot+idea熱啟動(dòng)設(shè)置方法(自動(dòng)加載),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
SpringBoot的ResponseEntity類(lèi)返回給前端具體講解
這篇文章主要給大家介紹了關(guān)于SpringBoot的ResponseEntity類(lèi)返回給前端的相關(guān)資料,ResponseEntity是Spring框架中用于封裝HTTP響應(yīng)的類(lèi),可以自定義狀態(tài)碼、響應(yīng)頭和響應(yīng)體,常用于控制器方法中返回特定數(shù)據(jù)的HTTP響應(yīng),需要的朋友可以參考下2024-11-11
springboot application無(wú)法使用$獲取pom變量的問(wèn)題及解決
這篇文章主要介紹了springboot application無(wú)法使用$獲取pom變量的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
java實(shí)現(xiàn)HttpClient異步請(qǐng)求資源的方法
這篇文章主要介紹了java實(shí)現(xiàn)HttpClient異步請(qǐng)求資源的方法,實(shí)例分析了java基于http協(xié)議實(shí)現(xiàn)異步請(qǐng)求的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
Spring Boot集成Shiro實(shí)現(xiàn)動(dòng)態(tài)加載權(quán)限的完整步驟
這篇文章主要給大家介紹了關(guān)于Spring Boot集成Shiro實(shí)現(xiàn)動(dòng)態(tài)加載權(quán)限的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

