您的位置:首页 > 编程语言 > Java开发

Java基本数据类型和操作符

2013-12-18 17:35 134 查看

1.Java基本数据类型:

1.1 Java 基本数据类型



1.2 计算机中的数值表示方式

原码:一种计算机中对数字的二进制定点表示方法,最高位1代表负数,0代表正数

反码:正数的反码和原码相同。负数符号位不变,其它位按位取反

补码:正数的补码和原码相同。负数符号位不变,其它位按位取反后加1。

补码的整数范围 (– 2n ~2n – 1),n为数值位的长度

移码:补码符号位取反

非标准移码(浮点数阶码):移码减1

例如:

2 = 0000 0010原= 0000 0010反 = 0000 0010补 =1000 0010移 = 1000 0001非标准移码

-2 = 1000 0010原 =1111 1101反 = 1111 1110补= 0111 1110移= 0111 1101非标准移码

2.Java 浮点数介绍

2.1 IEEE 754标准

该标准规定基数为2,符号位S正数为0,负数为1,阶码E用移码(非标准移码,标准移码与补码的符号位相反,而非标准移码需要再减1)表示,尾数M用原码表示。根据二进制的规格化方法,数值的最高位总为1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的多一位。

IEEE 754 有三种形式的浮点数:单浮点数,双浮点数,临时浮点数

2.2 java浮点数示例

java有单精度浮点数float(32位)和双精度浮点数double(64位)

二进制到浮点数:

单精度时: V = (-1)^S * 2^(E-127) * M

双精度时: V = (-1)^S *2^(E-1023) * M

例如(1):单精度浮点数

5.5(10) = 101.1(2) =1.011 * 2^2 = 0 1000 0001 0110 0000 0000 0000 0000 000

-5.5(10) = 101.1(2) = 1.011* 2^2 = 1 1000 0001 0110 0000 0000 0000 0000 000

0.125 (10) = 0.001(2) = 1.0 * 2^-3 = 0 01111100 0000 0000 0000 0000 0000 000

当1< E<2^n-1时,为规约浮点数

当 E = 0时,M为0则值为0;M不为0则为非规约浮点数

当E= 2^n – 1时,M为0则为±∞;M不为0则表示这不是一个数Nan

3操作符

3.1算术操作符

有加(+)、减(-)、乘(*)、除(/)、取模(%);

整数除法会直接去掉结果的小数位,而不是四舍五入。

算数操作符可以和等号一起使用组成算术操作和赋值的简化符号如:+=,-=,*=,/=,%=。

一元减号和一元加号 a = -b;a = b * -c

自动递增和递减

前缀形式:–a,++a,先生成值,再执行运算

后缀形式:a--,a++,先执行运算,再生成值

3.2关系操作符

生成一个boolean类型的结果,有小于(<),大于(>),等于(==),不等于(!=),小于或等于(<=),大于或等于(>=).

等于和不等于适用于所有基本数据类型,其它的适用于除boolean型以外的基础数据类型

3.3逻辑操作符

逻辑与(&&)、逻辑或(||)、逻辑非(!).

只能应用与boolean类型,产生一个boolean类型的结果值。

短路:表达式a和b。a&&b如果a为false,则不再计算b;a||b 如果a为true,也不再计算b。

当在应该使用String类型的时候,使用boolean,则boolean类型会自动转换成相应的String类型。例如:boolean b = true;System.out.println(b)//输出为true

3.4按位操作符

按位操作符用来操作整数基本数据类型中的单个位(bit),即二进制位。按位操作符会对两个参数中对应的位进行布尔代数运算,并最终产生一个结果。

有按位与(&)、按位或(|)、按位异或(^)、按位非(~).

与、或、异或都可以与等号(=)连用,例如a &=2

3.5移位操作符

移位操作符的运算对象也是二进制位,操作对象必须是整数类型。

1,左移位操作符(<<):按照操作符右侧指定的位数将左侧的操作数想左移动(在低位补0)

2,有符号右移操作符(>>):向右移动,根据符号位扩展,如果为负则在高位插入1,如果为正则在高位插入0

3,无符号右移操作符(>>>):无论操作数正负,都在高位插入0

移位操作符可与等号(=)组合使用,此时,操作符左边的值会移动右侧指定的位数,再将得到的结果赋值给左侧的变量。

byte ,short 执行运算时会自动转换成int,然后截断再赋值给原来的变量。这种情况下可能会得到-1的结果

3.6三元操作符if-else

也称为条件操作符

语法:boolean-exp ? value0 :value1

解释:如果前面的布尔表达式的结果为true,则计算value0的值,如果为false则计算value1的值,value0或value1为最终计算结果

3.7 操作符小结

3.7.1强制类型转换

如果是窄化转换,即将可以容纳更多信息的类型转换到容纳较少信息的类型中时,可能会面临数据丢失,则需要强制类型转换

3.7.2截尾和舍入

将float或double类型转换为int时,会直接截掉小数部分。如果想要得到舍入结果,需要使用java.lang.Math中的round方法。

3.7.3类型提升

当对基本数据类型进行算术运算按位运算时,会将较小类型转换为较大类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: