Java類、對象和方法的應用
- 2020 年 4 月 3 日
- 筆記


前言

相信大家在接觸Java之後,一定不會對類和方法陌生吧?很多人把基礎學完,簡單的編程對於自己來說輕輕鬆鬆,但是復(zhuang)雜(bi)一點的程式碼對於剛學會的人來說,還是比較費時間的!下面我們就來看看把!!!

What?

簡單的基礎知識就不做回顧了,我們直接開始!
靜態的定義
Sometimes, you want to have variables that are common to all objects. This is accomplished with the static modifier. Fields that have the static modifier in their declaration are called static fields or class variables. They are associated with the class, rather than with any object.
以上是 Oracle 對於靜態的定義。大意為,有時候,你想擁有所有對象通用的變數。 這是通過靜態修改器完成的。 在其聲明中具有靜態修飾符的欄位稱為靜態欄位或類變數。 他們與類相關,而不是與任何對象相關聯。

Demo

我們以一個簡單的例子來看:
public class KingDragon_1{ public static void main(String[] args) throws java.io.IOException{ char ch,ignore; do { do { System.out.println("問題:楊金龍帥不帥?"); System.out.println("你有2個選擇:1.帥! 2.不帥!"); System.out.println("請輸入你的答案:"); ch = (char)System.in.read(); do { ignore = (char)System.in.read(); }while(ignore != 'n');//這個do-while循環用於防止產生輸入錯誤! if(ch!='1')System.out.println("輸入有誤,請重新輸入!"); }while(ch<'1'||ch>'2'); System.out.println("n"); switch(ch) { case '1': System.out.println("恭喜你答對了!"); break; case '2': System.out.println("你心裡沒點B數?"); System.out.println("n"); break; } }while(ch!='1'); } } 大家可以看到,這是最簡便的方法,只是簡單的運用了一些循環體結構。那麼,我們以更復(zhuang)雜(bi)的程式碼應該怎樣去做呢?其實這些程式碼也並不那麼複雜,以構建類和方法的形式來寫,反而是提升了效率!

複習

由static修飾的變數稱為靜態變數,其實質上就是一個全局變數。如果某個內容是被所有對象所共享, 那麼該內容就應該用靜態修飾;沒有被靜態修飾的內容,其實是屬於對象的特殊描述。 不同的對象的實例變數將被分配不同的記憶體空間, 如果類中的成員變數有類變數,那麼所有對象的這 個類變數都分配給相同的一處記憶體,改變其中一個對象的這個類變數會影響其他對象的這個類變數, 也就是說對象共享類變數。 成員變數和靜態變數的區別: • 成員變數所屬於對象。所以也稱為實例變數。 靜態變數所屬於類。所以也稱為類變數。 • 成員變數存在於堆記憶體中。 靜態變數存在於方法區中。 • 成員變數隨著對象創建而存在。隨著對象被回收而消失。 靜態變數隨著類的載入而存在。隨著類的消失而消失。 • 成員變數只能被對象所調用 。 靜態變數可以被對象調用,也可以被類名調用。 所以,成員變數可以稱為對象的特有數據,靜態變數稱為對象的共享數據。 NEW 那麼我們接下來繼續,對於剛才的程式碼,我們來做一些小改進: import java.io.*; public class KingDragon_2 { static char ch; char ignore; String set; void KingDragon_2() throws IOException { do { System.out.println("問題:楊金龍帥不帥?"); System.out.println("你有2個選擇:1.帥! 2.不帥!"); System.out.println("請輸入你的答案:"); ch = (char)System.in.read(); do { ignore = (char)System.in.read(); }while(ignore != 'n');//這個do-while循環用於防止產生輸入錯誤! if(ch!='1')System.out.println("輸入有誤,請重新輸入!"); }while(ch<'1'||ch>'2'); System.out.println("n"); } void blue() { switch(ch) { case '1': System.out.println("恭喜你答對了!"); break; case '2': System.out.println("你心裡沒點B數?"); System.out.println("n"); break; } } public static void main(String[] args) throws IOException{ do{ KingDragon_2 dodo = new KingDragon_2();//KingDragon_2()是KingDragon_2類的默認構造函數 dodo.KingDragon_2();//使用不帶參數構造函數來實例化對象 dodo.blue();//使用不帶參數構造函數來實例化對象 }while(ch!='1'); } } 上面的例子,我們通過已創建的對象來訪問成員變數和成員方法,尤其注意的是,上面的程式碼使用的靜態變數,這個可不是一個新概念喲! 本期小結 • java因強制要求類名(唯一的public類)和文件名統一,因此在引用其它類時無需顯式聲明。在編譯時,編譯器會根據類名去尋找同名文件。 本期名言 • 任何你寫的程式碼,超過 6 個月不去看它,當你再看時,都像是別人寫的。(Eagleson』s law) 『如果您有什麼建議,還請留言或者私信哦!如果您喜歡,點擊關注我們,並分享到朋友圈!』 未 完 待 續 想學Java或者其它電腦語言的你,是否有過迷茫呢?沒關係,私信龍先森,讓龍先森對你一對一解答!

『好了,本期就說到這,一期一篇,有精華有乾貨,有時也划水,還希望大家多多支援。如果你喜歡龍先森的文章,不妨點擊下關注,並分享至朋友圈!』 〖筆者註:若文本圖片有侵權,請聯繫作者刪除,或另行協商〗
*版權聲明:版權歸作者本人所有,尊重原創,推送文章除非無法確認,都會註明作者和來源。如果出處有誤或侵犯到原作者權益,實屬無心之舉,請務必與我聯繫刪除或授權事宜。