java中的資料類型

來源:互聯網
上載者:User

標籤:是什麼   hang   beans   import   ide   www.   logs   過程   控制代碼   

java中的資料類型

java語言的資料類型包括兩種,基礎資料型別 (Elementary Data Type)和引用資料類型。

定義

基礎資料型別 (Elementary Data Type):變數名指向具體的數值。

引用資料類型:變數名指向存資料對象的記憶體位址,即變數名指向hash值。

 

基礎資料型別 (Elementary Data Type):整數類型(byte,short,int,long);浮點類型(float,double);字元型(char);布爾型(boolean)。

引用資料類型:類(class),介面(interface),數組([])。引用資料類型的類都是Object類的子類。

 

記憶體配置

基礎資料型別 (Elementary Data Type):在被建立時,在棧上給其劃分一塊記憶體,將數值直接儲存在棧上。

引用資料類型:在被建立時,首先要在棧上給其引用(控制代碼)分配一塊記憶體,而對象的具體資訊都儲存在堆記憶體上,然後由棧上面的引用指向堆中對象的地址。

例如,有一個類Person,有屬性name,age,帶有參的構造方法,

Person p = new Person("zhangsan",20);

在記憶體中的具體建立過程是:

1.首先在棧記憶體中位其p分配一塊空間;

2.在堆記憶體中為Person對象分配一塊空間,並為其三個屬性設初值"",0;

3.根據類Person中對屬性的定義,為該對象的兩個屬性進行賦值操作;

4.調用構造方法,為兩個屬性賦值為"Tom",20;(注意這個時候p與Person對象之間還沒有建立聯絡);

5.將Person對象在堆記憶體中的地址,賦值給棧中的p;通過引用(控制代碼)p可以找到堆中對象的具體資訊。

相關知識:

靜態區: 儲存自動全域變數和 static 變數(包括 static 全域和局部變數)。靜態區的內容在總個程式的生命週期內都存在,由編譯器在編譯的時候分配。

堆區:  一般由程式員分配釋放,由 malloc 系列函數或 new 操作符分配的記憶體,其生命週期由 free 或 delete 決定。在沒有釋放之前一直存在,直到程式結束,由OS釋放。其特點是使用靈活,空間比較大,但容易出錯。

棧區: 由編譯器自動分配釋放,儲存局部變數,棧上的內容只在函數的範圍記憶體在,當函數運行結束,這些內容也會自動被銷毀,其特點是效率高,但空間大小有限。

文字常量區: 常量字串就是放在這裡的, 程式結束後由系統釋放。

程式碼區:存放函數體的二進位代碼。

參考:https://www.cnblogs.com/fxust/p/4622105.html

Java中的Null是什嗎?

正如我說過的那樣,null是Java中一個很重要的概念。null設計初衷是為了表示一些缺失的東西,例如缺失的使用者、資源或其他東西。但是,一年後,令人頭疼的null 指標異常給Java程式員帶來不少的騷擾。在這份材料中,我們將學習到Java中null關鍵字的基本細節,並且探索一些技術來儘可能的減少null的檢查以及如何避免噁心的null 指標異常。

1)首先,null是Java中的關鍵字,像public、static、final。它是大小寫敏感的,你不能將null寫成Null或NULL,編譯器將不能識別它們然後報錯。

Object obj = NULL; // Not OkObject obj1 = null  //Ok

使用其他語言的程式員可能會有這個問題,但是現在IDE的使用已經使得這個問題變得微不足道。現在,當你敲代碼的時候,IDE像Eclipse、Netbeans可以糾正這個錯誤。但是使用其他工具像notepad、Vim、Emacs,這個問題卻會浪費你寶貴時間的。

2)就像每種原始類型都有預設值一樣,如int預設值為0,boolean的預設值為false,null是任何參考型別的預設值,不嚴格的說是所有object類型的預設值。就像你建立了一個布爾類型的變數,它將false作為自己的預設值,Java中的任何引用變數都將null作為預設值。這對所有變數都是適用的,如成員變數、局部變數、執行個體變數、靜態變數(但當你使用一個沒有初始化的局部變數,編譯器會警告你)。為了證明這個事實,你可以通過建立一個變數然後列印它的值來觀察這個引用變數,如代碼所示:

private static Object myObj;public static void main(String args[]){    System.out.println("What is value of myObjc : " + myObj);}What is value of myObjc : null

這對靜態和非靜態object來說都是正確的。就像你在這裡看到的這樣,我將myObj定義為靜態引用,所以我可以在主方法裡直接使用它。注意主方法是靜態方法,不可使用非靜態變數。

 轉自:http://www.importnew.com/14229.html

java中的資料類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.