刚开始学习Java,把老师上课讲的整理了一下~~
计算机存储设备的最小信息单元叫位(bit),又称之为比特位,通常用小写的字母b表示。
而计算机中最小的存储单元叫字节(byte),通常用大写字母B表示,字节是由连续的8个位组成。
除了字节外还有一些常用的存储单位:
1B = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
Java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以它们表示的数据大小也是不一样的。
数据类型内存占用和取值范围
说明:e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方
与表示整数的整型不同,浮点型代表的是实数,其实就是包含小数的部分。
一、浮点型常量
Java的实常数有两种表示形式:
1.十进制数形式,由数字和小数点组成,且必须有小数点,如0.123, .123, 123. ,123.0等等 。
2.科学计数法形式。如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数。
3.浮点型常量的默认类型是double,当我们想要表示一个float类型的浮点数的时候 此时我们就需要在数值后边加上一个F或者f。
float f = 3.14F;
二、浮点型变量
浮点型变量的类型有float和double两种。
双精度类型double比单精度类型float具有更高的精度,和更大的表示范围,常常用于科学计算等高精度场合。
public static void main(String[] args){ float f = 3.14F; double d = 3.14D; float f1 = 0.1f; double d1 = 1.0/10; System.out.println(f1 == d1);//false float f2 = 42323442F; float f3 = f2 +1;// f2与f2+1 是否相等? System.out.println(f2==f3);//true }
以上代码 由于收到长度和精度的限制,无法精确地去表示一些浮点数 只是近似的等于 。所以,当我们在遇到需要精确表示小数的时候 特别是金融方面的时候,千万不要直接使用float和double去表示。
有关浮点数精度的博客,有兴趣了解一下!
char表示字符 占用两个字节
java中的所有的字符都使用的是Unicode编码 一个字符可以存储一个字母 可以存储一个汉字 还可以存储其他的字符
字符的表示形式:
public static void main(String[] args){ //字符的第一种表示形式 使用单引号引起来的 char c1 ='1'; char c2 = '中'; char c3 = 'a'; char c4 = '&'; //转义字符 char c5= '\t';//制表符 char c6='\r';//回车 char c7 = '\n';//换行 //常量表示 直接使用unicoide值进行表示 }
表示的是逻辑值 只有true和false 两个值
Boolean适用于逻辑运算,一般用于程序流程控制
Boolean只允许取值true和false,无null。与c语言不同,不可以用0和非0的整数代替false和true。
非赋值运算的转换规则:
byte/char/short -> int -> long -> float -> double
布尔类型不参与转换
下面来看一个小例子
public static void main(String[] args) { byte a = 1; byte b = 2; byte c =a+b; }
上面代码在编译器中会报错,变量 a,b,c 都是 byte 型,编译器为什么会报错呢,那是因为在运算过程中出现了数据类型的自动转换,变量 a 和变量 b 都是先转换为 int 型,再参与运算,所以a+b的结果是一个 int 型的数据,不能赋给 byte 型的c。
byte、char、short 参与算数运算时都是先转换为 int 型,再参与运算。
在运算时,如果有大范围操作数也有小范围操作数,那么小范围操作数就要先转换为大范围操作数再参与运算。
赋值运算时,Java会自动扩宽类型,将小范围类型变量转换成大范围类型的变量。
除了自动转换外,我们还可以进行强制转换,以便将大范围操作数赋值给小范围操作数。
public static void main(String[] args) { byte a = 1; byte b = 2; //a+b是int类型 byte c =(byte) (a+b);//这样就不会报错了 }
强制转换的格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。
有的数据经过转型运算后,精度会丢失。