引用数据类型占四个字节,用来表示对象的地址
a*=b+3;//相当于a=a*(b+3)
JAVA语言整型变量的四种表达形式
二进制整数:以0b或0B开头
八进制整数:以0开头
十进制整数,如:999,-500
十六进制整数:以0x或0X开头
JAVA语言的整型常数默认为int型,声明long型常量数字后应加"L"或"l"
浮点数
float类型的数字后要加"F"或"f",没有后缀"F"或"f"默认为double类型。
浮点类型的数字不适合比较,计算不精确,可引用BigDecimal类
字符型变量
char字符
string字符串(字符序列)
转义字符:{"\b"退格,"\n"换行,"\r"回车,"\t"制表符(Tab),"\"反斜杠,"是双引号,'是单引号}
布尔类型变量
布尔类型在内存中只占一位(不是一个字节),不可以用0或非0的整数替代true和false。
运算符
##二元运算符运算规则
整数运算
- 有一个操作数为long,结果为long
- 没有long,结果默认int。即使操作数全为short,byte,结果还是int
浮点运算 - 有一个为double,结果为double
- 全是float,结果为float
取模运算
-
-7%3=-1(余数符号与左边操作符相同)
一元运算符++与– -
++a(先自增再赋值)
-
a++(先赋值再自增)
扩展赋值运算符
关系运算符
运算结果为只有 true 或 false
注一个等号是赋值,两个等号判断是否相等
逻辑运算符
&&短路与:只要有一个为false,则直接返回false
||短路或:只要有一个为true,则直接返回true
位运算符
<<左移运算符 如int a = 12<<2 //相当于12x2x2
右移运算符 如int b = 12>>2 //相当于12/2/2
字符串运算符“+”
三元运算符
x ? y : z // 其中x为boolean类型表达式,先计算x的值,若为true,则整个运算的结果为表达式y的值,否则整个运算结果为表达式z的值
运算符优先级的问题
**
**自动类型转化
容量小的数据类型可以自动转化为容量大的数据类型。
虚线表示转换时可能会有精度的损失
- 可以将整型变量直接赋值给byte,short,char等类型变量,而不需要进行强制类型转换,不超出其表数范围即可。
short b = 12; //合法
short a = 12345;//非法,超出short的表数范围
强制类型转换
double x = 3.99;
int nx = (int)x; //值为3,去除小数部分
常见错误: 溢出 和 L 问题
溢出:为避免溢出可先将一个因子强制转为long,整个表达式发生提升。全部用long来计算。
int money = 1000,000,000;//10亿
int years = 20;
int total1 = money*years;
System.out.println(total1);//返回的total是负数,默认为int,但超出了int的范围
long total2 = money*(long)years;
System.out.println(total2);//正确
L问题:不建议用小写l和大写L定义变量,long类型数的结尾最好用大写L