Com.Java.Basis第三课《Java中的运算符你了解多少呢》
在Java的世界中运算符分为以下内容:
- 赋值运算符:将取到的值赋值给变量
- 算术运算符:+ - * / %
- 比较运算符:> < == >= <= !=
- 自+自-运算符 ++a a++ b-- -bb
- 逻辑运算符 && || !
- 三元运算符 条件的式?值一:值二
- 位运算
位运算:
@1&
按位与
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
@2|
按位或
两个相应的二进制位中只要有一个为1,该位的结果值为1
@3^
按位异或
若参加运算的两个二进制位值相同则为0,否则为1
@4~
取反
~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1
@5<<
左移
用来将一个数的各二进制位全部左移N位,右补0
@6>>
右移
将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数, 高位补0
代码实操:
package com.JavaBasicsDemo3; import java.util.Scanner; public class Operator { public static void main(String[] args) { /** * 赋值运算符 */ int a, b, c, d; a = 12; b = 34; c = a + b; d = a * b; System.out.println("运行结果"); System.out.println(a + " " + b + " " + c + " " + d); /** * 算术运算符 */ int aa = 100; int bb = 5; System.out.println(aa + bb); System.out.println(aa - bb); System.out.println(aa * bb); System.out.println(aa / bb); System.out.println(aa % bb);//取余数 /** * 比较运算符 */ int cc = 12; int dd = 23; System.out.println(cc > dd); System.out.println(cc < dd); System.out.println(cc >= dd); System.out.println(cc <= dd); System.out.println(cc = dd); System.out.println(cc == dd); System.out.println(cc != dd); /** * ++:一元运算符,表示自增1 * 前置++:++a,先自增1,然后再做运算 * 后置++:a++,先做运算,再自增1 * --:一元运算符,表示自减1 * 前置--:--a,先自减1,然后再做运算 * 后置--:a--,先做运算,然后再自减1 * 注意:算数运算符的优先级要高于赋值运算符 */ /** * 自+自-运算符 * 前置和后置的区别 * */ //++ int g = 13; System.out.println("开始前" + g); int gg = g++; System.out.println("运行中" + gg); int ggg = ++g; System.out.println("结果为" + ggg); System.out.println(gg); System.out.println(ggg); //-- int kk = 11; System.out.println("开始前" + kk); int kkk = kk--; System.out.println("运行中" + kkk); int kkkk = --kk; System.out.println("结果为" + kkkk); System.out.println(kkk); System.out.println(kk); /** * 逻辑运算符 * 与或非 & | ! */ Scanner sc=new Scanner(System.in); //scanner就是从键盘键入的意思 System.out.println("请输入要判断的年份:"); int year = sc.nextInt(); if (year%4==0&&year%100!=0||year%400==0){ System.out.println(year+"是闰年"); } else{ System.out.println(year+"不是闰年"); } } public static void Operator(long year){ } }
package com.JavaBasicsDemo3; /** * 三元运算符 * 条件运算符(三元运算符): * 格式: 操作数1 ? 操作数2:操作数3 * 是什么什么的,如果是的话,取冒号左边的内容,如果不是的话,取冒号右边的内容; * 1、操作数1必须是boolean类型的数据 * 2、当第一个操作数为true时,整个表达式的结果为 冒号左边的这个操作数2,否则,整个表达式的结果为冒号右边的这个操作数3 * 3、操作数2与操作数3的数据类型必须相同 int a = true?1:2 */ public class Operator2 { public static void main(String[] args) { int a = 20; int b = 10; int max = a > b ? a : b; System.out.println(max); } }
package com.JavaBasicsDemo3; /** * & * 按位与 * 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0 * | * 按位或 * 两个相应的二进制位中只要有一个为1,该位的结果值为1 * ^ * 按位异或 * 若参加运算的两个二进制位值相同则为0,否则为1 * ~ * 取反 * ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1 * << * 左移 * 用来将一个数的各二进制位全部左移N位,右补0 * >> * 右移 * 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数, 高位补0 * */ import java.util.Arrays; public class Operator3 { public static void main(String[] args) { //俩个数字相同为0 int[]a={1,1,2,2,3,3,4,5,5,6,6}; int x=0; for (int i : a) { x=x^i; } System.out.println("输出结果为落单的那个数"); System.out.println(x); System.out.println("============================================================"); int[] n = new int[]{100,55,66,77,88}; // 定义一个空的值 int temp; for (int i = 0; i < n.length-1; i++) { for (int j = 0; j <n.length-1; j++) { if(n[j]>n[j+1]){ temp = n[j]; n[j] = n[j+1]; n[j+1] = temp; } } } System.out.println("冒泡排序的思想是两个两个比较大的在后面小的在前面"); System.out.println(Arrays.toString(n)); } }
package com.JavaBasicsDemo3; /** * ++:一元运算符,表示自增1 * 前置++:++a,先自增1,然后再做运算 * 后置++:a++,先做运算,再自增1 * --:一元运算符,表示自减1 * 前置--:--a,先自减1,然后再做运算 * 后置--:a--,先做运算,然后再自减1 * 注意:算数运算符的优先级要高于赋值运算符 */ public class Operator4 { public static void main(String[] args) { //案例一 int a=10; System.out.println("第一次a值为==="+a+"的值"); int b=a++; System.out.println("第二次b值为==="+b+"的值"); int c=a++ ; System.out.println("第三次c的值为==="+c+"的值"); int d=++c; System.out.println("第四次d的值为==="+d+"的值"); int e=c+d; System.out.println("第五次e的值为==="+e+"的值"); //案例二 int aa=1; int bb=aa++ + ++aa +--aa+aa--; int cc=bb++ + ++bb- bb++ + ++b; int dd=cc++ + ++cc +34+bb++ + ++bb; System.out.println("获得的bb值为"+bb); System.out.println("获得的cc值为"+cc); System.out.println("获得dd的值为"+dd); } }