JAVA基础3——运算符

    xiaoxiao2023-11-27  154

    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);//键盘录入三个数据,获取这三个数据中的最大值 } }

    输出结果:

    最新回复(0)