1、JAVA基本数据类型取值范围
JAVA的数据类型分为两大种:基本数据类型(值类型)和包装类型(引用数据类型)。基本数据类型不是对象,不能调用toString、hashCode、getClass、equals等方法。byte、short、int、long、float、double、char、boolean
Byte、Short、Integer、Long、Float、Double、Char、Boolean
整型:
byte Byte [-2^7~2^7-1] 1个字节 8位35B
short Short [-2^15~2^15-1] 2个字节 16位35S
int Integer [-2^31~2^31-1] 4个字节 32位35
long Long [-2^63~2^63-1] 8个字节 64位35L
浮点型:
float Float [1.401298e-45~3.402823e+38] 4个字节
double Double [4.9000000e-324~1.797693e+308] 8个字节
float占用4个字节,和int是一样,也就是32bit。
2、PYTHON基本数据类型
PYTHON有五类基本内置类型:数值(bool、int、long、float、complex),字符串(str),元组(tuple),列表(list),字典(dict)。这里主要记录下五个数值类型,这些类型是不可变的,就是说整数对象一旦创建,其值便不可更改。相反,系统将创建新的简单类型对象并将其赋值给变量。通过 Python id 函数,可以查看基本 PyObject 标识的变更方式。
>>> i = 100
>>> id(i)
8403284
>>> i = 101
>>> id(i)
8403296
此方法看似容易丢失对象,会导致内存泄漏。但是,Python 像 C# 和 Java 一样,
使用了垃圾回收功能,以释放用于保存不再引用的对象的内存,如上例中用于保存 100 的整数对象。
>>> b = True
>>> type(b)
>>> id(b)
1041552
因为只有两个可能值,所以布尔类型是惟一的。Python 解释器提供这仅有的(也是必需的)两个 bool 对象:True 和 False。
在任何时候,在 Python 程序需要这些对象时,变量只能相应地引用其中一个值。清单 5 显示 bb 变量如何具有同一个 id,不管您直接赋予它 b 变量的值还是直接赋予它 True 对象。
>>> b = True
>>> id(b)
1041552
>>> bb = b
>>> id(bb)
1041552
>>> bb = True
>>> id(bb)
1041552
很多程序利用布尔表达式,Python 提供一整套布尔比较和逻辑运算,详细信息请分别参见表 1 和表 2。
表 1:
运算符 描述 示例
< 小于 i < 100
<= 小于等于 i <= 100
> 大于 i > 100
>= 大于等于 i >= 100
== 相等 i == 100
!= 不相等(另外使用 <>) i != 100
补充一点,
表 1 中列出的运算符优先级都一样,除非将表达式置于括号中,否则按从左到右的顺序应用。
表 2:
运算符 描述 示例
not 逻辑非 not b
and 逻辑与 (i <= 100) and (b == True)
or 逻辑或 (i < 100) or (f > 100.1)
逻辑运算符的优先级低于单独的比较运算符,这一点意义重大,因为必须先计算比较运算符,然后才能计算逻辑运算符。逻辑运算符的实际优先级就是表 2 中罗列这些运算符的顺序。
表 3:
运算符 描述 示例
* 乘 i * 100
/ 除 i / 100
// 整除 i // 100
% 取余 i % 100
+ 加 i + 100
- 减 i - 100
乘法和除法运算符(表 3 中列出的前四个)具有高于加法和减法的优先级。如前所述,您可以通过使用括号分组子表达式,将其分离出来以提高优先级。
>>> print 127 # Using decimal literal
127
>>> print 0177 # Using octal literal
127
>>> print 0x7F # Using hexadecimal literal
127
当您具有容易的方式来表达数值常量时,尤其是十六进制,就可以容易地构建对应于特定测试用例的标志,这是一种常见的编程技术。例如,一个 32 位的整数可以存储 32 个标志值。使用位测试,可以容易地测试标志变量上的特定标志。Python 中位运算的完整列表如表 4 所示。
表 4:
运算符 描述 示例
~ 按位求补 ~b
<< 向左位移 b << 1
>> 向右位移 b >> 1
& 按位和 b & 0x01
^ 按位异或 b ^ 0x01
| 按位或 b | 0x01
至此,您可能想知道不同数值类型在单个表达式中混合出现的时候怎么办。简单的答复是,Python 会根据需要将表达式中的所有操作数转换为最复杂的操作数的类型。复杂度的顺序是:int、long、float 和 complex(复数),下面是一个简单的示例:
>>> 1 / 3
0
>>> 1.0 / 3
0.33333333333333331
>>> 1.0 // 3
0.0
>>> 1 % 3
1
>>> 1.0 % 3
1.0
尽管 Python 会与您预期的一样转换操作数,但是语言并不基于运算符转换操作数,如 1/3 示例中所示,其计算结果为整数。如果要强制取得浮点结果,则必须确保操作数中至少有一个为浮点类型。
>>> c = 3.0 + 1.2j
>>> print c
(3+1.2j)
>>> print c.real, c.imag
3.0 1.2
本例是一个实部为 3.0 和虚部为 1.2 的复数。注意,通过使用复杂对象的 real 和 imag 属性,即可访问复数的不同部分。
>>> b = bool(True)
>>> i = int(100)
>>> l = long(100)
>>> f = float(100.1)
>>> c = complex(3.0, 1.2)
>>> print b, i, l, f, c
3、C++基本数据类型取值范围
数据类型关键字 字节数 数值范围
char 1 -2^7~2^7-1
unsigned char 1 0~2^8-1
short 2 -2^15~2^15-1
unsigned short 2 0~2^16-1
long 4 -2^31~2^31-1
unsigned long 4 0~2^32-1
int 4 同long
unsigned int 4 同unsigned long
float 4 1.2E-38~3.4E381
double 8 2.2E-308~1.8E3082
bool 1 true或false