Javaweb微专业第三弹-----从数据类型说起

1.数据类型

数据类型分类

Java是强数据类型语言,变量必须先声明其类型

整型数的三种形式 二进制、八进制、十六进制

类型 占用空间 表示的范围
byte 1 字节 -128-127
short 2 字节 -32768-32767
int 4 字节 -2147483648-2147483647
long 8 字节 -263-263-1
float 4 字节
double 8 字节
char 2 字节 0-65535

boolean:The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its “size” isn’t something that’s precisely defined.

1)boolean a=true;//这个a在JVM中占4个字节即:32位。
2)boolean[] b = new boolean[10];//数组时,每一个boolean在JVM中占一个字节。

默认值

类型 默认值
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char ‘\u0000’
boolean false

2.关于数据精度的几个问题

1.浮点数计算的误差问题
浮点数的误差问题

原因:
1.有些十进制浮点数转成二进制数时不能精确表示,有些浮点计算会得到准确的结果,因为某些计算的二进制与 十进制之间能够准确转换。
2.根据IEEE 754标准,浮点数在计算机内部存储时主要分为符号位(sign)、指数(exponent)部分、尾数(fraction)部分:
那么,这个数就是:(−1)sign×2exponent×fraction2
3.例如十进制的0.5可以表示成(−1)0×2−1×1.0 。
以32位的单精度浮点数(float)为例,它的符号位占一位(bit),指数部分占8位,尾数部分占23位。
以存储十进制的0.1为例,首先把0.1转换成二进制数。然而我们会发现十进制的0.1转换成二进制是一个无限循环小数:0.0001100110011001100…
可是,尾数只有23位,只能截取二进制小数的前23位存储。这时,误差就产生了。
当再次把这个浮点数转换成十进制数时,由于损失了一些二进制位,转换回来的十进制数自然也就与原来的不同了。

3.Java的跨平台特性

第一问:java为什么可以跨平台?
1.java通过实现JVM(java Java Virtual Machine)来实现跨平台,不同平台用相同的JVM原理来实现,所以java编译的字节码可以运行在不同平台的。

第二问: 64位与32位java虚拟机上同种数据类型所占内存大小是否一致?
1.因为JVM不同的平台用的是相同的原理,所以java同种数据类型所占内存大小在不同的平台上相同

数据类型转换

1.自动转换

表数范围小的可以向表数范围大的进行自动类型转换
自动类型转换

2.强制转换

(数据类型)变量或表达式

:
a.高精度向低精度类型转换的时候,有可能出现精度丢失
b.只能在继承层次内进行类型转换
c.在将超类转换成子类之前,应该使用instanceof进行检查

猜你喜欢

转载自blog.csdn.net/fj_Author/article/details/53083607