浮点数据类型:float:4字节 double:8字节
java 中所有的小数默认都是double float a=1.1 此时1.1是double类型的 float a=1.1f 此时是float类型的了
字符型:编码:Unicode 2个字节表示一个字符 char 字符单引号 单引号里只能放一个 范围0~65525
boolean 值为 false true 一般用于逻辑判断 1位
引用数据类型:数组 引用
%是取余数 周期性的一般取余数
++ --
c=i++;先复制后++ c=++i; 先加后赋值
所有关系运算符的结构都是Boolean类型的
类型转换:前提Java基本数据类型计算前后数据类型必须一样
分为自动数据类型转换,和强制数据类型转换
自动数据转换基本数据类型:类型低的在进行运算时候会自动提升类型。在进行运算时结果会想高的精度转换float+int=float byte+int=int
自动数据转换:小心变量:short c=10+10 因为10+10在编译时就已经成了20.所以编译不会 出错
short f=10; byte a=10; short c=a+f; 此时编译会出错。因为a+f是变量,不能再编译的时候确定结果是否在-2^15~2^15-1的范围内
+、-、*、/在操作整数时都会自动提升为int
short b=10;//b是short类型的2个字节,10是int类型的4字节:四个字节如何放到两个字节里还不出错?在编译的时候系统会自动判断,右边的值是否在左边的范围内。如果在就编译成功,不在就编译失败。因为10是常量,能够判断
强制类型转换:byte b=10;byte c=20; byte d=(byte)(b+c);出现:可能会发生数据错乱(截断)
byte b=10; b=b+10;会在编译时出错,右边是变量:无法从int转换为变量
byte b=10; b+=20;编译不会出错 对于扩展符运算符
byte b=10; b+=(20+b);编译不会出错。如果是扩展预算符,右面就不管有没有变量了,全能编译成功,底层已经做了自动类型强转转换
char+int 获取Unicode的码值(整数0~65535)+int=int