我的Thinking in Java學習筆記(二)

來源:互聯網
上載者:User
打造第一個java程式
 名稱的可視性
         名稱問題有些人覺得不是什麼大問題,我開始也覺得那不是個什麼大問題,但是當你有一天寫了很多的類時,你就發現,名稱其實真的很重要,假如你有這麼一個類,他需要調用其他幾個類, 當這幾個被類名相同時,問題就出現了,那麼
         怎麼區分他們,並且使他們的名稱不衝突呢?畢竟我們不可能把每個聲明過的類的名字一一記住,以便在下次聲聲明其他名稱時,加以區分。這個時候我們就需要使用包(package)了,一個包就是一個命名空間。命名空間的使用規則是:反轉internet網域名稱,例如,我的blog是blog.csdn.com/maoerzuozuo你可以在類的開頭使用package maoerzuozuo.com.csdn.blog,這樣就好了~每個包都是一個獨一無二的命名空間。需要注意一點:當使用package說明一個包時,該包的階層必須和檔案目錄的結構相同!就想c:/maoerzuozuo/com/csdn/blog
 使用其他組件
        包定義了之後一定要使用的,怎麼使用呢?在檔案的開頭使用import關鍵字,假如我要匯入我開發的一個叫hello.class組件,我只要import maoerzuozuo.com.csdn.blog.hello;就匯入了我所建立的包,當然你也可以偷懶,用import maoerzuozuo.com.csdn.blog.*;
  匯入該檔案夾裡所有的包(也許你有的包根本用不上),但是這樣有個弊端,就是在編譯的速度要比直接指明包的編譯速度要慢。
 關鍵字static(靜態)
           一個class只有在你使用new來產生對象時,他的函數才能被外界使用,但是也有2中情況是用上面的方法無法實現的。
           1、不管產生多少的對象或沒有對象產生對象時,一些特定的資料存放區只有一份;
           2、類中的某個函數不想和對象綁定在一起,既我不想產生對象,但是我還想用類中的一個函數;
           一般情況下, 你要使用一個非靜態(non-static)的成員的話,必須先產生一個對象使用對象來調用這個資料或函數,所以你必須知道這個函數/資料屬於哪個對象才行,因為static是不用產生對象就可以使用的,所以在static的函數中不能直接調用non-static的函數或變數。
   解決1、把static關鍵字擺在成員變數或函數定義之前,就可以使他們變為靜態。
            class StaticDemo
            {
             static int i=888;
             public static void main(String args[])
             {
              StaticDemo sd1=new StaticDemo();
              StaticDemo sd2=new StaticDemo();
              System.out.println(sd1.i);//888
              System.out.println(sd2.i);//888
              StaticDemo.i++;
              System.out.println(sd1.i);//889
              System.out.println(sd2.i);//889
                
             }
            }
            現在即使你產生n個StaticDemo對象,但是i只有原始的一份,不管你是sd1.i還是sd2.i,其實就是同一個i,全部引用自這個StaticDemo.i,所以,只要改變StaticDemo.i記憶體儲的資料,這些sd1和sd2的i都會改變,因為他們的i的控制代碼全部指向的是StaticDemo.i這一個記憶體空間,就相當於,有一個人在a公司工作,還在b公司兼職,而他假如死掉了,則同時影響2家公司,就是這個意思,同樣的道理也適用於static的函數
    解決2、要想不產生對象就能使用函數,這樣需要在函數名前加上static
              class StaticDemo
              {
               public static void show(String s)
               {
                System.out.println(s);
               }
               public static void main(String args[])
               {
                show("one");//調用方法1
                StaticDemo.show("two");//調用方法2
                new StaticDemo().show("three");//調用方法3
               }
              }
                    對於調用方法1,其實他隱藏了一個關鍵子,就是this,他的完整形式應當是this.show("one"),這個this的用法以後會學到
                    對於調用方法2,使用的是className.method()的形式,這個也就是static的函數調用的典型形式,non-static的函數是不能使用這樣的方法調用的!
                    對於調用方法3,這個方法就是我們調用函數的一般方法,建立對象,由對象調用函數,這個方法對於static和non-static是同樣適用的。某個成員變數在聲明為static的時候,其建立的方式有很大的變化,但是static的函數變化不大,static函數最大的一點用處就是可以在不建立對象的情況下,調用函數,就像我們經常見到的main函數一樣。
你的第一個java程式
        java程式預設的回把java.lang下的包匯入到你所建立的檔案中,我們沒有必要再使用import來匯入。一個public的class的名稱一定要和檔案名稱是一樣的,並且一個class裡面只允許有一個public的class,附則程式是編譯不過去的。如果你要運行這個類的話,那麼這個類中一定要有一個main()函數,他的固定格式為public static void main(String args[]),其中,public表示這是一個公開給外界使用的函數,並且是個static的不允許有傳回值,而傳入main()的參數必須是個String對象數組,即使你從來沒有過,這個args[]的string數組可以儲存cmd的參數。                  
 編譯與執行
     使用javac 檔案名稱.java來編譯java檔案,使用java className來執行className這個類,這裡要注意2點,一個是當你使用java命令執行一個類時,這個類必須要有main函數;第二個className不一定等於檔案名稱,一個java檔案中假如有public類,那麼這個類名必須要和檔案名稱相同,其他情況你可以隨你自己的意思起名字
注釋及內嵌文檔
  //注釋單行 /*.......*/注釋多行,多行注釋內不能嵌套多行注釋。
  寓文檔於注釋
    javadoc命令可以將內嵌在程式碼中的文檔提取出來,產生html格式的檔案,使用瀏覽器就可以查看。
  文法
    這個部分我就跳過去了,有興趣的朋友自己看看,很簡單的
編碼風格
  類名在編寫的時候,應當第一個字母大寫,如果名稱是由多個單片語成,則把這些個單詞並在一起寫,並且把他們的第一個字母大寫 例如 public class MaoErZuoZuo
本章總結:
  這一章總算ko了,呵呵~其實這章講的不難,大家就是要仔細看書,好好體會tij的精髓
本章習題解答
  這章的習題總體不難,惟專屬一個題是運用了後面學習的知識,我們就把他作為難題來對付好了
  "撰寫某個程式,使他能夠接受由命令列傳入的3個引數,為此,你需要對代表命令列引數的string數組進行索引"
  public class Solve
  {
   public static void main(String args[])
   {
    System.out.println(args[0]);
    System.out.println(args[1]);
    System.out.println(args[2]);
   }
  }
  這個程式可以接受3個引數,並且把他顯示出來,有的人會問了:我們怎麼把引數傳遞進來呢。大家在運行時,要在java Solve後面加個空格,在加三個引數,每個使用空格隔開,例如 java Solve aaa bbb ccc這樣程式就會接受到這3個引數,並且把他顯示。當你輸入引數和接受引數的數量不符時候,會抱ArrayIndexOutOfBoundsException的錯誤,希望大家注意!
大家如果在學習的過程中,有什麼問題,可以這樣聯絡我
E-mail molmd@163.net /163.com QQ:31349283 我們可以共同學習進步!
歡迎訪問我的blog,http://blog.csdn.com/maoerzuozuo 裡面有更多學習內容!
未完待續...............
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.