Python 和 Java 基礎對比 04——變量(下)

Python 和 Java 基礎對比 04——變量(下)

Python 和 Java 基礎對比 04——變量(下)


一、Python的變量類型

Python語言支持多種類型,最簡單的包括數字類型、字符串類型,略微複雜的包括元組類型、 集合類型、列表類型、字典類型等。

1、數字類型

Python 提供了 3 種數據類型:

① 整數:一個整數值可以表示為十進制十六進制八進制二進制等不同進制形式

Python 和 Java 基礎對比 04——變量(下)


輸出:1010 1010 1010 1010


② 浮點數:可以表示為帶有小數點的一般形式,也可以採用科學計數法表示

Python 和 Java 基礎對比 04——變量(下)

③ 複數:複數類型與數學中的複數相一致,採用

a+bj 的形式 表示,存在實部 a 虛部 b

當 b = 1 時,不能省略。

Python 和 Java 基礎對比 04——變量(下)

輸出結果:5.0

2、字符串類型

Python語言中,字符串是用兩個雙引號“ ”或者單引號‘ ’括起來的一個或多個字符;

Python 和 Java 基礎對比 04——變量(下)

如果字符串長度為L,正向遞增需要以最左側字符序號為0,向右依次遞增,最右側字符序號為L-1; 反向遞減序號以最右側字符序號為-1,向左依次遞減,最左側字符序號為-L。

Python 和 Java 基礎對比 04——變量(下)

3、元組類型

4、集合類型

5、列表類型

6、字典類型

後續講到類時再細說,前期知道基本概念即可。

二、Java變量的數據類型

上篇中我們知道,Java 是強類型語言,變量由數據類型、名稱和字面值【數據】組成。

1、數據類型

Java語言是強類型語言,對於每一種數據都定義了明確的具體的數據類型,在內存中分配了不同大小的內存空間。

2、分類

I、基本數據類型變量(剛接觸Java,以這塊為主,“四類八種”)


① 數值型:整數類型(byte、short、int、long)

② 浮點類型(float、double)

③ 字符型:char

④ 布爾型:boolean

II、引用數據類型變量(現階段可忽略,等到 class 時再詳細說明)

① 類(class)

② 接口(interface)

③ 數組([])

④ 枚舉

⑤ null 類型

3、計算機存儲單元

在計算機中最小的信息單位是bit,也就是一個二進制位,8個bit組成一個Byte,也就是字節。一個存儲單元可以存儲一個字節,也就是8個二進制位。計算機的存儲器容量是以字節為最小單位來計算的。

4、Java 數據類型圖

Python 和 Java 基礎對比 04——變量(下)

探究下不同數據類型取值範圍是怎麼來的?

我們以 int 為例:

int 佔 4 個字節,也就是 4 * 8 = 32 位

因數字涉及到正負,符號需要佔一位

相當於有 32 個座位, 每個座位可以放 1 或者 0 的數字,總共的數字有 2^31 個。

這裡涉及到補碼問題,我們簡化下,正數最大:01111111111111111111111111111111,不需要反碼,轉換為 10 進制就是 2147483647,即 2 ^31 -1

從 0 到 2 ^31 -1 有 2^31個

從 - 1 到 - 2^31 總共 2 ^31 個

相加就是 2^31 個數字,所以 int 的取值範圍是 -2^31 ~2^31-1


5、數據類型說明

① 長整型 long

網上有一種說法:定義長整型數據時,必須加後綴 l 或 L 。(注意:最好用大寫 L,避免和數字1混淆)

為什麼會有這一種規定呢?

從下圖中可以看出,我們定義 long 型的變量時,如果字面值大於一個界限值時,編譯會報錯。為什麼這樣呢?

在內存中,long 類型變量存在於棧中,指向存放數值的堆中。默認情況,如果後綴不加 l 或者 L,是 int 類型,

在一定的數值界限,int 會自動轉為 long,不報錯。

>>>詳情可以看 Java 的內存模型(面試的小夥伴一定遇到過)

Python 和 Java 基礎對比 04——變量(下)

② 單精度和雙精度

float 是單精度

double 是雙精度

浮點數不加 F,默認是 double 類型。

如果你定義的是float,字面值必須加 f 或者 F

這裡主要說下有效位數:

float 6位 //小數點後 6 位都是準確的,而第 7 位就不一定
double 15位 //小數點後 15 位都是準確的,而第 7 位就不一定

③ char 類型

注意:單引號

char 賦值 :

char a='J'; //任意單個字符,加單引號。

char a='學'; //任意單箇中文字,加單引號。

char a=89; //整數。0~65535。十進制、八進制、十六進制均可。輸出字符編碼表中對應的字符。

char 類型是可以運算的,因為 char 在 ASCII 等字符編碼表中,有對應的數值。

Python 和 Java 基礎對比 04——變量(下)

在 Java 中,對 char 類型字符運行時,直接當做 ASCII 表對應的整數來對待。

Python 和 Java 基礎對比 04——變量(下)

輸出結果:

Python 和 Java 基礎對比 04——變量(下)

④ 布爾類型

只有兩個字面值:true 或者 false

6、數據類型轉換

數據類型的轉換是在所賦值的數值類型和被變量接收的數據類型不一致時發生的,它需要從一種數據類型轉換成另一種數據類型。


① 隱式轉換

I、定義:

在運算過程中,由於不同的數據類型會轉換成同一種數據類型,所以整型、浮點型以及字符型都可以參與混合運算。自動轉換的規則是從低級類型數據轉換成高級類型數據。

II、轉換規則:

數值型數據的轉換:byte→short→int→long→float→double。

字符型轉換為整型:char→int。

III、轉換條件:

a.兩種數據類型彼此兼容

b.目標類型的取值範圍大於源數據類型(低級類型數據轉換成高級類型數據)


② 顯示轉換(強制類型轉換)

從存儲範圍大的類型到存儲範圍小的類型

注意:強制類型轉換通常都會存儲精度的損失,所以使用時需要謹慎。

Python 和 Java 基礎對比 04——變量(下)


>>>


分享到:


相關文章: