一、Python的变量类型

Python语言支持多种类型,最简单的包括数字类型、字符串类型,略微复杂的包括元组类型、 集合类型、列表类型、字典类型等。

1、数字类型

Python 提供了 3 种数据类型:

① 整数:一个整数值可以表示为十进制十六进制八进制二进制等不同进制形式


python byte 为 负数怎么办 python byte类型_java byte 十六进制


输出:1010 1010 1010 1010

② 浮点数:可以表示为带有小数点的一般形式,也可以采用科学计数法表示


python byte 为 负数怎么办 python byte类型_python byte 为 负数怎么办_02


③ 复数:复数类型与数学中的复数相一致,采用 a+bj 的形式 表示,存在实部 a 虚部 b

当 b = 1 时,不能省略。


python byte 为 负数怎么办 python byte类型_java 进制转换_03


输出结果:5.0

2、字符串类型

Python语言中,字符串是用两个双引号“ ”或者单引号‘ ’括起来的一个或多个字符;


python byte 为 负数怎么办 python byte类型_python byte 为 负数怎么办_04


如果字符串长度为L,正向递增需要以最左侧字符序号为0,向右依次递增,最右侧字符序号为L-1; 反向递减序号以最右侧字符序号为-1,向左依次递减,最左侧字符序号为-L。


python byte 为 负数怎么办 python byte类型_java byte 十六进制_05


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 byte 为 负数怎么办 python byte类型_python byte 为 负数怎么办_06


探究下不同数据类型取值范围是怎么来的?

我们以 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 byte 为 负数怎么办 python byte类型_java byte 十六进制_07


② 单精度和双精度

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 byte 为 负数怎么办 python byte类型_python byte 为 负数怎么办_08


在 Java 中,对 char 类型字符运行时,直接当做 ASCII 表对应的整数来对待。


python byte 为 负数怎么办 python byte类型_java 进制转换_09


输出结果:


python byte 为 负数怎么办 python byte类型_java 进制转换_10


④ 布尔类型

只有两个字面值:true 或者 false

6、数据类型转换

数据类型的转换是在所赋值的数值类型和被变量接收的数据类型不一致时发生的,它需要从一种数据类型转换成另一种数据类型。

① 隐式转换

I、定义:

在运算过程中,由于不同的数据类型会转换成同一种数据类型,所以整型、浮点型以及字符型都可以参与混合运算。自动转换的规则是从低级类型数据转换成高级类型数据。

II、转换规则:

数值型数据的转换:byte→short→int→long→float→double。

字符型转换为整型:char→int。

III、转换条件:

a.两种数据类型彼此兼容

b.目标类型的取值范围大于源数据类型(低级类型数据转换成高级类型数据)

② 显示转换(强制类型转换)

从存储范围大的类型到存储范围小的类型

注意:强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。


python byte 为 负数怎么办 python byte类型_python byte 为 负数怎么办_11



>>>Python 和 Java 基础对比 04——变量(下)