Java基础学习二 运算符

关联博客:https://www.jianshu.com/p/f1ea17924019

运算符

1,运算符-算术运算符(++、–)

代码示例:
public class HelloWorld {
    public static void main(String[] args) {//表示定义一个公开的静态的主方法 ps:程序执行入口
        /*  方法体  */

        //++运算符可以出现在变量前,也可以出现在变量后,只要++运算结束,该变量中的值一定会自加1
        int i = 1;
        i ++;
        System.out.println(i);

        //++ 出现变量后:先做赋值运算,再对变量中保存的值进行自加1
        int a = 100;
        int b = a ++;
        System.out.println(a);//101
        System.out.println(b);//100

        //++ 出现变量前:先进行自加1,再进行赋值操作。
        int m = 20;
        int n = ++ m;
        System.out.println(m);//21
        System.out.println(n);//21

        //-- 出现变量后:先做赋值运算,再对变量中保存的值进行自减1
        int c = 100;
        int d = c --;
        System.out.println(c);//99
        System.out.println(d);//100

        //-- 出现变量前:先进行自减1,再进行赋值操作。
        int e = 100;
        int f = -- e ;
        System.out.println(e);//99
        System.out.println(f);//99
    }
}

2,运算符-关系运算符

运算符号解析运算符号解析
>大于<=小于等于
>=大于等于==等于
<小于!=不等于
  • = 是赋值运算符 ; == 是关系运算符。
  • 关系运算符的运算结果一定是布尔类型:true/false。

3,运算符-逻辑运算符

运算符号类型定义
&逻辑与两边算子都是true,结果才是true
|逻辑或两边算子只要有一个true,结果就是true
逻辑非取反,!false就是true,!true就是false,这是一个单目运算符
^逻辑异或两边算子只要不一样,结果就是true
&&短路与第一个算子执行结果是false,会发生短路与
||短路或第一个算子执行结果是true,会发生短路或
  • 逻辑运算符要求两边的算子都是布尔类型,并且逻辑运算符最终的运算结果也是布尔类型。
  • 短路与和逻辑与最终运算结果是相同的,只不过短路与存在短路现象。
  • 短路或和逻辑或最终运算结果是相同的,只不过短路或存在短路现象。
代码示例:
public class HelloWorld {
    public static void main(String[] args) {//表示定义一个公开的静态的主方法 ps:程序执行入口
        /*  方法体  */
        //运算符优先级不确定,加小括号
        System.out.println(5 > 3 & 5 > 2);//true
        System.out.println(5 > 3 & 5 > 6);//false
        System.out.println(5 > 3 | 5 > 6);//true

        System.out.println(true & true);//true
        System.out.println(true & false);//false
        System.out.println(false & false);//false

        System.out.println(true | false);//true
        System.out.println(false | false);//false
        System.out.println(!false);//true

        System.out.println(true ^ false);//true
        System.out.println(true ^ true);//false
        System.out.println(false ^ false);//false

        //逻辑与和短路与
        int x = 10;
        int y = 8;
        //逻辑与
        System.out.println(x < y & ++x < y);
        System.out.println(x);//11

        int m = 10;
        int n = 8;
        //短路与
        // m < n 结果是false,整个表达式结果已经确定是false
        // 所以后面的表达式没有在执行,这种现象称为短路现象
        // 短路与才会有短路现象,逻辑与不会存在短路现象的。
        System.out.println(m < n && ++m < n);
        System.out.println(m);//10
        /*
        // 什么情况下发生短路或?
              * 第一个表达式执行结果是true,会发生短路或
           什么情况下发生短路与?
              * 第一个表达式执行结果是false,会发生短路与
        */
    }
}

