Java的基础语法——运算符

运算符

  • Java语言支持以下运算符:

  • 算术运算符:+、-、*、/、%、++、–

    • 加、减、乘、除、(取余)模运算······

      //算术运算符,也可以叫:二元运算符(两个数进行操作的)
      int a = 10;
      int b = 20;
      int c = 25;
      int d = 30;
      
      
      System.out.println(a+b);
      System.out.println(a-b);
      System.out.println(a*b);
      
      System.out.println(a/b);
      //第12的运行输出结果为:0
      //两个int类型除完还是int型,本来结果为0.5,向下取整因为只有整数部分就取0,所以这里是有问题的
      //可能会产生小数,算的时候应该强转一下
      System.out.println(a/(double)b);
      
      //运行结果为:
      30
      -10
      200
      0.5
      

      运算规则:先将运算级统一成该运算中最高的数据类型后再运算

      //不同数据类型运算自动转换为容量大的数据类型(也就是:按类型优先级自动转换)
      Long a = 123123L;
      int b = 1231;
      short c = 12;
      byte d = 1;
      
      System.out.println(a+b+c+d);//Long
      System.out.println(b+c+d);  //int
      System.out.println(c+d);    //int
      
      //运行结果为:
      124367	//Long
      1244	//int
      13		//int
          
      /*
      各位看出来了嘛?
      1.没有long时,所有非int类型转为int类型
      2.类型转换的时候byte和short是在同一级别的,但是类型不同,如果要转的话无法都转为short或都转为byte,所以选择都转为更高一级的int(向上兼容),再做运算
      
      3.运算规则:先将运算级统一成该运算中最高的数据类型后再运算
      */
      
    • 取余,也叫模运算

      //取余,也叫模运算
      //取两数相除后剩下的数
      int a = 10;
      int b = 3;
      
      System.out.println(a%b);
      
      //运行结果为:
      1
      
    • 一元运算符/单目运算符

//上面的加减乘除都需要至少两个数计算,而这里的只需一个数就够了
//所以 自增 和 自减 也叫做:一元运算符/单目运算符

        //++[自增:自己增加+1]、--[自减:自己减少-1]
        //先跟着写代码
        int a = 3;
        int b = a++;
        int c = ++a;

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

        //运行结果为:
        5
        3
        5

        //发现没?明明 a 被赋值了3,结果三行输出下来 a 居然是5!
        //后面两个运行结果就更不用说了,程序小白的脑子是否已经成一锅浆糊了
        //别慌,带着你一脑子浆糊...呸!带着你满头的疑问,继续往下看

//咱们试试这样:
        int a = 3;

        int b = a++;    
		//执行完这行代码后,是先给b赋值(b=3),再自增(遇到下一个 a 时 +1)(先用再加)
        System.out.println(a);
		//这里可以先输出现在的 a 看一下,a = 4 (没懂的再看一遍上一行注释)

        int c = ++a;
		//执行完这行代码前,是先给a自增(这里的a:4 +1),再赋值(c=5)(先加再用)

        System.out.println(a);//这里运行输出结果时 a 就是5
        System.out.println(b);//上面已有讲解,多看几遍写写代码,相信你可以理解的!
        System.out.println(c);

        //运行结果为:
        4	//这是29行输出的a
            
		5
		3
		5

        /*
        a++的值为4,但先赋的值是a(a=3)(b 输出就为3了),然后自增(a)+1,(a)变成了4,
        到c的时候先自增后在(a=4)+1,最后的结果(a)就是5了,
        最后又赋值给了c,所以(c 输出就为5),
        a最后的结果就是5,请不要纠结第一次的a=3,那个只是初始值
        */
		
        //现在各位理解了吧,现在回到自增自减的开始,再看看? 很好理解咯
            
        //a++先赋值再自增,++a先自增再赋值

拓展知识:

​ 幂运算 2^3

​ 2* 2 *2 = 8 (很多运算,需要工具类来操作)-

double pow = Math.pow(2, 3);
System.out.println(pow);
  • 赋值运算符:=

    • a = 10;将右边的值,放进左边的里面(赋值)
  • 关系运算符:>、<、>=、<=、==、!=、instanceof

    • 大于、小于、大于等于、小于等于、等于(Java中的等于是用"=="表达)、不等于
    //关系运算符返回的结果: 正确、错误  (布尔值)
    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);
    
    //运行结果为:
    false 	
    true	//正确
    false	//错误
    true
    
  • 逻辑运算符:&&、||、!

    • 与【两个条件都需要满足】、或【两个条件满足一个就可以】、
      非【获取反向条件:不是这个条件(那就一定是另一个条件)】
    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));//逻辑非运算:如果是真,则为假,如果是假,则为真
    
    //运行结果为:
    a&&b:false
    a||b: true
    !(a&&b): true
    
        
    //短路运算
    int c =5;
    
    boolean d= (c<4)&&(c++<4);
    //这一行代码执行了c++(6)不小于4,为false,所以这里就会终止不再执行
    
    
    System.out.println(d);
    System.out.println(c);
    
    //运行结果为:
    false
    5
    
  • 位 运算符:&、|、^、~、>>、<<、>>>

    • //不要轻易的去用位运算符(容易出错)
      A = 0011 1100
      B = 0000 1101
      
      A&B = 0000 1100   "&"如果AB上下相对应位都是1,则结果为1,否则为0
      A|B = 0011 1101   "|"如果AB上下相对应位都是0,则结果为0,否则为1
      ^B  = 0011 0001   "^"如果AB上下相对应位都相同,则结果为0,否则为1
      ~B  = 1111 0010   "~"与B相对应位都相反,都是0,则结果为1,都是1,则结果为0
      
      
  • 条件运算符:?、:

    //三元运算符:
    //如果x==true,结果为y,否则结果为z(x是条件y为真z为假)
    //x ? y z
    
    
    int score = 80;
    
    String type = score < 60 ? "不及格":"及格";
    
    //代码解释:score也就是成绩的意思,判断 成绩小于60,就是"不及格","不及格"赋值到type,相反,如果成绩大于60,就"及格",赋值到type ,因为赋值的是字符串所以用String类型
    
    System.out.println(type);
    
    //运行结果:自己去试试就知道啦
    
    
    //再次总结:String类型的type变量是用来接收 判断条件(成绩大于60或小于60)后返回的字符串(及格或不及格)
    
  • 扩展赋值运算符:+=、-=、*=、/=

    (嘿嘿嘿~ 熟练应用方便摸鱼,新手可了解,不建议常用(前期还是要好好打基础滴))
    
    int a = 10;
    int b = 20;
    
    a += b;//a = a+b  (a+b之后再把结果赋值给a)
    System.out.println(a);
    
    a -= b;//与上同理,只是运算符号换了 (a-b之后再把结果赋值给a)
    System.out.println(a);
    
    //运行结果为:
    30
    10
        
    
    //字符串连接符: +
    //(在这个连接符号前面只要出现了string类型(字符串类型)string类型会把后面的操作数后的其他操作数都转为string,再进行连接)
    
    System.out.println(a+b);
    
    //(面试题)
    System.out.println(""+a+b);//虽然没在""中输入,但是请回看上行注释
    System.out.println(a+b+"");//如果string类型放在后面,其前面的操作数则不会被转换
    
    运行结果为:
    1020	//这是都转为string,再进行连接的结果
    30
    

你可能感兴趣的:(java,开发语言,青少年编程)