运算符:
1.算术:+、-、*、/、%、++、--
1)注意*的溢出 /的int取整
2)++/--:自增1/自减1,可在变量前也可在变量后
- 单独使用时,在前在后都一样(只有单独输出i++;)
- 被使用时,在前在后不一样 (println输出也是被使用)
- a++的值为a------------(a--的值为a)
- ++a的值为a+1--------(--a的值为a-1)
演示++单独使用
int a=5,b=5;
a++; //相当于a=a+1
++b; //相当于b=b+1
System.out.println(a); //6
System.out.println(b); //6
演示--被使用:
int a=5,b=5;
int c = a--; //1)将a--的值5赋值给c 2)a自减1变为4
int d = --b; //1)将--b的值4赋值给d 2)b自减1变为4
System.out.println(a); //4
System.out.println(b); //4
System.out.println(c); //5
System.out.println(d); //4
一定要记住 自增后本身就会加一!
2. 关系:>、<、>=、<=、==、!=
关系运算的结果为boolean型,关系成立则为true,关系不成立则为false
int a=5,b=10,c=5;
boolean b1 = a>b;
System.out.println(b1); //false
System.out.println(c<b); //true
System.out.println(a>=c); //true
System.out.println(a<=b); //true
System.out.println(a==c); //true
System.out.println(a!=c); //false
System.out.println(a+c>b); //false
System.out.println(a%2==0); //false
System.out.println(c++>5); //false---------此时c自增1变为6
System.out.println(c++>5); //true----------此时c自增1变为7
3. 逻辑:&&、||、!
- 逻辑运算是建立在关系运算的基础之上的,结果也是boolean型
1) &&:短路与(并且),见false则false
- 当第1个条件为false时,则发生短路(后面的不执行了)
int a=5,b=10,c=5;
boolean b1 = b>=a && b<c;
System.out.println(b1); //true&&false=false
System.out.println(b<=c && b>a); //false&&true=false
System.out.println(a==b && c>b); //false&&false=false
System.out.println(b!=c && a<b); //true&&true=true
//演示短路:
boolean b3 = a>b && c++>2;
System.out.println(b3); //false
System.out.println(c); //5,发生短路了
2) ||:短路或(或者),见true则true
- 当第1个条件为true时,则发生短路(后面的不执行了)
int a=5,b=10,c=5;
System.out.println(b>=a || b<c); //true||false=true
System.out.println(b<=c || b>a); //false||true=true
System.out.println(b!=c || a<b); //true||true=true
System.out.println(a==b || c>b); //false||false=false
//演示短路:
boolean b4 = a<b || c++>2;
System.out.println(b4); //true
System.out.println(c); //5,发生短路了
3) !:逻辑非(取反),非真则假,非假则真
boolean b2 = !(a<b);
System.out.println(b2); //!true=false
System.out.println(!(a>b)); //!false=true
4. 赋值运算符:=、+=、-=、*=、/=、%=
a%=2 代表是a除2之后,所得到余数重新赋值给a
扩展赋值运算自带强转:
//面试题
short s =5;
// s=s+10;//编译错误显示红色底线 short运算需要强转 s=(short)(s+10);
s +=10;//相当于s=(short)(s+10)
int o =5;
o +=10;//o=(int) (o+10)
System.out.println(o);//15
o*= 2;//o= (int) (o*2)
System.out.println(o);//30
o/=6;//o=(int)(o/6)
System.out.println(o);//5
5. 连接运算符:
1.1)若两边为数字,
1.2)若两边为字符,
1.3)任何类型与字符串连接,结果都会变为字符串型
char:字符型,单引号中,1个
String:字符串型,双引号中,0个到多个 注意“S”要大写
System.out.println(10+""+20+30);//102030
System.out.println(10+20+""+30);//3030
System.out.println(10+20+30+"");//60
int age=38;
String name ="WKJ";
String add="北京";
System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家在"+add);
6. 条件(三目)运算符:
一目:++ -- !
其余均为二目:+ - * 、 %
1)语法:boolean?数1:数2 此处boolean代指布尔运算
2)是有值的 若为true,则整个表达式的结果为?号后面的数1
若为false,则整个表达式的结果为:号后面的数2
int num=5;
int flag= num>0?1:-1;//true
System.out.println(flag);
int p=8,q=5;
int max =p>q?p:q;//true
System.out.println("max="+max);