java中常用的关键字_java中的常用的关键字
在java編程過程中,會經(jīng)常寫到一些關(guān)鍵字,但是對于他們應(yīng)用的方式其實(shí)一直是模仿狀態(tài),并沒有很實(shí)質(zhì)的去了解,為什么要這么用,導(dǎo)致程序不能優(yōu)化,或者出現(xiàn)了bug不明所以,因而再詳細(xì)的去重溫了一下各種了解的少的或是易混淆的關(guān)鍵字,就像,通過一只象腳,慢慢的接觸,認(rèn)識到了象的各個(gè)部分,然后再從整只大象的角度去理解,系統(tǒng)的歸納總結(jié),達(dá)到對全局的把握。
part A:易混淆關(guān)鍵字
明白這些后就可以很簡單的使用某一對象的屬性,最開始我在所有類的屬性中都用的private關(guān)鍵字,之后需要調(diào)用這個(gè)類中的該屬性時(shí),均采用形參的方式,既在實(shí)例化對象時(shí)將該屬性以形參的方式傳遞給要調(diào)用的對象,但是,若是直接使用public修飾符,則可直接在需調(diào)用的類中調(diào)用,例:
//Data類中
public String string;
public int weight;//將Data類中的屬性設(shè)為public
//manager類中
Node node=new Node();
node.data.weight++;//直接在其類中調(diào)用和修改Data類實(shí)例化的對象的屬性值
類中的方法大多使用public修飾也是同樣的道理。修飾符決定的是能在什么范圍內(nèi)直接調(diào)用該屬性或方法。private修飾符有其特別的用處,比如在定義權(quán)限時(shí),不希望外界修改的屬性可以考慮使用private修飾符。
part B:少用但有些場合不得不用的關(guān)鍵字
synchronized:在單線程程序中,這個(gè)關(guān)鍵字幾乎沒什么存在的價(jià)值,但是對于多線程程序,當(dāng)一個(gè)變量在多個(gè)線程中可能存在同時(shí)被使用的情況時(shí),這個(gè)關(guān)鍵字就必不可少了,否則程序?qū)?bào)異常。
該關(guān)鍵字就是一把鎖,當(dāng)它修飾某一個(gè)變量時(shí)則表示,該變量一次只能被一個(gè)線程使用,若還有另外一個(gè)線程需要使用該變量必須等待前一個(gè)線程使用完畢后方可。這樣就能防止一個(gè)變量被同時(shí)使用導(dǎo)致報(bào)錯(cuò)。該關(guān)鍵字還能應(yīng)用于一段代碼,我在這里例舉的為該關(guān)鍵字應(yīng)用于變量的案例:
public volatile int p;
//線程1
while(true){
p--;//
}
//線程2
while(true){
p=p+3;//
}
此時(shí)程序可能拋出異常,可加上這樣一句
synchronized (p){};
static:static是一個(gè)經(jīng)常用到但是不容易理解的關(guān)鍵字,從計(jì)算機(jī)存儲來說,既從他的物理地址來說,static修飾的屬性或方法等是放在棧中的,如下圖所示,計(jì)算機(jī)內(nèi)存分為堆與棧,一般來說,對于一個(gè)變量,他的首地址存放于棧中,內(nèi)容放置于堆中,通過棧中的地址來尋找,但是對于static修飾的變量來說,內(nèi)容是直接存放于棧中的,并不需要去尋址。
static修飾的函數(shù)或變量使用不需要實(shí)例化,java中最常見的且必須使用static的是主函數(shù)main,我最開始一直不明白為什么main函數(shù)一調(diào)用就必須使用static,否則報(bào)錯(cuò),這是因?yàn)閙ain函數(shù)在未實(shí)例化前就必須使用,而static剛好具備這個(gè)功能,static修飾的代碼在編譯前就能執(zhí)行。
總結(jié)
以上是生活随笔為你收集整理的java中常用的关键字_java中的常用的关键字的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: json里面的list数据取不出来_sq
- 下一篇: python git切换分支_git命令