【java基础】数据类型是啥?有啥用?
一說到數據類型,我們就會想到int,char,double等,那今天我們就詳細總結一下它們的適用范圍和使用。本文的思維架構:
| 變量 |
(1)what?-概念和分類
概念:變量相當于一個有名字的容器,里面裝的是各種不同類型的數據。
分類:
(1)根據其引用的數據類型的不同,分為基礎類型變量和引用類型的變量。關于兩者的區別和內存分析,在本文的后面會提到。
(2)根據變量的作用范圍不同,分為成員變量和局部變量。兩者的區別是:成員變量是在類范圍內定義的變量,作用范圍是類內部;局部變量是在一個方法內定義的變量,作用范圍是方法內部。
(2)why?-為什么要用變量
個人理解,變量就相當于在內存中“占地為王”,畫一塊區域,就代表了變量a。以后程序要是想對變量a賦值,則把數據放到此區域里。如果想讀取變量a的值,就訪問此內存區域即可。可見,編程就是對內存中的數據進行訪問和修改的過程。
不同的是,各變量所在的內存是不一樣的。如果是局部變量,其是在棧上分配內存的。解釋一下原因,棧是線程私有的,其里面的方法隨著調用結束而消亡,則在方法內定義的局部變量也會隨著消亡。
而成員變量是在堆內分配內存的。堆是線程公有的,不會隨著某個方法的消亡而消亡。
(3)how?-怎么用
變量的定義語法:
變量類型 變量名 [=初始值]舉例:
int a=0;此時的int就是變量類型,也就是今天要重點講的數據類型。數據類型分為基本類型和引用類型兩種。
| 基本類型 |
基本類型分為4類8種,其中有幾個重要的,已用紅色標出,其內存大小也已列出。
(1)int
如果我們要定義一個整數類型的變量,可以用byte、short、int、long來修飾,不過用的最多的是int。比如 int a=1。
值得注意的是,如果想定義一個long類型的變量,需要在數字后面加上“l”或“L”。就像以下的代碼是錯誤的:
應該寫成:
long a=9999999999999L(2)char
//定義一個字符值 char a='美'既然提到字符值,那就順便說一下怎么定義一個字符串:
//定義一個字符串 String b="滄海月明珠有淚,藍田日暖玉生煙。"可見,定義字符值需要用單引號,定義字符串需要用雙引號。
(3)double
說完整數,我們來說說小數。float和double可用于表示小數,double比float更精確一點,如果還需要更精確,可以使用BigDecimal類。這個類會在后續的常用類中講到。
//定義double類型的變量 double a=3.14//為了便于數位數,可以借助于下劃線。整數和浮點數均可以這樣寫 double a=3.141_592_6(3)boolean
boolean類型就是我們所說的“真假”。“這個顏色是不是紅色”,只有真、假兩種可能。
//定義a的值為true boolean a=true;| 引用類型 |
引用類型包括類,接口,數組等。之所以叫做引用類型,是因為訪問其值時,需要借助“指針”。
(1)引用類型和基本類型的內存分析對比
在上圖中,橘色部分為基本類型變量,其余部分為引用類型變量。可以看出,如果想訪問基本類型變量的值,直接訪問棧中內存即可。如果要訪問引用變量的屬性值,還需根據地址去堆中尋找。
(2)String
之所以將String拿出來講,是因為人們易把String當成基本類型,這是錯誤的。String屬于常用類,類是屬于引用類型的,所以String屬于引用類型。
在本文的前面部分,我們已經說過了String類的定義:
除此之外,如果是想將基本類型變為字符串,直接和“”進行連接運算即可。
String a=5+“”;| 類型轉換 |
類型轉換就是修改變量的數據類型。有自動類型轉換和強制類型轉換兩種。
(1)自動類型轉換(小到大)
還以“變量圖”為例,如果將小杯子的水倒入到大杯子里,是能盛下的,如果相反,則水會溢出來。同理,如果是將所占內存小的類型轉換為所占內存大的類型,則可以自動轉換過去。
(2)強制類型轉換(大到小)
就像水會溢出來丟失一樣,如果進行強制類型轉換,數據的精度也有可能丟失。比如將一個double類型的數據轉為int類型,則小數部分會丟失。下面的代碼b的值為3。
//將一個double類型的轉換為int類型 double a=3.14; int b=(int)a;| 包裝類型 |
(1)what?
包裝類就是將8個基本類型的值包裝成對象使用。除了int和char,其余的都是將其首字母大寫即可。
| int | Integer |
| char | Character |
| double | Double |
| …… | …… |
(2)why?
將基本類型“包裝起來”,使它變成了對象,也就有了屬性和方法,就可以對其進行更多的操作。
(3)how?
在JDK1.5之后,就可以進行自動拆裝箱操作了。所謂自動裝箱,就是把一個基本類型變量直接賦值給對應的包裝類變量。
//裝箱,int變為Integer Integer a=5;拆箱則相反:
//拆箱,將Integer變為int類型 int b=a;| 小結 |
本文細致講解了變量的概念,基本類型的使用,基本類型和引用類型的內存分析對比,自動類型轉換和強制類型轉換,自動拆裝箱等。
總結
以上是生活随笔為你收集整理的【java基础】数据类型是啥?有啥用?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金丝桃
- 下一篇: 杰理AC692X---红外按键介绍