Java数据类型(1)
基本数据类型
A.整型
byte:(8位--1个字节 有符号 以二进制补码表示)
范围:-27~27-1 即 -128~127
short:(16位--2个字节 有符号 以二进制补码表示)
范围:-215~215-1 即 -32768~32767
int:(32位--4个字节 有符号 以二进制补码表示)
范围:-231~231-1 即 -2,147,483,648~2,147,483,647
long:(64位--8个字节 有符号 以二进制补码表示)
范围:-263~263-1 即 -9,223,372,036,854,775,808~9,223,372,036,854,775,807
注:
1.java中的各种整型数据都有固定的字节长度和范围,并不受操作系统的影响,以保障java程序的可移植性。
2.Java整型常量三种表示方式:
I.十进制
Ii.八进制 以数字0开头,如:010表示十进制的8
Iii.十六进制:以数字0和字母x开头 如 0x12等于十进制的18
3.各种数据类型的数据不能超出其表示范围,否则会溢出。在编译时就会报错
4.Java整型常量默认是int型的,如果要声明一个long类型的常量数据则需要在数字后面加上‘l’或‘L’,否则会报错。
B.浮点型
计算机中数据不是连续的,而是离散的,如0到1之间有无数个浮点数,但是在计算机中无法做到将这些数完全一一表示,故而存在误差。所以浮点数无法直接比较大小
如. float a = 0.1f;a==0.1的结果是false
如果两个同符号浮点数之差的绝对值小于或等于某一个可接受的误差(即精度),就认为它们是相等的。
不要直接用“==”或者“!=”对两个浮点数进行比较,但是可以直接用“<”和“>”比较谁大谁小。或者定义一个误差,当两个浮点数的差的绝对值在这个范围内,则认为两个浮点数相等。
float:(占4个字节 )
1bit(符号位) 8bits(指数位) 23bits(尾数位)
范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38
double:(8个字节)
1bit(符号位) 11bits(指数位) 52bits(尾数位)
范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308。
注:
Java浮点型常量默认是double型的,如果要声明一个float类型的常量数据则需要在数字后面加上‘f’或‘F’,否则会报错。
C.字符型
char型(字符型)数据在内存中占用2个字节。char型数据用来表示通常意义上的字符,每个字符占2个字节,Java字符采用Unicode编码,它的前128字节编码与ASCII兼容字符的存储范围在\u0000~\uFFFF,在定义字符型的数据时候要注意加' ',比如 '1'表示字符'1'而不是数值1
D.布尔类型
数值只有true 和 false
基本类型数据之间的类型转换(低精度向高精度转换,直接转换;反之需强制转换,丢失精度)
byte-->short-->int-->long-->float-->double
char
注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换
引用类型
类(class) 接口(interface) 数组。类似于C语言中的指针。