java语言中的数据是如何定义_java中的数据类型
java中的數據類型
java語言的數據類型包括兩種,基本數據類型和引用數據類型。
定義
基本數據類型:變量名指向具體的數值。
引用數據類型:變量名指向存數據對象的內存地址,即變量名指向hash值。
基本數據類型:整數類型(byte,short,int,long);浮點類型(float,double);字符型(char);布爾型(boolean)。
引用數據類型:類(class),接口(interface),數組([])。引用數據類型的類都是Object類的子類。
內存分配
基本數據類型:在被創建時,在棧上給其劃分一塊內存,將數值直接存儲在棧上。
引用數據類型:在被創建時,首先要在棧上給其引用(句柄)分配一塊內存,而對象的具體信息都存儲在堆內存上,然后由棧上面的引用指向堆中對象的地址。
例如,有一個類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設計初衷是為了表示一些缺失的東西,例如缺失的用戶、資源或其他東西。但是,一年后,令人頭疼的空指針異常給Java程序員帶來不少的騷擾。在這份材料中,我們將學習到Java中null關鍵字的基本細節,并且探索一些技術來盡可能的減少null的檢查以及如何避免惡心的空指針異常。
1)首先,null是Java中的關鍵字,像public、static、final。它是大小寫敏感的,你不能將null寫成Null或NULL,編譯器將不能識別它們然后報錯。
Object obj = NULL; //Not Ok
Object obj1 = null //Ok
使用其他語言的程序員可能會有這個問題,但是現在IDE的使用已經使得這個問題變得微不足道。現在,當你敲代碼的時候,IDE像Eclipse、Netbeans可以糾正這個錯誤。但是使用其他工具像notepad、Vim、Emacs,這個問題卻會浪費你寶貴時間的。
2)就像每種原始類型都有默認值一樣,如int默認值為0,boolean的默認值為false,null是任何引用類型的默認值,不嚴格的說是所有object類型的默認值。就像你創建了一個布爾類型的變量,它將false作為自己的默認值,Java中的任何引用變量都將null作為默認值。這對所有變量都是適用的,如成員變量、局部變量、實例變量、靜態變量(但當你使用一個沒有初始化的局部變量,編譯器會警告你)。為了證明這個事實,你可以通過創建一個變量然后打印它的值來觀察這個引用變量,如下圖代碼所示:
private staticObject myObj;public static voidmain(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语言中的数据是如何定义_java中的数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中apache安装与配置_Apa
- 下一篇: java登录中用户类型分类_基于用户登陆