运算符
算术运算符
-
*+ , - , , / , % , ++ , - - **
//算数运算符 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); //(a/b)运算出来是int型 则为0,所以这里我们需要考虑到小数进行一个强制转换。 //取余,模运算 System.out.println(c % a); // c / a 25 / 10 = 2......5 //定义不同类型相加 long a = 1237234642356L; int b = 123; short c = 23; byte d = 8; System.out.println(a + b + c + d);//long 不同整数类型相加,其中有一个为long型,结果类型也为long System.out.println(b + c + d);//int 若没有long型,结果都为int类型。 // System.out.println((String) (c + d));//不能将int类型转换为String System.out.println((double) c + d);//31.0 double类型 // ++ -- 自增,自减 一元运算符 int a = 3; int b = a++; //执行完这行代码后,先给b赋值,将a++的值3赋值给b,再自增 //a = a + 1 System.out.println(a); //a = a + 1 int c = ++a;//执行完这行代码后,先自增,再给c赋值 将++a的值5赋值给c System.out.println(a);//5 System.out.println(b);//3 System.out.println(c);//5
赋值运算符
-
=
1)简单赋值运算符:= 2)扩展赋值运算符:+=,-=,*=,/=,%= ---扩展赋值自带强转功能 int a = 5; a += 10; //相当于a=(int)(a+10) System.out.println(a); //15 a *= 2; //相当于a=(int)(a*2) System.out.println(a); //30 a /= 6; //相当于a=(int)(a/6) System.out.println(a); //5 //常见面试题: short s = 5; //s = s+10; //编译错误,需强转,改为: s=(short)(s+10); s += 10; //相当于: s=(short)(s+10);
关系运算符
> , < , >= , <= , == (java等于符号),!=
//关系运算符返回的结果: 布尔值 true false
int a = 10;
int b = 20;
int c = 22;
System.out.println(a > b);//false
System.out.println(a < b);//true
System.out.println(a == b);//false
System.out.println(a != b);//true
System.out.println(a++>10); //false-----a自增1变为11
System.out.println(a++>10); //true------a自增1变为 12
逻辑运算符
&& , || , !
1)&&:逻辑与(并且),两边都为真则为真,见false则false
---当第1个条件为false时,则发生短路(后面的不执行了)
||:逻辑或(或者),有真则真,见true则true
---当第1个条件为true时,则发生短路(后面的不执行了)
!:逻辑非(取反),非真则假,非假则真
2)逻辑运算是建立在关系运算的基础之上的
逻辑运算的结果也是boolean型
//与(and 两个都要) 或(or 我或者你) 非(for 取反 )
boolean a = true;
boolean b = false;
System.out.println("a && b:" + (a && b));//逻辑与运算 两个变量都为真 结果才为true
System.out.println("a || b:" + (a || b));//逻辑或运算 两个变量只要有一个为真 则结果为true
System.out.println("!(a && b):" + !(a && b));//逻辑非运算 如果是真 结果为假 ,如果是假则结果为真
//短路运算
int c = 5;
boolean d = (c < 4) && (c++ < 4);// (c < 4)以及为假了 所以后面(c++ < 4) 中的c++不运行 所以c的结果还是5
System.out.println(d);//false
System.out.println(c);//5
位运算符
& , | , ^ , ~ , >> , << , >>>
/*
A = 0011 1100
B = 0000 1101
-----------------------------
A&B (A与B 上下两个数进行比较 上下都为1则为1 否则为0 )
A&B =0000 1100
A|B(A或B 上下两个数进行比较 如果对应位0则为0 否则为1)
A|B =0011 1101
A^B(A异或B 上下两个数进行比较 如果对应位相同则为0 否则为1 )
A^B =0011 0001
~B(非A即B 上下两个数进行比较 取对应位相反的数 )
~B =1111 0010
面试题:
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);//2*2*2*2 16
条件运算符
**? : **
1)语法:
boolean?数1:数2
2)执行过程:
整个表达式是有值的,它的值要么是?号后的数1,要么是:号后的数2
计算boolean的值:
若为true,则整个表达式的结果为?号后的数1
若为false,则整个表达式的结果为:号后的数2
int score = 80;
String test = score < 60 ? "不及格" : "及格";
System.out.println(test);//及格
int score = 50;
String test1 = score < 60 ? "不及格" : "及格";
System.out.println(test1);//不及格
字符串连接
+
+:
1.1)若两边都是数字,则做加法运算
1.2)若旁边出现了字符串,则做字符串连接
注意:任何类型的数据与字符串相连,结果都是字符串类型----同化作用
int a = 10;
int b = 20;
a += b; //a=a+b
a -= b;//a=a-b
//字符串连接符 + ,String
/*
面试题
*/
System.out.println("" + a + b);//1020 字符串在前面实现字符串拼接
System.out.println(a + b + "");//30 字符串在后面 前面依旧进行运算