计算机存储单元
定义:变量是内存中的小容器,用来存储数据。那么计算机内存是怎么存储数据的呢?无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母b表示。而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示,字节是由连续的8个位组成。 常用存储单元关系 1B= 8b 1KB = 1024B 1MB = 1024KB 1GB = 1024MB 1TB = 1024GB
数据类型
java是一种强类型语言,这也就意味着必须为每一个变量声明一种类型,在java中,共有8中基本类型,其中4中整型、2种浮点类型、1中字符类型
| | | |
---|
数据类型 | 存储需求 | 取值范围 | 默认值 | short | 2字节 | -32768 - 32767 (2^15 - 2^15-1) | 0 | int | 4字节 | -2,147,483,648 - 2,147,483,647 (2^31 - 2^31-1) | 0 | long | 8字节 | -9,223,372,036,854,775,808 - 9,223,372,036,854,775,807 (2^63 - 2^63-1) | 0L | byte | 1字节 | -128 - 127 (2^7 - 2^7-1) | 0 | double | 8字节 | -9,223,372,036,854,775,808 - 9,223,372,036,854,775,807 (2^63 - 2^63-1) | 0.0d | float | 4字节 | -2,147,483,648 - 2,147,483,647 (2^31 - 2^31-1) | 0.0f | char | 一般为2字节 | (0 - 2^16-1) | ‘u0000’ | boolean | 不明确 | true和false | false |
对于数据类型大的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已常量的形式定义在对应的包装类中了。
// 例如
public static void main(String[] args) {
// int
System.out.println("基本类型: int 二进制位数:" + Integer.SIZE);
System.out.println("包装类: java.lang.Integer");
System.out.println("最小值: Integer.MIN_VALUE = " + Integer.MIN_VALUE);
System.out.println("最大值: Integer.MAX_VALUE = " + Integer.MAX_VALUE);
}
在java中,所有的数字类型所占据的字节数与平台无关,java没有任何无符号(unsigned)形式的整数类型。 double类型的精度值是float的两倍,float类型的数值有一个后缀F或f,没有后缀的被默认为是double类型。
引用类型
除基本数据类型外都是引用类型,如 String
String或者any object的默认值都是null
数据类型转换
定义:数据类型的转换是在所赋值的数值类型和被变量接收的数据类型不一致时发生的,它需要从一种数据类型转换成另一种数据类型。
分类
隐式转换
定义:在运算过程中,由于不同的数据类型会转换成同一种数据类型,所以整型、浮点型以及字符型都可以参与混合运算。自动转换的规则是从低级类型数据转换成高级类型数据。
转换规则:
数值型数据的转换:byte→short→int→long→float→double。
字符型转换为整型:char→int。
转换条件:自动类型转换的实现需要同时满足两个条件:①两种数据类型彼此兼容,②目标类型的取值范围大于源数据类型(低级类型数据转换成高级类型数据)。例如 byte 类型向 short 类型转换时,由于 short 类型的取值范围较大,会自动将 byte 转换为 short 类型。
显式转换
定义:当两种数据类型不兼容,或目标类型的取值范围小于源类型时,自动转换将无法进行,这时就需要进行强制类型转换。
语法格式
目标类型 变量名 = (目标类型) (被转换的数据);
举例:int b = (byte)(a + b);
注意:如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
不建议强制转换,因为会有精度的损失。
|