<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    1、對象的存儲:Java中所有對象的存儲空間都是在堆中分配的,但是這個對象的引用卻是在堆棧中分配,也就是說在建立一個對象時從兩個地方都分配內存,在堆中分配的內存實際建立這個對象,而在堆棧中分配的內存只是一個指向這個堆對象的指針(引用)而已。堆的特點是靈活性,但為此犧牲了高效性,可以在運行時動態地分配存儲;堆棧的特點是高效性,但缺乏靈活性,在編譯時刻必須知道所要分配的空間大小。堆像個大饅頭,可以根據你的食量隨便吃,吃飽了算;堆棧像是吃大鍋飯,每個人都是定食定量的,你必須告訴廚子你的飯量,廚子據此做飯,然后你們就排隊打飯吧。它們沒有孰優孰劣之分,各自不同特點有不同的應用。

    2、Java的設計在很多方面都基于安全的考慮,減少語言上的混亂,所以喜歡的人很多,屬于大眾情人型。如:運行時數組下標檢查、嚴格的類型檢查,還有消除變量隱藏語法。
    int x = 10;
    {
        int x = 12;  //不合法的!想想看,這種變量隱藏是多么危險,多么不容易察覺,而且多么多余!
    }
    有人說,Java是C++ 再++ 再--,即Java = C++++--。加入了C++沒有的新特性,消除了C++混亂危險的特性。《Thinking in Java》中總是拿C++來做對比,開涮,大家別忘了,他也是那本經典的《Thinking in C++》的作者!最終投靠到我們Java陣營里來了,呵呵。

    3、static方法常常拿來做“牧羊人”的角色,負責看護與其隸屬同一類型的實例群。看看main方法就可以理解這一含義了。

    1、邏輯表達式的短路會獲得潛在的性能提升,有點智能了,不會傻乎乎地一算到底了。利用這點能寫出高效的代碼,如:用||連接的表達式,把為true可能性大的語句放在前面;用&&連接的表達式,把為false可能性大的語句放在前面。

    2、從按位操作符可以看出Java的歷史痕跡,一個跨平臺的語言怎么會牽扯到位操作呢?Java最初是用來開發嵌入式機頂盒的。j2me嵌入式開發也是Java的強項之一,老本行嘛。現在買手機基本都會看支持Java嗎?Java無處不在地滲透著。

    3、在作者的工具箱中有這樣兩個工具printBinaryInt()和printBinaryLong(),并且給出了一個很復雜的實現。這里我給用Java的類庫給簡化一下吧。
        static void printBinaryInt(String s, int i) {
            System.out.println(s + ", int:" + i + ", binary:");
            System.out.print("     ");
            System.out.print(Integer.toBinaryString(i));
            System.out.println();
        }
    當然作者的目的是講解位操作。

    4、字符串的連接。
    int i=1,j=2,k=3;
    System.out.println(i+j+k);
    輸出了6。
    int i=1,j=2,k=3;
    System.out.println(""+i+j+k);
    輸出了123。有趣吧?這是因為從左到右的運算順序。

    Feedback

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-16 22:03 by zhrb
    new一個數組,數組變量是存放在棧,數組本身是不是存放在堆中呢?
    還有就是是不是有一個叫做方法區的地方?對象在堆區,那么類是在什么區?

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 09:38 by 翔南
    @zhrb
    棧存的是引用,堆存的是實質的東西
    "new一個數組,數組變量是存放在棧,數組本身是不是存放在堆中呢?"
    是對的
    但第二個問題我就不知道了

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 09:39 by 翔南
    3、static方法常常拿來做“牧羊人”的角色,負責看護與其隸屬同一類型的實例群。看看main方法就可以理解這一含義了。

    這是什么意思...
    沒明白

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 10:26 by tomlove
    為什么沒有一個 留言板 呢?

    搞的每次留言都在評論里面~~~!!!

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 10:28 by tomlove
    出道題,大家研究一下:

    一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地時,共經過多少米?第10次反彈多高?

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 11:31 by tomlove
    樓主在csdn上有空間沒?

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 12:58 by zhrb
    可能是類似工廠模式的東西吧,你可以查查相關的資料@翔南

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 18:03 by Raylong
    @zhrb
    數組對象的引用在棧里,數組對象本身在堆中。java中的類是動態加載的,需要的時候才加載,這樣可以節省內存空間。
    下面是網上找到的資料,共同學習一下: 在Java虛擬機中,被裝載類型的信息存儲在一個邏輯上被稱為方法區的內存中。當虛擬機裝載某個類型時,它使用類裝載器定位相應的class文件,然后讀入這個class文件,然后將它傳輸到虛擬機中,緊接著虛擬機提取其中的類型信息,并將這些信息存儲到方法區。該類型中的類(靜態)變量同樣也是存儲在方法區中。方法區的大小不必固定,可以根據需要動態調整。方法區也可以被垃圾收集,因為虛擬機允許通過用戶定義的類裝載器來動態擴展Java程序,因此,一些類也會成為“不再引用”的類。 原文參見:http://blog.csdn.net/mimicimim/archive/2007/10/08/1815880.aspx

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 18:04 by Raylong
    @翔南
    第二個問題請參看:http://blog.csdn.net/mimicimim/archive/2007/10/08/1815880.aspx
    我也是第一次知道方法區,大家一起學習一下吧。

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 18:09 by Raylong
    @翔南
    我們一般會寫public static void main(String[] args){}函數嗎?通常我們用這個main函數進行該類的測試,主要當然是測試方法了,方法里面有實質的算法,而且每個類都寫一個main函數測試。牧羊人就是這個意思吧。另外在Java類庫中的許多工具都是static,可以拿來就用,不必生成對象,這正是靜態方法,也就是類方法的作用吧。

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 18:10 by Raylong
    @tomlove
    有留言板啊,可是沒人往里面寫呢……

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 19:00 by Raylong
    @tomlove
    這個是我寫的,初步測試了一下,還沒學junit所以測試得不夠全面,結果不知對不對……
    public class BallTest {
    // 球的初始高度
    private double height;

    // 球第N次彈起的高度
    private double bounceHeight;

    // 球彈落過程走過的路程
    private double bounceDistance;

    // 帶設置球初始的高度的構造函數
    public BallTest(double height) {
    this.height = height;
    bounceDistance = height;
    bounceHeight=height;
    }

    // 默認構造函數,就是你要求的100
    public BallTest() {
    height = 100;
    bounceDistance = height;
    bounceHeight=height;
    }

    // 計算球彈落過程走過的路程,參數是你說的落地的次數
    public double bounceDistance(int dropGroundTimes) {
    double distance = height;
    if (dropGroundTimes == 1) {
    return bounceDistance;
    } else if (dropGroundTimes > 1) {
    for (int i = dropGroundTimes; i > 1; i--) {
    bounceDistance += distance;
    distance /= 2;
    }
    return bounceDistance;
    } else {
    System.out.println("illegal number");
    return 0;
    }
    }

    // 計算球第N次彈起的高度
    public double bounceHeight(int dropGroundTimes) {
    if (dropGroundTimes > 0) {
    for (int i = dropGroundTimes; i > 0; i--) {
    bounceHeight /= 2;
    }
    return bounceHeight;
    } else {
    System.out.println("illegal number");
    return 0;
    }
    }

    public static void main(String[] args) {
    BallTest ball = new BallTest();
    System.out.println(ball.bounceDistance(10));
    System.out.println(ball.bounceHeight(10));
    }

    }

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 19:02 by Raylong
    @tomlove
    我的firefox一進csdn就假死,不知道為什么,所以不在csdn了,你可以看出我是多么喜歡ff了吧 呵呵

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 19:05 by zhrb
    @Raylong
    謝謝你的資料,不知道 這個所謂的方法區是不是可以和堆區、棧區并列的概念。呵呵

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 19:21 by Raylong
    @zhrb
    呵呵 我在考慮是不是要深入地研究jvm的機制,不然很多概念都是模糊的。
    昨天看了一段教程,里面提到移位運算。“移位運算的效率要比正常的乘法要高。所以遇見乘以或者除以2的整數次冪時,可以用移位操作。”作者說,他的一個朋友的同事是清華的研究生,他在做乘除法就用移位操作。細節地方才能體現高手高明的地方啊!

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-17 23:23 by zhrb
    很多常用技巧是挺不錯的,上回看了一些java本身常用類庫編寫的代碼,那個技巧用的真好.呵呵
    @Raylong

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-18 07:35 by Raylong
    @zhrb
    是啊,常看看庫的源文件對編程是很大的提高呢,網上找的代碼質量參差不齊,沒有保證。Java類庫有些東西的算法是許多專家一起研究的結果,比如生成隨機數。很高深有點看不懂 呵呵

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-19 10:56 by 翔南
    謝謝Raylong 和zhrb的講解
    看來偶要好好學習一下JVM的運行機制了
    要不好多東西雖然會用,但不知道為什么要這么用..

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-19 12:25 by tomlove
    @Raylong
    呵呵,寫的不錯了阿。我在 第n次反彈多高?
    的算法和你的一樣,你的更簡潔一些~~~

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-20 11:19 by Raylong
    @tomlove
    simple is good!呵呵 簡單就不容易出錯!

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-20 14:33 by tomlove
    @Raylong
    我是用 等比數列 求N項和的公式 和 等比數列的N項公式作的

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-20 15:40 by Raylong
    @tomlove
    貼出來看看吧,程序語言只是工具,要想高效的算法,還得看數學方面。

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-20 20:58 by tomlove
    呵呵,我只是在紙上寫了一下算法,沒有編譯。----- :( 是不是很懶? 的向你學習了

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-10-21 00:31 by zhrb
    @tomlove
    其實我也覺得寫一個公式就好了...
    類似于高中常作的題目一樣

    # re: 讀書筆記《Thinking in Java》-第二、三章-07/10/16  回復  更多評論   

    2007-12-08 15:38 by wǒ愛伱--咾婆
    你駁殼做的..相當的不錯哦..呵呵..Java真的很棒...學習啊轉了你寫的那經典文章....謝謝啊
    主站蜘蛛池模板: 亚洲精品国产精品国自产观看| av无码国产在线看免费网站| 亚洲 国产 图片| 国产精品久久亚洲一区二区| 午夜无遮挡羞羞漫画免费| 精品国产成人亚洲午夜福利| 最近2019中文字幕免费看最新| 亚洲jjzzjjzz在线观看| 毛片免费全部免费观看| 成人区精品一区二区不卡亚洲| 成年18网站免费视频网站| 精品国产亚洲第一区二区三区| 国产片免费在线观看| 最近中文字幕国语免费完整| 亚洲视频中文字幕| 五月婷婷综合免费| 亚洲最大中文字幕无码网站 | 国产成人亚洲毛片| 免费国产精品视频| 国产精品免费一区二区三区| 国产av天堂亚洲国产av天堂| 51视频精品全部免费最新| 亚洲欧洲另类春色校园网站| 国产一级淫片免费播放| 国产精品福利片免费看| 亚洲AV日韩AV永久无码免下载| 免费观看美女用震蛋喷水的视频| 亚洲日韩精品A∨片无码加勒比| 免费看国产曰批40分钟| 成人无码a级毛片免费| 亚洲一级Av无码毛片久久精品| 99精品视频免费| 激情综合亚洲色婷婷五月APP| 日韩免费在线观看| 免费看黄的成人APP| 亚洲人成人网毛片在线播放| 亚洲精品WWW久久久久久| 91视频免费网址| 老司机亚洲精品影院在线观看| 亚洲爆乳精品无码一区二区三区| www.黄色免费网站|