JAVA基础3——运算符

运算符

运算符就是对常量和变量进行操作的特号。

运算符的分类
算术运算符,赋值运算符,比较(关系或条件)运算符,逻辑运算符,位运算符,三目(元)运算符

算数运算符

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

  • +号在java中有三种作用,代表正号,做加法运算,字符串的连接符
  • 整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
  • /获取的是除法操作的商,%获取的是除法操作的余数
  • %
    • 左边小于右边,结果是左边
    • 左边等于右边,结果是0
    • 左边大于右边,结果是余数
    • 余数的正负,取决于左边的正负
    • 应用:%2 (结果是0,1)
public class Dome_Operator {					//operator运算符
    public static void main(String[] args){
        System.out.println(10/3);				//整数相除结果只能是整数
        System.out.println(10/3.0);				//如果想得到小数,把其中一个数变成小数
        System.out.println(-5% 5);
        System.out.println(13%-5);
    }
}

输出结果:
在这里插入图片描述

  • ++,--
    • 单独使用,放在操作数前后结果一样。 a++;++a;

    • 参与操作(运算,赋值,打印)时,放在操作数的前面,数据本身改变,再参与操作。
      int a = 12; b = ++a; //a=13,b=13;

    • 参与操作(运算,赋值,打印)时,放在操作数的后面,数据先进行临时存储,数据本身改变,最后将存储的数据进行赋值。
      int a = 12; b = a++; //a=13,b=12;

public class Dome_Operator1 {
    public static void main(String[] args) {
    int x=4;
        //  4  +  6  +  60
    int y=(x++)+(++x)+(x*10);
    System.out.println("x="+x+",y="+y);		//输出结果为x=70

    byte b = 10;
    b++;        					//b=(byte)(b+1)
    b=b+1;
    System.out.println("b="+b);		/*当byte与int进行混合运算的时候,会提升为int类型,
    								两个int相加的结果还是int,赋值给byte会损失精度*/
    }
}

注意:b++不等于b=b+1
b++相当于b=(byte)(b+1)

赋值运算符

赋值运算符:=,+=,-=,×=,/=,%=

int x = 3;		//把3赋值给int类型变量x
x += 3; 		//x = x + 3;  把左边和右边相加赋给左边。

注意:左边必须是变量

关系运算符

关系运算符 ==,!=,>,>=,<,<=
比较运算符的结果都是boolean型,也就是要么是true,要么是false

System.out.println(3==3);  结果是true
System.out.println(3!=3);  结果是false

逻辑运算符

&,|,^,!,&&,||

  • 逻辑运算符一般用于连接boolean类型的表达式或者值。
  • 表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
    • 算术表达式:a + b
    • 比较表达式:a == b(条件表达式)

& 逻辑与:有false则false。
| 逻辑或:有true则true。
^ 逻辑异或:相同为false,不同为true。
! 逻辑非:非false则true,非true则false。
&&,||

  • &&&的区别?
    • 最终结果一样。
    • &&具有短路效果。左边是false,右边不执行。
    • &是无论左边是false还是true,右边都会执行
      ||同理&&

开发中常用&&,||,!

位运算符

位运算符有&,|,^,~ ,>>,>>>,<<
&,|,^,~ 的用法
&:有0则0
|:有1则1
^:相同则0,不同则1
~:按位取反

public class Dome_Operator2 {                   //位运算符
    public static void main(String[] args){
        System.out.println(5&9);            //1
        System.out.println(5|9);            //13
        System.out.println(5^9);            //12
        /*
            0101        0101        0101
        &   1001    |   1001    ^   1001
        ----------  ----------  ----------
            0001        1101        1100
         */
        System.out.println(~5);             //-6
        /*
            00000000 00000000 00000000 00000101         5的原反补码
        ~   11111111 11111111 11111111 11111010         按位取反得到的补码
        -   00000000 00000000 00000000 00000001
        -----------------------------------------
            11111111 11111111 11111111 11111001         减一得到反码
            10000000 00000000 00000000 00000110         得到结果
        */
    }
}

位异或运算符的特点:一个数据对另一个数据位异或两次,该数本身不变。

题目:实现两个整数变量的交换

package com.fxz.studyday02;

public class Dome_Operator3 {
    public static void main(String[] args){
        //实现两个整数变量的交换
        //使用第三方变量(推荐开发使用)
        int a=10;
        int b=55;
        int temp=a;
        a= b;
        b=temp;
        System.out.println("a="+a);
        System.out.println("b="+b);
        //不使用第三方变量(有弊端)
        int m=99;
        int n=39;
        m=m+n;
        n=m-n;
        m=m-n;
        System.out.println("m="+m);
        System.out.println("n="+n);
		//不使用第三方变量,用^实现(应用于加密)
        int x=65;
        int y=34;
        x=x^y;
        y=x^y;
        x=x^y;
        System.out.println("x="+x);
        System.out.println("y="+y);
    }
}

^常用于加密

<<左移 就是将左边的数在内存中的二进制数据左移右边数的位数,右边被移空的部分补0。
相当于乘与2的移位数次幂
2<<4-----2*2^4
>>右移 右移稍微复杂一点,如果最高位是0,左边被移空的位就填入0;如果最高位是1,左边被移空的位就填入1。相当于除以2的移位数次幂
>>>无符号右移 无论最高位是1还是0,左边被移空的高位都填入0。

三元运算符

三元运算符的格式:

  • (关系表达式) ? 表达式1 : 表达式2;
    • 如果条件表达式为true,运算后的结果是表达式1;
    • 如果条件表达式为false,运算后的结果是表达式2;

键盘录入

  • :为什么要使用键盘录入数据
    • a:为了让程序的数据更符合开发的数据
    • b:让程序更灵活一下
  • 如何实现键盘录入呢?
    • 导包
      • 格式:
        import java.util.Scanner;
      • 位置:
        class上面。
    • 创建键盘录入对象
      • 格式:
        Scanner sc = new Scanner(System.in);
    • 通过对象获取数据
      • 格式:
        • int x = sc.nextInt();
  • 案例演示

    • 键盘录入练习:键盘录入两个数据,并对这两个数据求和,输出其结果
  • 案例演示

    • 键盘录入练习:键盘录入两个数据,获取这两个数据中的最大值
  • 案例演示

    • 键盘录入练习:键盘录入两个数据,比较这两个数据是否相等
  • 案例演示

    • 键盘录入练习:键盘录入三个数据,获取这三个数据中的最大值
import java.util.Scanner;                       //导入包中的类Scanner
public class Dome_Scanner {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);      //创建键盘录入对象
        System.out.println("输入第一个整数:");
        int x=sc.nextInt();
        System.out.println("输入第二个整数:");
        int y=sc.nextInt();
        System.out.println("输入第三个整数:");
        int z=sc.nextInt();
        int num=x+y;
        System.out.println("num="+num);             //键盘录入两个数据并对这两个数据求和,输出结果
        int max1=(x>y)?x:y;
        System.out.println("两数最大值为:"+ max1);  //键盘录入两个数据,获取这两个数据中的最大值
        boolean b=(x==y);
        System.out.println("两数是否相等"+ b);       //键盘录入两个数据,比较这两个数据是否相等
        int max2=(max1 > z)?max1:z;
        System.out.println("三个数最大值为:"+ max2);//键盘录入三个数据,获取这三个数据中的最大值
    }
}

输出结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值