1. 程式人生 > >『Java編程思想-第四版』第二章:一切都是對象

『Java編程思想-第四版』第二章:一切都是對象

ack 運行時錯誤 存儲 數據類型 自身 創建 引用 all 外觀

Java編程思想-第四版學習總結,此為第二章:一切都是對象.

    package com.w3cjava.second;  
    @SuppressWarnings("all")  
    public class Second {  
      
        /** 
         * Java編程思想(第四版) 
         * 第2章  一切都是對象 
         * @param args 
         */  
        public static void main(String[] args) {  
            /** 
             * 2.1  用引用操作對象 
             *      遙控器(引用)操作電視機(對象),改變音量,改變頻道 
             * 
             *      即使沒有電視機,遙控器也是可以獨立存在的, 
             *      因此,引用也是可以獨立存在的,並不一定要與某個對象關聯,但是如果你要對這個引用操作,此時就會報運行時錯誤。 
             *      如果要對這個引用操作,則需要在創建這個引用的同時就初始化這個引用。 
             */  
              
            String s1;//未初始化  
            /** 
             * 創建String類型的引用s1未初始化,此時會出現運行時錯誤 
             * System.out.println(s1); 
            */  
            String s2="abcd";  
              
            String s3 = new String();  
            String s4 = new String("abcd");  
            /** 
             * 創建String類型的引用s2初始化,String類型的可以通過帶引號的文本初始化 
             */  
            System.out.println(s2);  
            System.out.println(s3);  
            System.out.println(s4);  
              
            /** 
             * 2.2  必須由你創建所有對象 
             * 2.2.1存儲位置 
             *      1、寄存器       :位於處理器內部,存儲速度最快,但數量有限,按需分配,不能直接控制。 
             *      2、堆棧        :位於RAM中,存儲速度僅次於寄存器,通過堆棧指針可以從處理器獲得直接支持,指針向下移動,分配新的內存,反之,釋放內存。 
             *                    創建程序時,Java必須知道存儲在堆棧內所有項的生命周期,以便堆棧指針的上下移動。 
             *                    某些Java數據存儲於堆棧中---特別是對象引用,但Java對象並不存儲其中。 
             *      3、堆     :通用的內存池,位於RAM內,用於存放所有的Java對象。存儲數據無需像堆棧那樣知道生命周期。 
             *                    當需要一個對象時,new寫一行簡單的代碼即可,當執行這行代碼時,會自動在堆裏進行存儲分配。 
             *      4、常量存儲  :位於程序代碼內部。 
             *      5、非RAM存儲    :位於程序之外 
             *                    流對象---對象轉化為字節流 
             *                    持久化對象---對象存放到磁盤上 
             * 
             * 2.2.2特例:基本類型 
             *      無需new來創建變量,而是創建一個並非是引用的“自動”變量,這個變量直接存儲“值”,並置於堆棧中,因此更加高效。確定每種基本類型所占存儲空間的大小,大小不變。都具有包裝器類型。 
             *      char c =‘x‘; 
             *      Character character=c; 
             *      System.out.println(character); 
             * 高精度數字: 
             *      BigInteger:支持任意精度的整數. 
             *      BigDecimal:支持任何精度的定點數. 
             *  
             * 自動包裝功能將自動地將基本類型轉換為包裝類型 
             * Character m = ‘k‘; 
             * 也可反向轉換 
             * char l = m; 
             *  
             * 2.2.3Java中的數組: 
             *      C/C++       :數組--內存塊,如果程序訪問自身內存塊之外的數組或數組初始化前使用內存,都會產生難以預料的後果。使用數據危險。 
             *      Java        :使用數組安全。Java數組會被初始化,而且不能在它的範圍之外被訪問。 
             */       
        }  
          
          
        /** 
         * 2.3  永遠不需要銷毀對象 
         * 2.3.1作用域:決定了定義其內的變量名的可見性和生命周期。 
         * 2.3.2對象的作用域:new出來的對象,只要需要,就會一直保留下去。(如下方法體力new一個String類型的對象,方法運行完,s的引用就會消失,但是new String("ssss")出來的對象並不會立即消失) 
         *      如果Java讓對象一直存在,那麽靠什麽才能防止這些對象填滿內存空間,進而阻塞你的程序呢? 
         *      Java垃圾回收器,監控new創建的所有對象,辨別那些不再被引用的對象,釋放這些對象的內存空間。避免了內存泄漏問題。 
         */  
        public void scope(){  
            String s = new String("ssss");  
            return;  
        }  
          
        /** 
         * 2.4  創建新的數據類型:類 
         *      描述某一類對象的外觀和行為. 
         * 2.4.1字段和方法 
         *      字段:任何類型的對象 
         *      方法:做某些事情的方式 
         * 2.5. 方法/參數/返回值  
         *      return :已經做完,離開此方法,若返回類型為void,則return關鍵字的作用只是用來退出方法. 
         * 2.6  構建一個Java程序 
         *               
         */  
        NewClass newClass = new NewClass();  
    }  
      
    class NewClass{  
          
    }  

『Java編程思想-第四版』第二章:一切都是對象