运算符就是对常量和变量进行操作的特号。
运算符的分类 算术运算符,赋值运算符,比较(关系或条件)运算符,逻辑运算符,位运算符,三目(元)运算符
算数运算符:+ - × / % ++ --
+号在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;案例演示
键盘录入练习:键盘录入两个数据,并对这两个数据求和,输出其结果案例演示
键盘录入练习:键盘录入两个数据,获取这两个数据中的最大值案例演示
键盘录入练习:键盘录入两个数据,比较这两个数据是否相等案例演示
键盘录入练习:键盘录入三个数据,获取这三个数据中的最大值 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);//键盘录入三个数据,获取这三个数据中的最大值 } }输出结果: