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类型提升
当对基本数据类型进行算术运算或按位运算时,会将较小类型转换为较大类型。相关文章推荐
- Java 基本数据类型和操作符整理
- Java基本操作符与数据类型
- 【JAVA零基础入门系列】Day3 Java基本数据类型
- java里的基本数据类型
- JAVA中的基本数据类型
- java中基本数据类型包装类
- Java基本数据类型
- java中引用数据类型和基本数据类型的一些区别(貌似不完整,但会有些启示)
- Java中的基本数据类型
- JAVA基本数据类型
- java中基本数据类型的转化和强制类型转换浅谈
- java4Android(4)各种基本数据类型及赋值
- java基本数据类型
- java复习4 Java基本数据类型
- JAVA 基本数据类型长度
- Java 基本数据类型
- Java 中的基本数据类型
- java基础总结——命名规则+path+基本数据类型
- Java 基本数据类型与byte数组互转
- Java之基本数据的类型转换