Java中String为什么是final
final概念:
如果一個(gè)類被聲明為final,意味著它不能再派生出新的子類,不能作為父親被繼承。因此,一個(gè)類不能既被聲明為abstract,又被聲明為final。
將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖儭F涑跏蓟梢栽趦蓚€(gè)地方:
一是其定義處,也就是說(shuō),在final變量定義時(shí)直接給其賦值;
二是在構(gòu)造函數(shù)中。
這兩個(gè)地方只能選其一,要么在定義時(shí)給值,要么在構(gòu)造函數(shù)中給值,不能同時(shí)既在定義時(shí)給了值,又在構(gòu)造函數(shù)中給另外的值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重寫。
final變量,代表該變量為常量,并且必須要賦值。
static final int i = 123;或
static final int i; static {i = 123; }?
String為什么是final類呢?
經(jīng)過(guò)上面的敘述,可以說(shuō):
主要是為了“效率”?和?“安全性”?的緣故。若?String允許被繼承,?由于它的高度被使用率,?可能會(huì)降低程序的性能,所以String被定義成final。
Java并不是操作系統(tǒng)本地語(yǔ)言,換句話說(shuō)Java必須借助操作系統(tǒng)本身的力量才能做事,JDK中提供的好多核心類比如String,這類的類的內(nèi)部好多方法的實(shí)現(xiàn)都不是Java編程語(yǔ)言本身編寫的,好多方法都是調(diào)用的操作系統(tǒng)本地的API,這就是著名的“本地方法調(diào)用”,也只有這樣才能做事,這種類是非常底層的,和操作系統(tǒng)交流頻繁的,那么如果這種類可以被繼承的話,如果我們?cè)侔阉姆椒ㄖ貙懥?#xff0c;往操作系統(tǒng)內(nèi)部寫入一段具有惡意攻擊性質(zhì)的代碼什么的,這不就成了核心病毒了么??
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhengbin/p/5544723.html
總結(jié)
以上是生活随笔為你收集整理的Java中String为什么是final的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jq ajax ajaxsubmit,如
- 下一篇: 无盘服务器读写缓存,无盘系统中实现网络磁