這樣是不行的。因?yàn)镾tring 類是java的核心類,同時(shí)String類是final修飾的,被final修飾的類是不能被繼承。
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),桐城企業(yè)網(wǎng)站建設(shè),桐城品牌網(wǎng)站建設(shè),網(wǎng)站定制,桐城網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,桐城網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
從java的動態(tài)加載機(jī)制中可以更好的來分析該問題。
當(dāng)運(yùn)行Java程序時(shí),首先運(yùn)行JVM(Java虛擬機(jī)),然后再把Java class加載到JVM里頭,放在內(nèi)存的程序代碼區(qū)中運(yùn)行,負(fù)責(zé)加載Java class的這部分就叫做Class Loader,Class Loader有好幾層。
站在Class Loader角度上來講,每一個(gè)被Loade進(jìn)來的class文件就是Class的對象。JVM不是一次性把所有的Class文件都loade進(jìn)來,而是需要某個(gè)class的時(shí)候就loade哪個(gè)class。這是java的動態(tài)加載機(jī)制。
但是,當(dāng)程序需要某個(gè)class的時(shí)候,首先會去檢查當(dāng)前所需要的這個(gè)class有沒有被加載進(jìn)來。這時(shí)當(dāng)前底層的Class Loader就會去調(diào)用它的上一層的Class Loader引用的一個(gè)getParent()方法,這個(gè)方法是去檢查它的上一層的Class Loader有沒有加載進(jìn)所需要的class。這種調(diào)用檢查時(shí)逐級的,就是一級一級的調(diào)用方法去檢查。如果到了頂層的Class Loader發(fā)現(xiàn)沒有加載,那么就會把需要的class加載進(jìn)來。如果有,那么就不會再去加載該class了。
簡單點(diǎn)就是說,我程序代碼現(xiàn)在運(yùn)行到某一行,需要一個(gè)類,這個(gè)時(shí)候就會去檢查這個(gè)類有沒有被加載到內(nèi)存,如果有,就直接從內(nèi)存中用。如果沒有,那么就去把這個(gè)需要的類加載進(jìn)來,再去使用。
java中的String類是它的核心類,所以在程序運(yùn)行之初就會被加載進(jìn)來。這樣做的好處就是保證了java語言的穩(wěn)定性和安全性。就是為了防止樓主所提到的問題。所以我們是永遠(yuǎn)沒有機(jī)會自己去創(chuàng)建這個(gè)String核心類,并且去改寫其中的代碼,從而破壞核心類而導(dǎo)致java程序的崩潰。
Java程序的運(yùn)行需要經(jīng)歷三個(gè)步驟:
編輯
編譯
運(yùn)行
其中,編輯是編寫源碼的過程,編譯是將源碼編譯成.class文件。運(yùn)行時(shí),找的就是.class文件,運(yùn)行程序時(shí),以main函數(shù)為入口,開始執(zhí)行程序,重點(diǎn)是,下次程序運(yùn)行時(shí),JVM虛擬機(jī)不會再次編譯源碼,而是直接尋找對應(yīng)的.class文件,從而運(yùn)行程序。
所以,編譯源碼后,如果有新的修改,需要重新編譯,生成.class文件,然后,才會執(zhí)行。
修改源碼后若不編譯便直接運(yùn)行,JVM使用的仍然是上一次運(yùn)行的.class文件。
當(dāng)你在cmd下第一次輸入這些命令式,系統(tǒng)會將其存入緩存,當(dāng)你想要再次快速輸入時(shí),可以按下方向鍵上“↑”,就可以快速輸出命令。
該過程需要經(jīng)歷四個(gè)步驟:解壓,反編譯,修改,打包。
解壓:jar文件和我們平常的rar和zip文件一樣是屬于壓縮文件,通過一般的解壓縮工具(例如:winrar)都能解壓。解壓之后生成的文件為**.class的字節(jié)碼文件。
反編譯:互聯(lián)網(wǎng)上有很多的字節(jié)碼文件反編譯工具(例如:jad)。他能夠?qū)?*.class文件或者直接能夠?qū)ar文件反編譯為**.java文件。
得到j(luò)ava文件以后就可以修改里面的源代碼了。
將修改好的代碼編譯成**.class字節(jié)碼文件以后再添加替換掉原來jar包中的class文件,或者重新將修改后的java代碼轉(zhuǎn)換成java工程,再生成jar文件都行。
這個(gè)過程的完成需要熟悉java基礎(chǔ),編譯環(huán)境等相關(guān)知識。尤其是對jar包的理解很重要。反編譯在互連網(wǎng)上就能直接找到很多工具。打包則很簡單不做累述。