javase-----(1)數據類型

數據類型

【一】簡介

變量就是申請內存來存儲值。也就是說,當創建變量的時候,需要在內存中申請空間。
內存管理系統根據變量的類型爲變量分配存儲空間,分配的空間只能用來儲存該類型數據

Java 的兩大數據類型:
1、內置數據類型
2、引用數據類型

在這裏插入圖片描述

【二】java的8大基本數據類型

基本數據類型是CPU可以直接進行運算的類型。Java定義了以下幾種基本數據類型:

1、整數類型:byte,short,int,long
2、浮點數類型:float,double
3、字符類型:char
4、布爾類型:boolean

計算機內存的最小存儲單元是字節(byte),一個字節就是一個8位二進制數,即8個bit。它的二進制表示範圍從0000000011111111,換算成十進制是0255
在這裏插入圖片描述
在這裏插入圖片描述
ps:基本數據類型一般是在java虛擬機棧上進行分配的內存,一般是對應程序中的局部變量


【三】java的引用數據類型

  • 在Java中,引用類型的變量非常類似於C/C++的指針。引用類型指向一個對象,指向對象的變量是引用變量。這些變量在聲明時被指定爲一個特定的類型,比如 Employee、Puppy 等。變量一旦聲明後,類型就不能被改變了。
  • 對象、數組都是引用數據類型
  • 所有引用類型的默認值都是null

ps:對於引用變量一般是在java堆中進行分配的內存


【四】java常量

常量在程序運行時是不能被修改的。
在 Java 中使用 final 關鍵字來修飾常量,聲明方式和變量類似。

final double PI = 3.1415927;

ps:常量是分配在java方法區中的常量池中,是不允許進行修改值的

【五】類型轉換

  • 整型、實型(常量)、字符型數據可以混合運算。運算中,不同類型的數據先轉化爲同一類型,然後進行運算

  • 轉換從低級到高級
    在這裏插入圖片描述

1. 不能對boolean類型進行類型轉換。

2. 不能把對象類型轉換成不相關類的對象。

3. 在把容量大的類型轉換爲容量小的類型時必須使用強制類型轉換。

4. 轉換過程中可能導致溢出或損失精度

5. 浮點數到整數的轉換是通過捨棄小數得到,而不是四捨五入

自動類型轉換

滿足低位向高位轉換,比如:

byte b = 1;
int a = b;

對於低位是可以自動進行轉換爲高位

強制類型轉換

1、 條件是轉換的數據類型必須是兼容的
2、 高位轉低位

比如:

int a = 1;
byte b = (byte)a;

ps:在我們平時代碼的過程中,默認整數是int,浮點double

使用long的時候需要在後面加L
使用float的時候需要在後面加F


【六】面試題

  • 1.1 short s1 = 1; s1 = s1 + 1;有什麼錯?

答:在s1+1運算時會自動提升表達式的類型爲int,那麼將int賦予給short類型的變量s1會出現類型轉換錯誤。

  • 1.2 char類型變量能不能儲存一箇中文的漢子,爲什麼?

答:char類型變量是用來儲存Unicode編碼的字符的,unicode字符集包含了漢字,所以char類型當然可以存儲漢字的,還有一種特殊情況就是某個生僻字沒有包含在

  • 1.3 Integer和int的區別

答:int是java的8種內置的原始數據類型。Java爲每個原始類型都提供了一個封裝類,Integer就是int的封裝類,int變量的默認值爲0,Integer變量的默認值爲null

  • 1.4 能否在不進行強制轉換的情況下將一個 double 值賦值給 long 類型的變量?

答:不行,我們不能在沒有強制類型轉換的前提下將一個 double 值賦值給 long 類型的變量,因爲 double 類型的範圍比 long 類型更廣,所以必須要進行強制轉換。

  • 1.5 java 中 3*0.1 == 0.3 將會返回什麼?true 還是 false?

答:false,因爲浮點數不能完全精確的表示出來,一般都會損失精度

  • 1.6 java 中 float f = 3.4; 是否正確?

答:不正確,3.4 是雙精度數,將雙精度型(double)賦值給浮點型(float)屬於向下轉型(down-casting,也稱爲窄化)會造成精度損失,因此需要強制類型轉換 float f = (float)3.4; 或者寫成 float f = 3.4F; 纔可以。


【七】鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章