4,运算符-赋值运算符

  • 1,关于java中的赋值类运算符包括两种:

    • 基本的赋值运算符 =
    • 扩展的赋值运算符 += -= *= /= %=【求余】
  • 2,赋值类的运算符优先级:先执行等号右边的表达式,将执行结果赋值给左边的变量。

      PS/例如:
      
      byte x = 10;
      x += 5; 等同于: x = (byte)(x + 5);
     
      int y = 10;
      y += 5; 等同于: x = (int)(x + 5);
     
      long z = 10L;
      int i = 20;
      i += z;  等同于: i = (int)(z + i);
    
  • 3,扩展类的赋值运算符不改变运算结果类型,假设最初这个变量的类型是byte类型, 无论怎么进行追加或追减,最终该变量的数据类型还是byte类型。

代码示例:
public class HelloWorld {
    public static void main(String[] args) {//表示定义一个公开的静态的主方法 ps:程序执行入口
        /*  方法体  */

        // 基本的赋值运算符
        int i = 10;
        System.out.println(i);//10
        i = i + 5;
        System.out.println(i);//15

        // 扩展的赋值运算符  相同int类型运算
        i += 5;//等同于:i = i + 5;
        System.out.println(i);//20
        i -= 5;//等同于:i = i - 5;
        System.out.println(i);//15
        i *= 2;//等同于:i = i * 2;
        System.out.println(i);//30
        i /= 3;//等同于:i = i / 3;
        System.out.println(i);//10
        i %= 4;//等同于:i = i % 4;
        System.out.println(i);//2

        //----------------------不同类型运算-----------------------------------
        byte b = 10;
        //b = b + 5; //编译报错  b + 5是int类型,b是byte类型;大转小需要强制类型转换符
        b = (byte) (b + 5); //可以编译通过
        System.out.println(b);//

        byte x = 10;
        x += 5;等同于:x = (byte)(x + 5); 不等同于 x = x + 5;
        System.out.println(x);//15

        x += 128;// 等同于:x = (byte)(x + 128)
        System.out.println(x);//-113【损失精度】

        x += 10000;// 等同于:x = (byte)(x + 10000)
        System.out.println(x);//-97【损失精度】
    }
}

5,运算符-字符串连接运算符(+)

  • 关于java中的"+"运算符有两种作用:

    • 加法运算,求和
    • 字符串的连接运算
  • 当"+"运算符两边的数据都是数字的话,一定进行加法运算

    • 数字 + 数字 —> 数字【求和】
  • 当"+"运算符两边的数据只要有一个数据是字符串,一定会进行字符串运算。并且连接运算之后的结果还是一个字符串类型。

    • 数字 + “字符串” —> “字符串” 【字符串连接】
  • 在一个表达式当中可以出现多个"+",在没有添加小括号的前提下,遵循自左向右的顺序依次计算。

代码示例:
public class HelloWorld {
    public static void main(String[] args) {//表示定义一个公开的静态的主方法 ps:程序执行入口
        /*  方法体  */

        int a = 10;
        int b = 20;
        //要求在控制台输出 "10 + 20 = 30"
        System.out.println(" 10 + 20 = " + ( a + b));
        //要求在以动态的方式输出
        //b = 200;  //输出:10 + 200 = 210
        System.out.println( a + " + " +  b + " = " + ( a + b));

        int i = 10;
        String username = "adc";
        System.out.println("欢迎"+username+"回来!");
        
    }
}

6,运算符-三元运算符/三目运算符/条件运算符

  • 语法规则:

     布尔表达式 ?表达式1 : 表达式2
    
  • 当布尔表达式的结果为true,选择表达式1作为整个表达式的执行结果

  • 当布尔表达式的结果为false,选择表达式2作为整个表达式的执行结果

代码示例:
public class HelloWorld {
    public static void main(String[] args) {//表示定义一个公开的静态的主方法 ps:程序执行入口
        /*  方法体  */
        boolean sexbool = true;

        char sex = sexbool ? '男' : '女' ;
        //不知道优先级时可以这么写
        //char sex = (sexbool ? '男' : '女') ;
        System.out.println(sex);// sexbool为true输出男, sexbool为false输出女。
        System.out.println(sexbool ? '男' : '女');
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值