java-运算符
运算符
java运算符主要有:
1、算术运算符:加(+)、减(-)、乘()、除()、取余/模(%)、自增(++)、自减(--)
2、赋值运算符:=
3、关系运算符:大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、 等于(==)、不等于(!=)
4、逻辑运算符:与(&&)、或(||)、非(!)
5、位运算符:与(&)、或(|)、异或(^)、取反(~)、左移(<<)、右移(>>)
6、条件运算符: ?:
7、扩展赋值运算符:+=、-+、*=、/=
算术运算符
public class Arithmetic {
public static void main(String[] args) {
//二元运算符
//Ctrl + D :复制当前行到下一行
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);//因为都是int类型,只取整数,结果就会为0,所以要转成double类型,才会输出0.5
System.out.println("=====================================================");
long a1 = 1223456788L;
int b1 = 123;
short c1 = 10;
byte d1 = 8;
System.out.println(a1+b1+c1+d1);//long 如果两个操作或者多个操作中有一个数为long,那么结果就为long
System.out.println(b1+c1+d1);//int 如果没有long时候,结果都为int
System.out.println(c1+d1);//int
System.out.println((double)c1+d1);//如果为double,结果就为double
System.out.println("========================================================");
//取余(取模)也叫做 模运算
int a2 = 10;
int b2 = 20;
int c2 = 21;
System.out.println(c2%a2);//值为1 相当于:c/a (21 / 10 = 2...1)
System.out.println("=========================================================");
//++(自增) --(自减) 一元运算符
int a3 = 3;
int b3 = a3++; //a3++ 相当于 a3 = a3+1。执行完这行代码后,先给b3赋值,在自增
System.out.println(a3);
int c3 = ++a3;//++a3 相当于 a3 = a3+1。执行完这行代码前,先自增,再给b3赋值
System.out.println(a3);
System.out.println(b3);
System.out.println(c3);
System.out.println("======================================================");
//幂运算:引用math类 很多运算,我们会使用一些工具类来操作
double pow = Math.pow(3,2);
System.out.println(pow);
}
}
关系运算符
public class Relation {
public static void main(String[] args) {
//关系运算符返回的结果:正确 、错误 通过布尔值表示
//一般会跟if一起使用
int a = 10;
int b = 20;
System.out.println(a>b); //false
System.out.println(a<b); //true
System.out.println(a==b);//false
System.out.println(a!=b);//true
}
}
逻辑运算符
public class Logic {
public static void main(String[] args) {
//逻辑运算符:与(and)、或(or)、非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:" +(a&&b)); //逻辑与运算:两个变量都为真,结果才为真
System.out.println("a || b:" +(a||b)); //逻辑或运算:两个变量有一个为真,结果为真
System.out.println("!(a && b):" + !(a&&b)); //逻辑非运算:如果为真,则变为假,如果为假,则变为真
System.out.println("=====================================");
//短路运算
int c = 5;
boolean d = c<4 && (c++ < 4);//如果第一个为错,则返回第一个
System.out.println(d);
System.out.println(c);
位运算符
public class Place {
public static void main(String[] args) {
//位运算
/*
A = 0011 110
B = 0000 1101
----------------------------------
A&B : 结果为:0000 1100 意思是:与(如果上面跟下面这一位比较,如果两个都是1,才为1,否则就是0)
A|B:结果为:0011 1101 意思是:或(如果对应位都是0,结果为0,否则为1)
A^B:结果为:0011 0001 意思是:异或(如果这两个位置相同,为0,否则就为1)
~B:结果为:1111 0011 意思是:取反(如果上面跟下面这一位比较,如果两个都是1,才为0,否则就是1)
例子:2*8 怎么运算最快?
2*8 = 16 可拆分成:2*2*2*2
效率极高
<<(左移) :相当于把数字乘以2
>>(右移) :相当于把数字除以2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);
}
}
条件运算符
public class Condition {
public static void main(String[] args) {
//三元运算符
// x ? y : z 意思是:如果x==true,则结果为y,否则结果为z
int score =50;
String type = score < 60 ?"不及格":"及格"; //必须掌握
System.out.println(type);
}
}
扩展赋值运算符
public class Assignment {
public static void main(String[] args) {
int a = 10;
int b = 20;
a += b; //相当于:a = a+b
a -=b ; //相当于:a = a-b
System.out.println(a);
//字符串连接符。只要前面出现String类型,就会把其他操作数转换为String,在进行连接。
System.out.println(a+b);
System.out.println(""+a+b); //值为1020,前面出现string类型,就会进行连接
System.out.println(a+b+""); //值为30,后面出现string类型,但是依旧会进行运算
}
}