操作符
在最底层,Java的数据是通过使用操作符来操作的
优先级
最简单的就是先乘除后加减,也可以用括号明确地表示出计算顺序
赋值
赋值使用操作符”=”,意思是”取右边的值(即右值),把它赋值给左边(即左值)”
右值可以是任意何常数,变量或者表达式,左值必须是一个明确的已经命名的变量
1.给基本数据类型赋值
赋值时,是直接将一个地方的内容复制到了另一个地方
a=b;//将b的内容复制给a,如果接着改了a的内容,b不会受到影响
2.给对象赋值
将一个对象赋值给另一个对象时,实际上是将引用复制到另一个对象
c=d;//c和d都指向原本只有d指向的对象,如果修改c同时就修改了d
算术操作符
算术操作符通常包括加号(+),减号(-),除号(/),乘号(*)
整数除法会直接去掉结果的小数位,而不是四舍五入的圆整结果
自动递增和递减
递减操作符是–,递加操作符是++;
++a; //相当于a=a+1
--a;//相当于a=a-1
这两种操作符各有两种使用方式,分别是前缀式和后缀式
1.前缀递增或前缀递减,会先执行运算,然后生成值
2.后缀递增或后缀递减,会先生成值,后执行运算
import static java until.*;
public class AutoInc{
public static void main(String[] args){
int i=1;
System.out.println("i:"+i);
System.out.println("++i:"+ ++i);
System.out.println("i++:"+ i++);
System.out.println("i:"+i);
System.out.println("--i:"+ --i);
System.out.println("i--:"+ i--);
System.out.println("i:"+i);
}
}/* output
i:1
++i:2
i++:2
i:3
--i:2
i--:2
i:1
*///:~
关系操作符
关系操作符生成的是一个boolean(布尔)结果,计算的是操作数的值的关系
如果是真实的,输出true,如果是假的,输出false
1.==和!=比较的是对象的引用
public class Equivalence {
public static void main(String[] args){
Integer n1 =new Integer(47);
Integer n2=new Integer(47);
System.out.println(n1==n2);
System.out.println(n1!=n2);
}
} /* output
false
true
*///:~
2.equals()方法用来比较对象的内容
public class EqualMethod {
public static void main(String[] args){
Integer n1 =new Integer(47);
Integer n2 =new Integer(47);
System.out.println(n1.equals(n2));
}
}/*output
true
*///:~
逻辑操作符
逻辑操作符“与”(&&),“或”(||),“非”(!)
与,或,非只能用于布尔值,如果在应该使用String值的地方使用了布尔值,布尔值会自动跳转成合适的文本形式
短路
当一旦能够明确无误地确定整个表达式的值,就不再计算表达式余下的式子。
移位操作符
移位操作符的运算对象是二进制的”位”,只可用来处理整数类型
1.左移位操作符(<<)能按照操作符右侧指定的位数将操作符左边的操作数向左移动(低位自动补0)
2.”有符号”右移位操作符(>>)则按照操作符右侧指定的位数将操作符左侧的操作数向右移动若符号为正,在最高位插入0,反之插入1
对char,byte或者short类型的数值进行移位处理,在移位之前会被转换为int类型
移位操作符可以与等号组合使用,等号右边的表示要移动的位数
int i=1;
i>>>=10;
三元操作符 if-else
这种与普通的if-else语句是不同的,表达式为
boolean-exp? value0:value1
如果boolean-exp的值为true,就计算value0,值如果为false,就计算value1
public class TernaryIfElse{
static int ternary(int i){
return i<10 ? i*100:i*10;
}
public static void main(String[] args){
print(ternary(9));
}
} /* output
900
*///:~
类型转换操作符
在适当的时候,Java会将一种数据自动装换成另一种
要想执行类型转换,需要将希望得到的数据类型置于圆括号内
public class Casting{
public static void main(String[] args){
int i=200;
long lng=(long)i;
lng=i;
long lng2=(long)200;
lng2=200;
i=(int)lng2;
}
}
参考书《java编程思想》