2020-11-29

本文详细介绍了Java中的算数运算符(加减乘除、取余、幂运算)、一元运算符(自增自减)、赋值运算符、关系运算符、逻辑运算符以及位运算符的使用,包括优先级和结合性,并通过示例展示了它们在实际编程中的应用。
摘要由CSDN通过智能技术生成

运算符

一、算数运算符

二元算术运算符主要用于进行基本的算术运算,如加法、减法、乘法、除法等。遵从优先级

public class Demo01 {

    public static void main(String[] args) {

        int a = 10;
        int b = 20;
        int c = 30;
        int d = 40;
//加减乘除 +、-、*、/
        System.out.println(a+b);//Ctrl+d复制到下一行
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);//输出为零,但实际上应该是0.5,四舍五入向下取整了。
        System.out.println(a/(double)b);//强转
//取余 %
        int h = 21;
        //取余,模运算
        System.out.println(h%c);//h/c == 21/10 = 2...1  %取余数的意思
    }
}

一元运算符 ++自增、–自减

    public static void main(String[] args) {
//一元运算符
        int a= 3;//初始值
        int b = a++;//a++ a = a + 1 ,执行完这行代码后,先给b赋值,在自增
        //a = a + 1
        System.out.println(a);//结果:4
        //a = a + 1
        int c = ++a;//执行完这行代码后,先自增,在给c赋值
        int d = a--;//a-- a = a - 1 ,执行完这行代码后,先给d赋值,在自减
        //a = a - 1
        System.out.println(d);//结果:5
        //a = a - 1
        int f = --a;//执行完这行代码后,先自减,在给f赋值
        System.out.println(f);//结果:3

//++(自增) :一元运算符
        System.out.println(a);//结果:3 这里最后输出的a是赋值后的f
        System.out.println(b);//结果:3
        System.out.println(c);//结果:5

//--(自减) :一元运算符
        System.out.println(a);//结果:3 这里最后输出的a是赋值后的f
        System.out.println(d);//结果:5
        System.out.println(f);//结果:3

//总结:a++ 先赋值在自增,++a 先自增在赋值 a--/--a 同理

//幂运算 2^3 = 2*2*2 = 8 java中没有2^3的运算,需要借助工具类
//很多运算我们会使用一些工具类来操作!
//ctrl+alt点击math可以查看工具
        double pow = Math.pow(2,3);//=2^3
        System.out.println(pow);
    }
}

三元运算符 x ? y : z

public class Demo08 {
//三元运算符
    public static void main(String[] args) {
//x ? y : z
//如果x的值是真的(x==true),则结果为y,否则结果为z
        int score = 80;
//String type 是定义变量
     String type =  score <60 ? "不及格" : "及格";
        System.out.println(score);
}
二、赋值运算符
public class Demo02 {
//算数运算符
    public static void main(String[] args) {
        long a = 1212121231213l;
        int b = 123;
        short c = 10;
        byte d = 8;
        double s = 3.14;        
//多个操作数中,有一个操作数为long,结果类型也为long
//如果操作数为double和long,结果类型为double
//没有long的时候,结果都为int,无论你是不是有int操作
        System.out.println(a+b+c+d);//结果类型:long
        System.out.println(b+c+d);//结果类型:int
        System.out.println(c+d);//结果类型:int
//Inconvertible types; cannot cast(转换) 'int' to 'java.lang.String'
//      System.out.println((String)(c+d));//不能把int类型转化为String
        System.out.println(s+a);//结果类型:double
        System.out.println((long) s+a);//强转为long
//Inconvertible types; cannot cast(转换) 'int' to 'java.lang.String'
//      System.out.println((String)(s+b));//不能把double类型转化为String

//总结:自动升为混合运算类型中最高类型, byte、short、char用运算符运算后自动转型为int类型
    }
}
三、关系运算符
public class Demo03 {
    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
    }
}
四、逻辑运算符
//逻辑运算符
public class Demo05 {
    public static void main(String[] args) {
//  与(and):&&            或(or):||           非(取反):!(&&)
        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;//c=6
        boolean d = (c++<4)&&(c<4);//第一个值是正确的,所以执行,但是后面错误输出false
                    //false
        boolean e = (c<4)&&(c++<4);//先判断先前条件,正确就往下执行,不正确就停止输出false
        System.out.println(c);//c=6
        System.out.println(d);//false
        System.out.println(e);//false
        
        int z = 5;//z=7
        boolean x = (z++>4)||(z<4);//一个为真就是true
        boolean v = (z<4)||(z++<4);//false

        System.out.println(z);
        System.out.println(x);
        System.out.println(v);
        
        int m = 6;
        boolean y = !(m++<4);
        boolean o = !(m++<4);
        System.out.println(y);
        System.out.println(o);
    }
}
五、位运算符
public class Demo06 {
//位运算
/*       A = 0011 1100
//       B = 0000 1101

 与  A&B  = 0000 1100 如果两个都是1,才为1。否则都是0
 或  A|B  = 0011 1101 如归对位是是1,直接是1,两都是0,才为0
异或  A&B = 0011 0001 如果两个位置相同,则为0,否则为1
取反  ~B  = 1111 0010 如果两个都是1,才为0。否则都是1

题目    2*8 = 18    2*2*2*2
   效率高
  <<左移 *2    >>右移 /2  箭头指向哪边就往哪移
二进制
  0000 0000     0
  0000 0001     1
  0000 0010     2
  0000 0011     3
  0000 0100     4
  0000 0110     5
  0000 1000     8
  0001 0000     16
    */
    public static void main(String[] args) {
        System.out.println(2<<3);
    }
}
六、赋值算符
public class Demo07 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;
        int d = 60;        
        a+=b;//a = a+b
        a-=b;//a = a-b
        a*=b;//a = a*b
        a/=b;//a = a/b       
        System.out.println(a);
//字符串链接符 + ,在链接符两侧只要有一方出现String类型,就会把其他操作数转换成String类型
        System.out.println(""+a+b);//字符串在前面,就会出现拼接
        System.out.println(a+b+"");//字符串在后面,前面的数依旧会进行运算
    }
}
六、优先级

所有的数学运算都认为是从左向右运算的,Java 语言中大部分运算符也是从左向右结合的,只有单目运算符、赋值运算符和三目运算符例外,其中,单目运算符、赋值运算符和三目运算符是从右向左结合的,也就是从右向左运算。

乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作数可以互换位置而不会影响结果。运算符有不同的优先级,所谓优先级就是在表达式运算中的运算顺序。

一般而言,单目运算符优先级较高,赋值运算符优先级较低。算术运算符优先级较高,关系和逻辑运算符优先级较低。多数运算符具有左结合性,单目运算符、三目运算符、赋值运算符具有右结合性。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值