一、数据类型
基本数据类型
引用类型
(1)基本数据类型
类型取值 大小
byte = 8 bit
0(符号位) 0 0 0 0 0 0 0
2^7 ~~ 128
0-127 -128
char 存储2byte 2^16符号位也存储数据
boolean 布尔占用一个字节 true,false
short短整形两个字节 2^16-1
int 4个字节
long 8个字节 2^64-1
float 4个字节
double 8个字节
(2)引用类型:
类
接口
数组
基本类型 | 大小 | 类型取值 |
boolean | true,false | |
byte | 1字节8位有符号整数 | -128----+127 |
char | 2字节16位UNicode字符 | Unicode 0 ~~Unicode 2 ^16 -1 |
short | 2字节16位有符号整数 | -32768(-2^15)~~+32767(+2^15-1) |
int | 4字节32位有符号整数 | (-2^31)~~+(2^31-1) |
long | 8字节64位有符号整数 | 2^63 ~~2^63-1 |
float | 4字节32位浮点数 | 1.4E-45 ~~ 3.4E +38,-1.4E -45 ~~ 3.4 +38 |
double | 8字节64位浮点数 | 4.9E-324 ~ 1.7E +308, -4.9E~ 1.7E+308 |
java中有默认的类型(default) int类型
char a =‘a’//Unicode编码/GBK gb2312.。。 ----》 95 ----》 二进制---》01010110
浮点型:
static float f1 = 34f; //单精度32位
static double d = 34d; //双精度64位
注意浮点类型只是近似的存储。浮点类型是不精确的。使用浮点数是应遵循的原则:避免数量级相差巨大的数之间的加减运算避免等量判断
整形:
byte a = -128; //byte: -128~127
static int i= 34; //
static long l = 23l;//long后面加上L或者l //8字节
static short s = 45;
二、数据类型之间的转换
自动转换(宽向类型转换)
强制转换(窄向类型转换)
(1)将低类型赋值给高类型时,就会执行自动类型转换,这种转换由编译器自动完成(因为这种转换是安全的),无需显式的使用类型转换符。当然,也可以使用,只不过是画蛇添足的。
将高类型赋值给低类型时,则必须使用类型转换运算符,因为这种转换是不安全的,可能会造成数据的丢失。
类型提升:
自动转换无需额外操作,自动由编译器完成,而强制转换需要使用类型转换运算符“(类型)”
(2)相同类型的变量、常数运算,结果还是原类型。(byte,char,short之间的运算会提升为int类型)
(3)不同类型的变量、常数运算,结果的类型为参与运算的类型中精度最高者。
表达式的数据类型自动提升规则byte,short,char型的值被提升int型
操作数最高类型为long类型,结果为long类型
操作数最高类型为float类型,结果为float型
操作数最高类型为double类型,结果为double
三、运算符:
(1)
算术运算符 +- * /
关系运算符 < > <= >= != instanceof
逻辑运算符 && || !
赋值运算符 =
位运算符 && &
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True。
&& & 区别 &&是符号位不动,&符号位跟着一起动
b4 = b4 + i;
与b4+=i有区别;
~取反0 《---》 -1
1 《----》 -2
2 <<---->> -3
4 <<--->> -5
记住即可