歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java編程思想學習筆記——一切都是對象

前言

Java是基於C++的,但Java是一種更加純粹的面向對象程序設計語言。

C++和Java都是混合/雜合型語言。雜合型語言允許多種編程風格。

用引用操縱對象

每種編程語言都有自己操縱內存中元素的方式。

  • 直接操縱元素
  • 用某種基於特殊語法的間接表示(C和C++裡的指針)
  • 用引用操縱對象(Java)

在Java中,一切都被視為對象。操縱的標識符實際上是對象的一個引用

  • 類比為遙控器(引用)來操縱電視機(對象)
  • 只要把握這個遙控器,就能保持與電視機的連接
  • 改變頻道或減小音量,實際操縱的是遙控器(引用),再由遙控器來調控電視機(對象)
  • 在房間四處走走,只要攜帶遙控器(引用)而不是電視機(對象)就能調控電視機
  • 即使沒有電視機,遙控器也可以獨立存在
        //創建的只是引用而不是對象
        String s1;
        //創建一個引用的同時便進行初始化
        //Java語言的特性:字符串可以用帶引號的文本初始化
        String s2 = "abcd";
        //更通用的初始化方法
        //創建一個引用,並與一個新的對象相關聯
        String s3 = new String("abcd");

必須由我們創建所有對象

存儲到什麼地方

程序運行時,對象的放置安排,內存的分配都是我們必須了解的。
有五個不同的地方可以存儲數據:
1.寄存器
2.堆棧
3.
4.常量存儲
5.非RAM存儲

寄存器:位於數量極其有限的寄存器,是最快的存儲區,寄存器會根據需求進行分配,不能直接控制,也不能在程序中感覺到寄存器存在的任何跡象

堆棧:位於通用RAM(隨機訪問存儲器)中,通過堆棧指針可以從處理器那裡獲得直接支持,堆棧指針向下移動,則分配新的內存,向上移動,則釋放那些內存(這是一種快速有效的分配存儲方法,僅次於寄存器)創建程序時,Java系統必須知道存儲在堆棧內所有項的確切生命周期,以便上下移動堆棧指針。--->限制了程序的靈活性,所以某些Java數據(如對象引用)存儲在堆棧中,但是Java對象並不存儲在堆棧中

:通用的內存池(位於RAM區)。用於存儲所有java對象。編譯器不需要知道存儲的數據在堆中存活多長時間(靈活性,但分配和清理的時間較長)。

常量存儲:存放在程序代碼內部。

非RAM存儲:數據完全存活於程序之外,不受程序的任何控制,在程序沒有運行時也可以存在。如流對象持久化對象

特例:基本類型

new一個對象存儲在堆裡,因此用new創建一個對象——特別是小的,簡單的變量往往不是很有效的。
對於這些類型,Java采取不用new來創建變量,而是創建一個並非是引用的自動變量(直接存儲值,並且存儲在堆棧中)。

Java語言對於每種基本類型所占存儲空間大小是固定的,不像其他語言隨機器硬件架構的變化而變化。(可移植性更高)

       /**
         * 基本類型創建的不是引用,而是一個自動變量,直接存儲值,並且存儲在堆棧中。
         * 基本類型都有相對應的包裝器類,能在堆中創建一個非基本對象,用來表示相對應的基本類型。
         */
        //基本類型
        int i = 5;
        //包裝類型
        Integer integer = new Integer(i);
        //Java SE5自動包裝
        Integer integer1 = 4;
        //反向轉換
        int i1 = integer1;

Copyright © Linux教程網 All Rights Reserved