草之戒_
          posts - 2,comments - 14,trackbacks - 0
                 Java編程思想是學習Java必讀之書,此書的內容跟名字一樣,主要是以思想為主,如果沒有編程經驗,此書確實有點不太適合你,如果你有C/C++編程經驗那這書正適合你,因為作者在內容中是以C/C++與Java作對比來學習的。如果你是直接學習Java可以先選擇Java核心技術來學習,這本書主要是以技術入門為主,雖然里面也同樣與C/C++作對比,但是學習起來會比Java編程思想要簡單的多。當你運用Java有一段時間后,一定要回過頭來學習Java編程這本書,因為它會讓你更進一步。
                 在此次我的blog計劃中,會把Java編程思想每一張的筆記都記錄在blog中,我在經常在網上看到有人說Java編程思想講得有點啰嗦,確實我讀此書也有這種想法,所以在我的blog中我會盡量減少,只會出現有關Java和內容,會把作者描述的C/C++對比方面省略掉,當然這只是做一個參考,建議大家一定要去學習完整的Java編程思想。

          1.用引用操縱對象

                 Java中一切都視為對象,但實際操作對象是一個“引用”(reference)標識符。
          這就如果,遙控器(引用)操作電視(對象)一樣,我們拿著遙控器就能與電視機保持連接。如果想要調整音量大小或者更換頻道時,我們實際上是操作的遙控器,再由控制器調控電視機。我們可以帶著控制器在房間四處走動,同樣也可以操作電視機。
          控制器和電視機是同時可以單獨存在的,沒有電視機,遙控器也可單獨存在。
          String s;
          在上面我們創建了一個String的引用,但它只是一樣引用,并未與任何一個對象相關聯,如果你嘗試向s發送消息,則會得到一個運行時異常,所以一種安全的做法是,在我們創建一個引用同時便為進行初始化。
          String s = "init";
          上面的String是Java中的一種特殊類型,所以可以直接使用帶引號的文本進行初始化,通常,必須對Java中的對象采用一種更通用的初始化方法。

          2.必須由自己創建所有的對象

                 通常我們使用new操作符來創建一個對象。
          String s = new String("init");
          上面是創建一個String對象同時初始化并把該對象的引用賦值給s,此時s便是一個對象的引用(s并非是一個對象,只是一個引用)。

          2.1.存儲位置

                 Java中有5個不同的數據存儲區:
                 1).寄存器:它位于處理器內部是最快的存儲區。但寄存器極其有限,它是根據需求進行分配,我們不能直接操作也不能在程序中感覺到它的存在。
                 2).堆棧:位于通用RAM(隨機訪問存儲器)中通過堆棧指針可以處理器哪里操作堆棧。指針向下移動則分配新的內存;若向上移動則釋放那些內存,速度公次于存儲器,但Java必須知道存儲在堆棧內所有項的確切生命周期,以便上下移動指針。這限制了程序的靈活性,所以只有某些Java數據存儲于堆棧中(對象的引用),Java對象并不存放于其中。
                 3).堆:通用的內存池,用于存放所有的Java對象。存儲在堆里的數據編譯器不需要知道存活多長時間。當使用new創建一個對象時,會自動在堆里存儲分配。為了這種靈活性也犧牲更多的時間。
                 4).常量存儲:常量通過直接存放于代碼的內部,因為他們永遠不會被改變。
                 5).非RAM存儲:該存儲于程序之外,即使程序停止依然保持自己的狀態如(流對象,持久化對象)。對象轉化為字節流,發送給另一臺機器,“持久化對象”即對象被存儲于磁盤或者其他媒介上,在需要時可恢復常規對象。

          2.2.基本數據類型

                 在Java中經常用到這樣一系列特殊對象的“基本類型”,new創建對象會存儲在“堆”里,如果是一些特別小的、簡單的類型,往往不是那么有效,在Java中提供一些不需要使用new創建變量,而是創建一個并非引用的“自動”變量。這個變量直接存儲“值”并存放于堆棧中。
                 Java中的所有基本類型所占的存儲空間大小是固定的,不會因為硬件架構變化而變化。
                

          3.第一個Java程序

          package com.onlyeffort.java.concurrency;

          // 可替換為:import java.util.*;
          import java.util.Random;

          //定義一個公共類名為:HelloWorld
          public class HelloWorld {
              
          // main方法,程序的入口,結構不可變,主體可變
              public static void main(String[] args) {
                  
          // body start..大括號開始
                  
          // 創建一個對象
                  HelloWorld hw = new HelloWorld();
                  
          // 使用hw引用調用say方法
                  System.out.println(hw.say());
                  
          // body end..大括號結束
              }
              
          /**
               * 
               * 
          @return 返回一個字符串,并打出出值.
               
          */
              
          public String say() {
                  Random rand 
          = new Random();
                  
          return "Hello,World!" + rand.nextInt();
              }
          }
                第一行為包聲明語句,包名全為小寫,一般為域名的反轉形式,防止出現沖突,因為域名在全球是唯一的。
                當我們需要使用其它公共的類組件時需要使用import語句引入類。但java編譯器在每個Java文件編譯時會自動引用java.lang.*;下面的所有類,只是lang包下面的所有,但并不包含lang下面的子包,如果我們需要使用java.lang.reflect.Array;時,還需要我們手動引用。
                main方法是Java運行時程序的入口,結構單一不可改變。在main方法中我們創建了一個HelloWorld對象,并把它賦值給hw,此時hw是一個HelloWorld對象的一個引用,hw并非是一個對象。在后面我們調用了HelloWorld的say方法,此方法返回一個字符串,在say方法中,我們創建了一個隨機數,并把它與一個字符串相連接。rand.nextInt()方法會返回一個int類型的整數,這里Java編譯器會執行類型轉換,把int類型轉換為String類型并執行字符串連接。在最后我們使用了return語句返回這個方法的返回值。
                return在Java程序中有兩種作用,一:會結束當前方法(return;);二:返回某個方法的返回值(return value;)。
                在這個HelloWorld中出現了“//”、“/***/”這都是Java當中的注釋。Java編譯器編譯時會忽略注釋后面的所有內容。



          轉載時請注明轉載地址,onlyeffort.QQ:501276913
          posted on 2010-06-02 15:24 Aidan 閱讀(381) 評論(0)  編輯  收藏 所屬分類: JavaSE

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          編程部落   qq群:37996359(上限500人,一起關注java、討論技術,互相學習,共同進步)
          主站蜘蛛池模板: 澄江县| 太保市| 武平县| 南宁市| 广昌县| 长寿区| 阿拉善左旗| 陵水| 武清区| 会同县| 土默特左旗| 登封市| 桦南县| 喀喇沁旗| 饶平县| 邓州市| 荥阳市| 平安县| 和硕县| 民县| 罗城| 休宁县| 台南市| 松潘县| 厦门市| 福泉市| 达拉特旗| 益阳市| 织金县| 彩票| 邳州市| 达州市| 哈巴河县| 望奎县| 乐清市| 大悟县| 抚远县| 锡林郭勒盟| 繁昌县| 平陆县| 乐清市|