1.数据类型的作用是决定给变量分配多大的空间
2.Java数据类型分为:基本数据类型和引用数据类型
基本数据类型:
1.整数型:byte、short、int、long
2.浮点型:float、double
3.布尔型:boolean
4.字符型:char
引用数据类型:类、接口、数组、枚举等等。(String)
语法规则:在Java中,如果成员变量没有手动赋值,系统会赋予默认值
整数型
byte:小整数,占1个字节,取值范围:-2^7~2^7-1,默认值为0。
short:中等大小整数,占2个字节,取值范围:-2^15~2~15-1,默认值为0。
int:最常用的正数,占4个字节,取值范围:-2^31~2^31-1,默认值为0。
long:极大或极小的整数,超过long还有bigInteger,取值范围:8 -2^63~2^63-1,默认值为0。
java中任何一个整数型字面量都会默认被当作int类型来处理
*java中允许小容量的数据直接赋值给大容量的变量—-自动类型转换
byte<short<int<long<float<double
如果在整数型字面量后面添加L或者l,那么这个整数型字面量就会被当作long类型来处理。建议大写L
强制类型转换
Java中大容量不能直接赋值给小容量。
大容量转换为小容量的时候,想让其编译通过的话,必须由程序员手动添加“强制类型转换符”来操作。
强制类型转换之后,编译通过,运行时可能损失精度,也可能不会,具体要看数据的真实大小
例如:55L:(00000000 00000000 00000000 00000000) 00000000 00000000 00000000 00110111
long型转成int型:8个字节转成4个字节:将前面4个字节砍掉留下后面4个(00000000 00000000 00000000 00110111)
此时并未失去精度,但是如果数字大且8个字节都占有数据的话转成小容量被砍掉的数据将丢失,即精度损失转换语法:强转后数据类型 变量名 = (强转后数据类型)需要转的变量名
例如:long a = 10000L;转成int型
先声明一个用于承接的int型容量 = (强转后数据类型)a
int b = (int)a;
浮点型
1.包括两个类型:
float:单精度,可以精确到7位小数,占4个字节,取值范围:1.4E-45~3.4028235E38 ,默认值为0.0f.
double:双精度,可以精确到15位小数(常用),占8个字节,取值范围:4.9E-324~1.7976931348623157E308,默认值为0.0d。
2.浮点型的字面量默认都会被当作double类型来处理,如果想让其当作float类型来处理,需要在字面量后面添加F/f
浮点型数据两种表示形式
1.第一种形式:十进制(实际开发中用)
double x = 1.23;
double y = 0.23;
double z = .23;//0可以省
2.第二种形式:科学计数法(某些文档中会出现)
double x = 0.123E2;//0.12310^2
double y = 123.34E-2;//123.34/10^2
浮点型数据存储原理
float占4个字节,long占8个字节;但占的空间大小是float>long
1.符号位:0表示正数,1表示负数
2.指数位:比如小数0.123E30,其中30就是指数。也有吧指数叫做偏移量的,最大偏移量127–》2^127可以表示的数
3.尾数位:浮点数的小数部分的有效数字。如:0.00123,那么尾数位存储123对应的二进制
4.因为二进制中指数位决定了数字呈指数级增大。因此float虽然是4个字节,但且却以表示比long更大的数值。
注意:
1.一旦有浮点型数据参与运算得出的结果,一定不要使用“==”与其他数字进行“相等比较”
主要原因是:任何浮点型数据,在计算机底层存储的都是它的近似值
字符型
char类型:
1.char类型是字符型
2.char类型占用2个字节
3.char类型取值范围:0-65535
char和short所表示的数量是一样的
4.在java中,字符char类型的字面量必须使用单引号括起来,’a’
5.在Java中,char类型统一采用的字符编码方式:Unicode编码
6.在java中,char可以存储一个汉字
7.转述在java.txt第75条
8.不兼容的类型;String无法转换为char
布尔类型
布尔型:boolean,占1个字节,取值范围:true\false,默认值false。
1.在Java中,只有两个值,true\false,没有0和1
2.布尔类型的数据主要用于逻辑判断,条件判断