-
数据类型:基本类型:(java为强类型语言)
数值类型(8个):
整数类型:
byte(1个字节)-128-127
short(2个字节)-32768-32767
int(4个字节)
long(8个字节)在数字后加一个L(使用大写L)
浮点类型(小数):
float(4个字节)在数字后加一个F
double(8个字节)
字符类型:char(2个字节) String(字符串,是一个类)
boolean类型:(占1位),true和false
引用数据类型():
类
接口
数组 -
字节:1bit表示1位
1Byte表示一个字节 1B = 8 b
1024B = 1KB
1024KB = 1M
1024M = 1G -
整数扩展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10; //十进制10为10
int j = 010; //八进制10为8
int y = 0x10; //十六进制10为16 -
浮点数扩展:
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
sout(f==d); //false
float: 有限 离散 舍入误差 大约 接近但不等于
(最好完全避免使用浮点数进行比较!!!)(可使用BigDecimal) -
字符扩展:
强制转换:
char c1 = ‘a’;
char c2 = ‘中’;
sout(c1); //a
sout((int)c1); //97
sout(c2); // 中
sout((int)c2); //20013
(所有的字符本质还是数字!)
编码: Unicode 表:(97 = a 65 = A)2字节 0-65536
// U0000 UFFFF
char c3 = ‘\u0061’;
sout(c3); //a -
类型转换:
低-------------------------------------------->高
byte , short ,char -> int -> long -> float -> double
运算中,不同类型的数据先转化为同一类型,然后进行运算
int i = 128; //128
byte b = (byte)i; //-128 (内存溢出,值超过其类型最大值)
//强制转换 (类型)变量名 高 ----> 低
//自动转换 低------->高注意点: 1不能对布尔值进行转换 2不能把对象类型转换成不相干的类型 3在把高容量转换到低容量时,需要强制转换 4转换时可能存在内存溢出的情况,或者精度问题 int money = 10_0000_0000;(数字可以用下划线分割,不会影响正常计算) int years = 20; int total = money * years; //-1474836480 计算的时候溢出了 long total2 = money * years ; //默认是int,转换之前就已经存在问题了,无法解决溢出问题!!! long total3 = money * ((long) years); //先把一个数转换为long,计算后结果也会提升为long类型
07-27