Java中Final修飾一個變數時,是引用不能變還是引用的物件不能變
Java中,使用Final修飾一個變數,是引用不能變,還是引用物件不能變?
是引用物件的地址不能變,引用變數所指的物件的內容可以改變。
final變數永遠指向這個物件,是一個常量指標,而不是指向常量的指標。
比如: final StringBuffer sb=new StringBuffer("abc");
對sb重新賦值 sb=new StringBuffer("cde");
會出現編譯錯誤,被final修飾的變數是不能重新賦值的;
但是 sb.append("ced");
是可以編譯通過的。
Final作為一個修飾符:
- 可以修飾類、變數、方法
- 被final修飾的類不能被繼承。防止子類繼承重寫父類方法
- 被final修飾的方法不能被重寫
- 被final修飾的變數是一個常量只能被賦值一次。(既可以修飾成員變數,也可以修飾區域性變數)
- 內部類定義在類中的區域性位置上時,只能訪問該區域性被final修飾的區域性變數。
相關推薦
Java中Final修飾一個變數時,是引用不能變還是引用的物件不能變
Java中,使用Final修飾一個變數,是引用不能變,還是引用物件不能變? 是引用物件的地址不能變,引用變數所指的物件的內容可以改變。 final變數永遠指向這個物件,是一個常量指標,而不是指向常量的指標。 比如: final StringBuffer sb=new Stri
【一道面試題】使用 final 關鍵字修飾一個變數時,是引用不能變,還是引用的物件不能變?
剛看到這道題時,自己也是有點懵逼的,也不清楚答案,便趕緊去百度final的用法,然後看了很多回答和例項才只知道了答案! 首先我們來看下 final關鍵字的用法,然後再來回答這道題! 1.final 關鍵字可以用來修飾 類,方法和變數(成員變數和區域性變數)
Java中final修飾符對不同變數的不同影響
final修飾符可以用來修飾類、方法和變數,用於表示它修飾的類、方法和變數不可改變。final修飾變數時,表示該變數一旦獲得了初始值就不可被改變。 由於final變數獲取初始值之後就不能重新賦值,所以final修飾成員變數和區域性變數時有一定程度的不同。 final
面試題:使用final關鍵字修飾一個變數時,是引用不能變,還是引用的物件不能變?
/* * 問題:使用final關鍵字修飾一個變數時,是引用不能變,還是引用的物件不能變 * 答: * 使用final關鍵字修飾一個變數時,是指引用變數不能變,引用變數所指向的物件中的內容還是可以改變的。 */ public class Test10 { // fi
java中final修飾方法傳入引數的含義
final型別修飾的引數分為兩種型別 基本型別 與引用型別 引數加final 1、斯坦福教授說的好,方法可以比喻成一臺機器(麵包機),沒錯,在我的機器(方法)裡面,我要的引數加了final(要原料),你給我傳過來的引數,機器裡面就無法改了,也就是說在機器裡的這個引數,一直指向的都
java中呼叫Oracle儲存過程時,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字(已解決)
在java中呼叫Oracle儲存過程時,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字 //java程式碼 @Test public void testProcedure(){
《java中內部類在區域性時,訪問許可權》
/* 內部類定義在區域性時, 1,不可以被成員修飾符修飾 2,可以直接訪問外部類中的成員,因為還持有外部類中的引用。 但是不可以訪問它所在的區域性中的變數。只能訪問被final修飾的區域性變數。 *
Java中final修飾符(6.4)
final關鍵字可用於修飾類,變數和方法。當final修飾變數時,表示該變數一旦獲得初始值就不能重新被賦值。 1. final成員變數 對於final修飾的成員變數而言,一旦有了初始值,就不能被重賦值,如果既沒有在定義成員變數時指定初始值,也沒有在初始化塊,構造器中為成員變數指定初始值,
Java中final修飾符的初始化安全性的理解
今天看《Java併發程式設計實戰》看到安全釋出的問題中final修飾符的作用,一時半會沒有看明白,查了一些資料才懂了一些深層次的原因,所以做一些記錄。 首先我們來看一下書中的例子和描述 //不安全的釋出 public Holder holder; public void
【小家java】final修飾的變數真的不可變嗎?
相關閱讀 1、概述 這可能是大家的一個共識:如果我們希望這個變數不可變,我們可以用final進行修飾。但本篇將帶你深入瞭解不變的含義,我相信可以讓你更深的瞭解final的原理,也能記得更牢靠 2、栗子 被final修飾過的變數,只是說棧儲存的地址不能再改變,
java中final修飾符的使用方法
成員變數是隨類初始化或物件初始化的.當類初始化時,系統會為該類的類變數分配記憶體,並分配預設值;當建立物件時,系統會為該物件的例項變數分配記憶體,並分配預設值.也就是說.當執行靜態初始化塊時可以對類變數賦初始值;當執行普通初始化塊,構造時可對例項變數賦初始值.因此,成員變數的初始值可以在定義該變數時指定預
Java配置jdk1.8環境變數時,java -version,沒有問題,javac -version卻顯示不是內部命令(系統是Windows10)
前言: 每次換新電腦,都要重新安裝jdk,總會出現一些小問題。。。。。。 今天就針對Javac -version不是內部命令給出我的一些解決辦法,歡迎大家指正和探討 正文: 1.首先復現java -version,沒有問題,javac -version卻不是內部命令的
Java中final修飾的資料
目錄 Java中final修飾的資料 有初始值的final域 final+基本資料型別 final+引用資料型別 final與static final 空白f
Java中final修飾的方法是否可以被重寫
這是一次阿里面試裡被問到的題目,在我的印象中,final修飾的方法是不能被子類重寫的。如果在子類中重寫final修飾的方法,在編譯階段就會提示Error。但是回答的時候還是有點心虛的,因為final變數就可以用反射的方法進行修改,我也不太確定是否有類似的機制可以繞過編譯器的限制。於是面試之後特地上網搜了下這個
Java中final與 static final 修飾的常量的區別
評論 tin 產生 建立 dom code 隨機數 ren 使用 喵喵開車,新手上路,多多關照。有任何錯誤請在評論區指出。 ...........................................我是萬惡的分界線( ? ?ω?? )?.............
java中如何知道一個字符串中有多少個字,把每個字打印出來,舉例
有一個 url ont chapter 書籍 whole mar strong posit (視頻下載) (全部書籍) 9.6 About string,"I am a teacher",這個字符串中有多少個字,且分別把每個字打印出來。 /*本題的思路就是,當我有
java中檢測-在運行時指定對象是否是特定類的一個實例---關鍵字 instanceof
int 指定 tps 實例 它的 servlet -- 布爾 request java 中的instanceof 運算符是用來在運行時指出對象是否是特定類的一個實例。instanceof通過返回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個實例。 if(re
golang中在遍歷陣列時,要修改陣列中變數無法修改成功的問題
記錄在寫go時遇到的一個小坑 例子: package main import ( "fmt" ) type UserInfo struct { Name string `json:"name"` UserId int `json:"user_id"` } type M
結構體中定義變數時,出現冒號+數字的形式(位域定義)
該種形式出現於結構體或共用體的定義中,是位域定義的標準形式。其使用方式為struct name{type var_name : n;};含義為,在結構體name彙總,成員變數var_name佔用空間為n位。n為正整數,其值必須小於type型別佔用的位數。比如type如果是int,佔4位元組32位,那麼n必須是
匿名類訪問區域性變數時,為什麼區域性變數必須加final
匿名內部類就是在物件的方法體內部定義的類。我們都知道方法中的匿名內部類是能夠訪問同一個方法中的區域性變數的,但是為什麼區域性變數要加上一個final呢? 原因就是因為匿名內部類物件的生命週期可能會超過區域性變數的生命期。區域性變數的生命週期是當該方法被呼叫時,該方法中的區