运算符

基本运算符

  • 算数运算符

​ +、-、*、/(取商)、%(取余/取模)

​ 10/20 = 0;10%20 = 10;

  • 赋值运算符

    =

  • 关系运算符

    <、>、>=、<=、==、!=

    关系运算符返回结果是布尔型:true or false。

补充:ctrl + D:复制当前行到下一行

运算中的数据类型变化:多个数运算中,如果都是整数类型,有一个是Long类型,则结果也是Long,否则都是int类型。

public class Demo05 {
    public static void main(String[] args) {
        //算术运算
        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);
        System.out.println(a%b);
        //关系运算
        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);
        //数据类型验证
        long c = 1_3466_7891_1234L;
        int d = 123;
        double e = 0.1;
        System.out.println(a+b+c+d); //Long
        System.out.println(a+b+d); //int
        System.out.println(a+b); //int
        System.out.println(c+e); //double
        System.out.println(d+e); //double
    }
}
输出结果:
30
-10
200
0
10
false
true
false
true
1346678911387
153
30
1.3466789112341E12
123.1

自增自减运算符

自增

a++或++a,等于a = a + 1。

两者的区别在于:

  • a++ 先将其所处语句执行完,再自增。比如语句b = a++; 这句代码执行顺序是:先将a的值赋给b,再对a进行自增运算,即执行a = a + 1。
  • ++a 先自增,再将其所处语句执行完。比如语句b = ++a; 这句代码执行顺序是:先对a进行自增运算,即执行a = a + 1,再将运算后a的值赋给b。
public class Demo06 {
    public static void main(String[] args) {
        int a = 3;
        int b = a++; //先将a的值赋给b之后再自增
        // 相当于在此执行了一次 a = a + 1;
        System.out.println(a);
        // 相当于在此执行了一次  a = a + 1;
        int c = ++a; //先自增后再将自增后的结果赋给c
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}
输出结果:
4
5
3
5

自减

道理和自增一样。

Math类

Math类是一个数学工具类,里面有很多科学计算函数,可以直接使用。比如求2^3,自己写的话是2 * 2 * 2,简短时自己写还好,但是量大了就很复杂。因此可以使用Math类是提供的pow()方法直接求。

double pow = Math.pow(3,2);
System.out.println(pow);
输出结果:
9.0

逻辑运算符

  • 与 && 两个变量都为真,结果才为真
  • 或 || 两个变量有一个为真,结果就为真;两个变量都为假,结果才为假
  • 非(取反) ! 如果变量为真,则变为假;如果变量为假,则变为真

短路运算

如果与运算的第一位就为假,则整个结果一定为假,后面的内容不再运算;

如果或运算的第一位就为真,则整个结果一定为假,后面的内容不再运算。

public class Demo07 {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        System.out.println("a&&b: "+(a&&b));
        System.out.println("a||b: "+(a||b));
        System.out.println("!a: "+(!a)+"\n!b: "+(!b));
        //短路测试
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);
        System.out.println(c);
        boolean e = (c>4)||(c++<4);
        System.out.println(e);
        System.out.println(c);
    }
}
输出结果:
a||b: true
!a: false
!b: true
false
5 //如果没有发生短路,则c++会进行运算,输出结果则为6,而真实结果是5,说明发生短路
true
5//同理

位运算符

  • 与 & 只有相比较的两个二进制数对应位置都为1时才为1,否则结果都为0
  • 或 | 只有相比较的两个二进制数对应位置都为0时才为0,否则结果都为1
  • 异或 ^ 只有相比较的两个二进制数对应位置相同时才为0,否则结果都为1
  • 非 ~

A = 0011 1100

B = 0000 1101

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A = 1100 0011

移位符

左移 << 代表将一个数*2

右移 >> 代表将一个数/2

将2进制的数整体向左或向右移动几位,如2<<3=16。

2*8=16 可以表示为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

三元运算符

  • 条件运算符

    ? :

    x ? y : z 如果x==true,则结果为y,否则结果为z

    int score = 80;//int score = 50;
    String type = score<60?"不及格":"及格";
    System.out.println(type);
    输出结果:
    及格 //不及格
    
  • 扩展赋值运算符

    a+=b <=> a=a+b

    a-=b <=> a=a-b

    a*=b <=> a=a *b

    a/=b <=> a=a/b

  • 字符串连接符 +

    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+"");
    System.out.println(A+B+""+A+B);
    输出结果:
    10 20 //可以看到输出中,“”后使用+连接几个变量,表明输出“”里的内容后应该紧接着输出连接的变量的内容。
    1020
    30 //这个表明输出的内容是A与B相加的结果
    30 //将“”放在最后,程序会把A与B先相加,在输出“”的内容,但是“”后无变量,所以没有输出内容。
    301020 //两个结果的综合比较
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值