91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中的數據類型有哪幾種

發布時間:2021-07-23 16:11:36 來源:億速云 閱讀:177 作者:chen 欄目:編程語言

這篇文章主要講解了“Java中的數據類型有哪幾種”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java中的數據類型有哪幾種”吧!

Java 中的數據類型可分為 2 種:

1)基本數據類型。

基本數據類型是 Java 語言操作數據的基礎,包括 boolean、char、byte、short、int、long、float 和 double,共 8  種。

2)引用數據類型。

除了基本數據類型以外的類型,都是所謂的引用類型。常見的有數組(對,沒錯,數組是引用類型)、class(也就是類),以及接口(指向的是實現接口的類的對象)。

來個思維導圖,感受下。

Java中的數據類型有哪幾種

通過上一節的學習,我們知道變量可以分為局部變量、成員變量、靜態變量。

當變量是局部變量的時候,必須得先初始化,否則編譯器不允許你使用它。拿 int 來舉例吧,看下圖。

Java中的數據類型有哪幾種

當變量是成員變量或者靜態變量時,可以不進行初始化,它們會有一個默認值,仍然以 int 為例,來看代碼:

/**  * @author 微信搜「沉默王二」,回復關鍵字 PDF  */ public class LocalVar {     private int a;     static int b;      public static void main(String[] args) {         LocalVar lv = new LocalVar();         System.out.println(lv.a);         System.out.println(b);     } }

來看輸出結果:

0 0

瞧見沒,int 作為成員變量時或者靜態變量時的默認值是 0。那不同的基本數據類型,是有不同的默認值和大小的,來個表格感受下。

數據類型默認值大小
booleanfalse1比特
char'\u0000'2字節
byte01字節
short02字節
int04字節
long0L8字節
float0.0f4字節
double0.08字節

“比特和字節是什么鬼?”

比特幣聽說過吧?字節跳動聽說過吧?這些名字當然不是亂起的,確實和比特、字節有關系。

1)bit(比特)

比特作為信息技術的最基本存儲單位,非常小,但大名鼎鼎的比特幣就是以此命名的,它的簡寫為小寫字母“b”。

大家都知道,計算機是以二進制存儲數據的,二進制的一位,就是 1 比特,也就是說,比特要么為 0 要么為 1。

2)Byte(字節)

通常來說,一個英文字符是一個字節,一個中文字符是兩個字節。字節與比特的換算關系是:1 字節 = 8 比特。

在往上的單位就是 KB,并不是 1000 字節,因為計算機只認識二進制,因此是 2 的 10 次方,也就是 1024 個字節。

(終于知道 1024 和程序員的關系了吧?狗頭保命)

Java中的數據類型有哪幾種

接下來,我們再來詳細地了解一下 8 種基本數據類型。

01、布爾

布爾(boolean)僅用于存儲兩個值:true 和 false,也就是真和假,通常用于條件的判斷。代碼示例:

boolean flag = true;

02、byte

byte 的取值范圍在 -128 和 127 之間,包含 127。最小值為 -128,最大值為 127,默認值為 0。

在網絡傳輸的過程中,為了節省空間,常用字節來作為數據的傳輸方式。代碼示例:

byte a = 10; byte b = -10;

03、short

short 的取值范圍在 -32,768 和 32,767 之間,包含 32,767。最小值為 -32,768,最大值為 32,767,默認值為  0。代碼示例:

short s = 10000; short r = -5000;

04、int

int 的取值范圍在 -2,147,483,648(-2 ^ 31)和 2,147,483,647(2 ^ 31 -1)(含)之間,默認值為  0。如果沒有特殊需求,整形數據就用 int。代碼示例:

int a = 100000; int b = -200000;

05、long

long 的取值范圍在 -9,223,372,036,854,775,808(-2^63) 和  9,223,372,036,854,775,807(2^63 -1)(含)之間,默認值為 0。如果 int 存儲不下,就用 long,整形數據就用  int。代碼示例:

long a = 100000L;  long b = -200000L;

為了和 int 作區分,long 型變量在聲明的時候,末尾要帶上大寫的“L”。不用小寫的“l”,是因為小寫的“l”容易和數字“1”混淆。

06、float

float 是單精度的浮點數,遵循 IEEE 754(二進制浮點數算術標準),取值范圍是無限的,默認值為 0.0f。float  不適合用于精確的數值,比如說貨幣。代碼示例:

float f1 = 234.5f;

為了和 double 作區分,float 型變量在聲明的時候,末尾要帶上小寫的“f”。不需要使用大寫的“F”,是因為小寫的“f”很容易辨別。

07、double

double 是雙精度的浮點數,遵循 IEEE 754(二進制浮點數算術標準),取值范圍也是無限的,默認值為 0.0。double  同樣不適合用于精確的數值,比如說貨幣。代碼示例:

double d1 = 12.3

那精確的數值用什么表示呢?最好使用 BigDecimal,它可以表示一個任意大小且精度完全準確的浮點數。針對貨幣類型的數值,也可以先乘以 100  轉成整形進行處理。

Tips:單精度是這樣的格式,1 位符號,8 位指數,23 位小數,有效位數為 7 位。

Java中的數據類型有哪幾種

雙精度是這樣的格式,1 位符號,11 位指數,52 為小數,有效位數為 16 位。

Java中的數據類型有哪幾種

取值范圍取決于指數位,計算精度取決于小數位(尾數)。小數位越多,則能表示的數越大,那么計算精度則越高。

