算数运算符:+(加),-(减),*(乘),/(除),%(取余),++(自增),--(自减)
赋值运算符=
关系运算符:>(大于),<(小于),>=(大于等于),<=(小于等于),==(等于),!=instanceof(不等于)关系运算符运算出来的只能是布尔值
逻辑运算符:&&(与),||(或),!(非)
位运算符:&,|,^ ,~ ,>> , << , >>>
条件运算符?:
扩展赋值运算符:+=,-=,*=,/=
前面四个必须掌握的运算符,后面三个目前了解就可以
二元运算符:只有两个数操作的
public class Demo{
public static void main(String[] args) {
int a=10;
int b=20;
int c=21;
System.out.println(a+b);//运算结果:30
System.out.println(a-b);//运算结果:-10
System.out.println(a*b);//运算结果:200
System.out.println(a/b);//运算结果:0
//这个结果有问题a/b应该等于0.5,但是由于a和b都是int型,所以结果也是int型精度不够就显示了0
System.out.println(a/(double)b);//运算结果:0.5
//这次我们在运算的时候,把它强转成为double类型,运算结果就没有问题。所以在进行除法的时候一定要注意类型以做出强转
System.out.println(c%b);//运算结果:1
// % :取余也叫做模运算意思是c除以a余多少
}
}
?
拓展
public class Demo{
public static void main(String[] args) {
long q=123123123123l;
int w=123;
short e=10;
byte r=8;
System.out.println(q+w+e+r);//运算结果:123123123264 long类型
System.out.println(w+e+r);//运算结果:141 int类型
System.out.println(e+r);//运算结果:18 int类型
}
}
注意:运算中有一个类型为long结果都为long类型,如果没有则都为int类型,同理如果里面有个数为double结果也为double类型
它的运算结果都是布尔值
public class Demo{
public static void main(String[] args) {
public static void main(String[] args) {
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
}
}
关系运算符是用来判断真假的
自增自减它属于一元运算符只需要一个单位就可完
而它有两种写法a++,++a,自减同理,两个运算方式都是不一样的
a++
public class Demo{
public static void main(String[] args){
int a=1;
int b=a++;
System.out.println(b);//运行结果:1
//a++ == a+1
System.out.println(a);//运行结果:2
}
}
b已经做自增了为甚麽结果还是1?因为a++是先进行a的赋值,然后在进行运算,所以b输出的依然是1。我们再来输出a它经过b的自增运算所以就等于二
++a
public class Demo{
public static void main(String[] args){
int a=1;
int b=++a;
System.out.println(b);//运行结果:2
System.out println(a);//运行结果:2
}
}
a++刚才我们看了是先进行输出,然后在运算,而++a刚好相反,是先进性运算然后在输出所以b就输出了2,a也输出了2
a++ 和 ++a 都是 a+1 ,只不过输出和运算的先后不同,从例子可以看的出来一个是先进行输出在进行运,算一个是先进行运算在进行输出。这个在之后的if语句时会经常用到
咱们正常的话像二的三次方,在计算器里面是输入2^3,在Java中没有这个写法,我们有专门的类来运算 Math.pow()我们在实例中做一下
public class Demo{
public static void main(String[] args){
//输出二的三次方 2*2*2 结果为8
double q=Math.pow(2,3);
System.out.println(q);//运行结果:8.0
}
}
注意:幂运算的类型它只认double类型
&&与运算:当两个结果同时为真的时候结果才为真,否则为假
||或运算:当两个结果同时为假的时候结果才为假,否则为真
!非运算:当运算为真的时候结果为假,运算结果为假的时候结果为真
public class Dome{
public static void main(String[] args){
boolean a=true;
boolean b=false;
System.out.println("a&&b:"+(a&&b));//运行结果:a&&b:false
System.out.println("a||b:"+(a||b));//运行结果:a||b:true
System.out.println("!(a&&b):"+!(a&&b));//运行结果:!(a&&b):true
}
}
在进行&&运算的时候第一个返回结果为假,则直接返回假,不进行后面的运算
public class Demo{
public static void main(String[] args){
int c=5;
boolean d=(c<4)&&(c++<4);
System.out.println(d);//运行结果:false
System.out.println(c);//运行结果:5
}
}
c<4的结果为假所以它直接输出了假,我们输出c发现它输出的结果为5,所以它在直接输出假之后并没有进行自增运算
位运算是跟二进制有关的运算,我们可以看一下二进制和位运算的关系
public class Demo {
public static void main(String[] args) {
/*位运算是跟二进制有关的运算
A = 0011 1100
B = 0000 1101
-------------------------------------------------
A&B= 0000 1100 A&B其中两个位都为1则是1,其余为0
A|B= 0011 1101 A|B其中两个位有一个1则为1,其余为0
A^B= 0011 0001 A^B其中两个相同的为0,不同的为1
~B= 1111 0010 ~B0则是1,1则是0*/}
}
<<左移 >>右移
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
~~
0000 1000 8
~~
0001 0000 16
从上面二进制数中我们可以看出每左移以为就相当与给这个数乘二变大一倍,反过来看右移以为相当与给这个数字除以二变小一倍。
我们在代码中输出一下
public class Demo{
public static void main(String[] args){
//最快的算出2*8=16,我们可以把2*8拆分成2*2*2*2相当于右移了三位我们直接输出一下
System.out.println(2<<3);//运行结果:16
}
}
左移 << : 相当与给这个数乘二
右移 >> : 相当与给这个数字除以二
位运算它是直接跟二级制打交道的效率极快
相当于一种偷懒的运算符,我们直接在代码中看
public class Demo{
public static ovid main(String[] args){
int a=10;
int b=20;
a+=b;
System.out.println(a);//运行结果:30
}
}
从上面我们可以看出a+=b相当于a=a+b同理a-=b也相当于a=a-b,所以说扩展运算符相当于一种偷懒的运算符
字符串的连接 +
public class Demo{
public static ovid main(String[] args){
int a=10;
int b=20;
System.out.println(a+b);//运行结果:30
System.out.println(""+a+b);//运行结果:1020
System.out.println(a+b+"");//运行结果:30
System.out.println(""+(a+b));//运行结果:30
}
}
""相当与字符串String,我们可以看出当String类型在前面时,它会把后面的类型也变成String类型 + 用作相连然后输出,它出现在最后面是则不守影响继续作为运算符号,当我们又要前面输出字符串又要后面的 + 用作运算时应当在需要运算的地方加上()样就可以了,因为和我们平常一样()的优先级比较高优先输出()里面的东西
这个运算符一般. x ?y :z 这么写意思是如果x==true,结果为y,否则为z
我们用这个来判断一下一个孩子的成绩是否合格
public class Dome{
public static void main(String[] args){
//我们来设置当孩子的分数小于60时,为不及格,否则为及格
int score =20;//成绩为50
String type =score<60?"不及格":"及格";
Ststem.out,println(type);//运行结果为:不及格
}
}
原文:https://www.cnblogs.com/dengyi102986/p/14684661.html