3.2Java的操作符
+ - * / % =
操作符用于操作数,生成一个新值. 几乎所有的操作符都只能操作"基本类型",例外的操作符"=","==","!="这些操作符能操作所有的对象,除此之外,string类支持"+"和+=
3.3优先级
先乘除后加减 注意括号
注意:System.out.println("a="+a+"b="+b); 在这里"+"意味着字符串连接 如果必要他还会执行字符串转换,当观察到string紧跟着+ 而这个+紧跟着非string类型的元素,就会尝试将这个非String类型的元素转换为String
3.4赋值
= 意思是 取右边的值,把他复制到左边,右边的值可以是常量,变量,或表达式(必须生成一个值) 左面的值必须是一个明确的已命名的变量.
对于基本类型的赋值很简单,基本类型存储了实际的数值,并非指向一个对象的引用,在其赋值时时直接将内容复制到了另一个地方.例如:基本类型 a,b a=b 那么b直接将值付给了a 所以直接修改a的值 b的值并不会改变.
在对对象进行赋值的时候,对一个对象进行操作时,操作的是对对象的引用,将一个对象赋值给另一个对象,实际是将引用从一个地方复制到另一个地方.例如: A c = new A(); A d = new A(); 若 c=d,那么 c和d都持有对于相同对象的引用 所以改变c的内容,d的内容也会改变,(不再被引用的对象会被垃圾回收器 清理)
3.5算术操作符
+-*/%
3.6自动递增和自动递减
++ -- 分为:前缀式和后缀式 对于前缀递增和前缀递减(++a,--a),会先执行运算,再生成值,而对于后缀递增和递减,会先生成值,在进行运算
3.7关系操作符
< > <= >= == 生成一个boolean结果
3.7.1测试对象的等价性
关系操作符 == 和 != 也适用于所有对象
例如: Integer a = new Integer(47);
Integer b = new Integer(47);
System.out.println(a==b); false
System.out.println(a!=b); true
虽然 a,b 对象的内容相同 但是 对象的引用并不相同 , == != 比较的是对象的引用 若果想比较两个对象的内容是否相同则使用equals()
3.8逻辑操作符
与(&&) 或(||) 非(!) 与或 注意短路特性
3.9字符串操作符 + 和 +=
如果表达式以一个字符串起头,那么后续所有操作数都必须是字符串型.