一個數由若干位數字組成,其中影響測量精度的數字稱作有效數字,也稱有效數位。有效數字指科學計算中用以表示一個浮點數精度的那些數字。一般地,指一個用小數形式表示的浮點數中,從第一個非零的數字算起的所有數字。如  1.24 和 0.00124 的有效數字都有 3 位。

08、char

char 可以表示一個 16 位的 Unicode 字符,其值范圍在 '\u0000'(0)和  '\uffff'(65,535)(包含)之間。代碼示例:

char letterA = 'A'; // 用英文的單引號包裹住。

“char 既然只有一個字符,為什么占 2 個字節呢?”

“主要是因為 Java 使用的是 Unicode 字符集而不是 ASCII 字符集。”

這又是為什么呢?我們留到下一節再講。

基本數據類型在作為成員變量和靜態變量的時候有默認值,引用數據類型也有的。

String 是最典型的引用數據類型,所以我們就拿 String 類舉例,看下面這段代碼:

/**  * @author 微信搜「沉默王二」,回復關鍵字 PDF  */ public class LocalRef {     private String a;     static String b;      public static void main(String[] args) {         LocalRef lv = new LocalRef();         System.out.println(lv.a);         System.out.println(b);     } }

輸出結果如下所示:

null null

null 在 Java 中是一個很神奇的存在,在你以后的程序生涯中,見它的次數不會少,尤其是伴隨著令人煩惱的“空指針異常”,也就是所謂的  NullPointerException。

也就是說,引用數據類型的默認值為 null,包括數組和接口。

為什么數組和接口也是引用數據類型啊?

先來看數組:

/**  * @author 微信搜「沉默王二」,回復關鍵字 java  */ public class ArrayDemo {     public static void main(String[] args) {         int [] arrays = {1,2,3};         System.out.println(arrays);     } }

arrays 是一個 int 類型的數組,對吧?打印結果如下所示:

[I@2d209079

[I 表示數組是 int 類型的,@ 后面是十六進制的 hashCode——這樣的打印結果太“人性化”了,一般人表示看不懂!為什么會這樣顯示呢?查看一下  java.lang.Object 類的toString() 方法就明白了。

Java中的數據類型有哪幾種

數組雖然沒有顯式定義成一個類,但它的確是一個對象,繼承了祖先類 Object 的所有方法。那為什么數組不單獨定義一個類來表示呢?就像字符串 String  類那樣呢?

一個合理的解釋是 Java 將其隱藏了。假如真的存在一個 Array.java,我們也可以假想它真實的樣子,它必須要定義一個容器來存放數組的元素,就像  String 類那樣。

public final class String     implements java.io.Serializable, Comparable<String>, CharSequence {     /** The value is used for character storage. */     private final char value[]; }

數組內部定義數組?沒必要的!

再來看接口:

/**  * @author 微信搜「沉默王二」,回復關鍵字 Java  */ public class IntefaceDemo {     public static void main(String[] args) {         List<String> list = new ArrayList<>();         System.out.println(list);     } }

List 是一個非常典型的接口:

public interface List<E> extends Collection<E> {}

而 ArrayList 是 List 接口的一個實現:

public class ArrayList<E> extends AbstractList<E>         implements List<E>, RandomAccess, Cloneable, java.io.Serializable {}

對于接口類型的引用變量來說,你沒法直接 new 一個:

Java中的數據類型有哪幾種

只能 new 一個實現它的類的對象&mdash;&mdash;那自然接口也是引用數據類型了。

來看一下基本數據類型和引用數據類型之間最大的差別。

基本數據類型:

1、變量名指向具體的數值。2、基本數據類型存儲在棧上。

引用數據類型:

1、變量名指向的是存儲對象的內存地址,在棧上。2、內存地址指向的對象存儲在堆上。

“堆是什么,棧又是什么?”

堆是堆(heap),棧是棧(stack),如果看到“堆棧”的話,請不要懷疑自己,那是翻譯的錯,堆棧也是棧,反正我很不喜歡“堆棧”這種叫法,容易讓新人掉坑里。

堆是在程序運行時在內存中申請的空間(可理解為動態的過程);切記,不是在編譯時;因此,Java 中的對象就放在這里,這樣做的好處就是:

當需要一個對象時,只需要通過 new 關鍵字寫一行代碼即可,當執行這行代碼時,會自動在內存的“堆”區分配空間&mdash;&mdash;這樣就很靈活。

棧,能夠和處理器(CPU,也就是腦子)直接關聯,因此訪問速度更快。既然訪問速度快,要好好利用啊!Java  就把對象的引用放在棧里。為什么呢?因為引用的使用頻率高嗎?

不是的,因為 Java  在編譯程序時,必須明確的知道存儲在棧里的東西的生命周期,否則就沒法釋放舊的內存來開辟新的內存空間存放引用&mdash;&mdash;空間就那么大,前浪要把后浪拍死在沙灘上啊。

感謝各位的閱讀,以上就是“Java中的數據類型有哪幾種”的內容了,經過本文的學習后,相信大家對Java中的數據類型有哪幾種這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西和县| 榕江县| 利津县| 文成县| 都昌县| 石狮市| 深州市| 和静县| 宝应县| 宝坻区| 西平县| 瓦房店市| 娄底市| 平凉市| 庆安县| 宜昌市| 绥德县| 万荣县| 永修县| 蕲春县| 达日县| 柞水县| 鹤庆县| 海原县| 峨眉山市| 泾川县| 胶南市| 九江市| 平遥县| 子长县| 北流市| 灯塔市| 葵青区| 寻乌县| 云南省| 固安县| 弥勒县| 肃宁县| 汝阳县| 福贡县| 东城区|