运算符的介绍
运算符是对常量或者变量进行操作的符号。
表达式:
其中,= * + 都是运算符。
运算符的分类
按功能分为:赋值运算符、算数运算符、关系运算符、逻辑运算符;
按操作数的个数分为:单目运算符、双目运算符、三目运算符。
赋值运算符
语法:变量名 = 表达式 ;
其实就是 “=”,它的作用是将右边的值赋值给左边的变量
int age = 20; //将20赋值给变量age
赋值运算符具有自右向左的结合性
int a,b,c; //同时声明三个变量
a = b = c = 1; //自右向左赋值
算术运算符
算术运算符实现数学上的算术运算功能
对于这里的除法,因为5和2都是整型,所以结果也为整型,所以结果为2,要想不损失,就得带个小数点代表浮点型。
复合运算符
复合运算符其实就算算术运算符与赋值运算符的结合,它的特点是对变量自身执行算术运算。
如 a += b 相当于 a = a + b;
当需要对变量自身进行计算时,建议使用这中复合赋值运算符,因为它的运算效率远远高于算术运算符。
复合赋值运算符结合性是自左向右的,例如
int a = 6 ;
a += a += 6; // 等效于 a = a + (a + 6);
表达式中的圆括号 ( ) 能增强运算符的优先级,根数学中是一样的。
自增自减运算符
语法:
++变量名、变量名++、–变量名、变量名–
如果自增自减运算符放在变量前,那就是先运算再使用
int a = 5;
int b = ++a; //等效于a = a+1; int b = a;
如果自增自减运算符放在变量前,那就是先使用再运算
int a = 5;
int b = a++; //等效于 int b = a; a = a+1;
逻辑运算符
逻辑运算符把各个运算的关系表达式链接起来组成一个复杂的逻辑表达式,以判断程序中表达式是否成立,判断结果是true和false
三元运算符
语法:布尔表达式?表达式1:表达式2
“? : ” 是Java中唯一的三目运算符。条件表达式的结果由布尔表达式决定,如果布尔表达式的值为true,则返回表达式1的值,为false则返回表达式2的值。
例如
int score = 75;
String result = score >60 ? "及格" : "不及格" ;
//result的结果为 “及格”
instanceof运算符
instanceof的前一个操作数通常是一个引用类型变量,后一个操作数通常是一个类,它用于判断运算符前面的引用变量是否是后面的类型,或其子类型的实例。
位运算符
位运算符的操作对象是二进制位,是一种起源于C语言的低级操作,它对于计算机而言是非常简单、友好和高效的,在比较low的处理器上,通常位运算要比乘除法快很多。
对于二进制的运算,就参考一下《计算机组成原理》
在这里面,同样有个与运算(&)和或运算(|),它们与之前的 && 和 || 有什么区别呢?
对于“与”操作,我们知道,两个条件中只要有一个是false,那么结果就一定为false。所以,有些时候,当程序执行到第一个条件时,若已经能判断出结果了,&还会继续执行下一个条件,而&&直接就返回结果false,不会去执行后面的代码了,所以一般来讲&&和 || 会更高效的,若非特殊情况,一般用的都是&&和 ||。
下面的程序两次b输出的结果?
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("&&:");
if (a > 10 && b++ < 20) {
}
System.out.println(b);
System.out.println();
System.out.println("&:");
if (a > 10 & b++ < 20) {
}
System.out.println(b);
}