JAVA通过
操作符来操作数据,JAVA操作符是抄袭C、C++并简化改进而来的
定义:操作符接受一个(操作数)或多个参数,生成一个新值(或改变操作数自身的值)
使用范围:
只能操作基本类型,例外:=、==、!=、(String类:)+、+=
1、 赋值“=”:
①基本数据类型:(存储实际数值,故)赋值则直接复制内容
②对象:复制对象的引用的值(即对象在堆中的地址),
如:
t1=t2;
把t2所指向(标识)的对象的地址赋给t1,t1与t2指向同一对象,并且t1原本指向的对象会被gc清理;
此时通过t1操作对象会使得t2指向的对象也改变——>别名现象(避免:t1.level = t2.level)(类似:方法的形参如果是对象的画,同样也是传的对象的引用,即方法执行过程中会改变对象)
2、 算数操作符:
+=、-=:同时进行运算与赋值操作,如:x+=4;
3、随机数Random类:
①实例化Random:Random r = new Random(47);
无参数——以当前时间为随机数种子;
有参数——以参数为随机数种子
②生成随机数:r.nextInt(100); r.nextFloat(); r.nextLong(); r.nextDouble();
参数——决定生成数的上限,下限默认为0
*:Math库的static方法random()——>产生0和1之间(包括0但不包括1)的一个double值
4、一元加、减:改变符号
5、递增/递减
前缀式:先运算,再生成值
后缀式:先生成值,再运算(验证后缀式是否改变原值)
6、关系操作符:
返回比较结果——>布尔值
==、!=:适用于所有基本类型、对象(比较对象的引用,若要比较非自定义类的对象的实际内容使用equals()方法,自定义类还是会默认比较对象的引用)
>=、<=、<、>:适用于除boolean的基本类型
7、逻辑操作符:
根据参数(必须为布尔型)的逻辑关系生成一个布尔值
短路现象:一旦明确无误地确定整个表达式的值,则不再计算表达式的余下部分
8、直接常量(p47)、e表示指数计数:即10的多少次方
9、按位与或非、移位操作符
10、三元操作符:boolean-exp ? val0 : val1
11、字符串操作符:+、+=
以字符串起头,后续操作数必须是字符串型(会自动将双引号内的自负序列、其他类型如int转换为字符串String类型)
12、类型转换操作符
①将希望得到的数据类型置于圆括号内,放在要进行类型转换的值(变量)的左边,如:long lng = (long) i;
②Java允许把任何数据类型转换成别的数据类型,除布尔型、类
③执行窄化转换(丢失精度)操作时,必须显示声明
④截尾与舍入:
float、double转换为int:截尾(小数点),要得到四舍五入的整数使用round:Math.round(floatValue);
⑤提升:对两种数据类型执行算术运算或按位运算,会自动将数据类型小的转换成数据类型大的,结果为大的数据类型