Day05

JAVA运算符

算数运算符:+ - * / % ++ --

public static void main(String[] args) {
    long a = 123123123123123L;
    int b = 123;
    short c = 10;
    byte d = 8;
    System.out.println(a+b+c+d); //long
    System.out.println(b+c+d); //int
    System.out.println(c+d); //int
    //如果多个操数中有一个数为long,那最后的结果也是long
    //如果没有long,则结果都为int(无论有没有int类型)
}
int a = 10;
int b = 20;
int c = 21;
System.out.println(c%a);//取余 //1

自增&自减

//++(自增)  --(自减),一元运算符
int a = 3;
int b = a++; //a++代表执行完这行代码后,先给b赋值,a再自增
//→b=3,a=4
System.out.println(a);//4
int c = ++a; //++a代表执行完这行代码后,a先自增,再给c赋值
//→a=5,c=5
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
//--同理可得

补充:

//幂运算(如果要用JAVA计算2^3即2*2*2=8的话)
double pow = Math.pow(2, 3); //Math.pow(2,3);补全返回值
System.out.println(pow);
//补充返回值快捷键:Command+Option+V

赋值运算符:=

关系运算符:> < >= <= == != instanceof

public static void main(String[] args) {
    //关系运算符返回的结果:true or false
    //常和if一起使用
    int a = 10;
    int b = 20;
    System.out.println(a>b);
    System.out.println(a<b);
    System.out.println(a==b);
    System.out.println(a!=b);
}

逻辑运算符:&& || !

//与(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("a && b: "+(b&&a));
 * 由于b为false,所以事实上&a));不被执行就能够直接判定为false
 * 实验可证*/
int c =5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//c=5
//若执行了后面的(c++<4)则c应该会自增变为6,然而结果c=5,说明没有被执行。

位运算符:& | ^ ~ >> << >>>

与逻辑运算异曲同工。

  • &(与):两个同为1则为1

  • |(或):两个中一个为1就为1

  • ~(非):两个同为1则为0(与&取反)

  • ^(异或):两个一样则为0,不一样则为1

/*
E.g.
A = 0011 1100
B = 0000 1101

A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
A~B = 1111 0011
*/
  • <<(左移):相当于*2

  • <<(右移):相当于/2

/*
解释:
0000 0000  0
0000 0001  1
0000 0010  2
0000 0011  2
0000 0100  4
0000 1000  8
0001 0000  16
 */
System.out.println(2<<3);//2左移3位,相当于2^3=16

位运算因为便于计算机理解和执行,所以效率很高。

条件运算符:? :

(三元运算符)

/*
x ? y : z
如果x==true,则结果为y,否则结果为z
*/
int score = 80;
String type = score <60 ?"不及格":"及格";
System.out.println(type);
//虽然用if也可以,但这种方法比较偷懒,还让代码变的精简,所以必须掌握

扩展赋值运算符:+= -= *= /=

  • +=:相当于○=○+△
  • -=:相当于○=○-△
int a = 10;
int b = 20;
a+=b; //相当于a=a+b
a-=b; //相当于a=a-b

字符串连接符: +

//字符串连接符  +
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
//若在+任意一侧出现字符串""(String类),则会自动将其他也转换成String类
//需要注意的是,若""在前面,后面的会拼接;若""在后面,会先运算完前面的再拼接
上一篇:day05_案例:轮播图功能测试


下一篇:day05 数据类型(上)