当前位置: 首页 > news >正文

day05_java中常见的运算符

字面量或者变量进行操作的符号就是运算符用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。

java中常用的运算符有下面几种

算术运算符

代码示例

public class Demo01Operator {public static void main(String[] args) {int a = 3;int b = 4;System.out.println(a + b);// 7System.out.println(a - b);// -1System.out.println(a * b);// 12//整数相除 不保留小数System.out.println(a / b);// 0//如果想要显示小数 使用浮点类型计算System.out.println((double) a / b);// 0.75//商*除数 + 余数 = 被除数System.out.println(a % b);// 3}
}

经典案例

public class Test {public static void main(String[] args) {//定义一个四位数 int number = 1234;//通过运算操作求出个位,十位,百位,千位System.out.println(number + " 这个四位数个位上的数字是:" + (number % 10));System.out.println(number + " 这个四位数十位上的数字是:" + (number / 10 % 10));System.out.println(number + " 这个四位数百位上的数字是:" + (number / 100 % 10));System.out.println(number + " 这个四位数千位上的数字是:" + (number / 1000 % 10));}
}

注意事项:

  • / 和 % 的区别:两个数据做除法,/ 取结果的商,%取结果的余数
  • 整数操作只能得到整数,要想得到小数,必须有浮点数参与运算
  • 求余运算,余数的符号只看被除数

“+”号的两种用法

  • 第一种:对于+两边都是数值的话,+就是加法的意思

System.out.println(1+2);//3
System.out.println(1+'a');//98
  • 第二种:对于+两边至少有一边是字符串得话,+就是拼接的意思,其结果依然是一个字符串

String str = "Java";
// String + int --> String
System.out.println(str + 520); // Java520// String + int + int --> String  + int-->String
System.out.println(str + 5 + 20); // Java520

默认情况下是从左到右进行运算,我们可以使用小括号来调整运算顺序

//默认情况下,从左到右
System.out.println("1" + 2 + 3);//123
//小括号里的先算
System.out.println("1" + (2 + 3));//15

自加自减运算

  • ++ -- 既可以放在变量的后边,也可以放在变量的前边
  • ++ 、-- 只能操作变量,不能操作字面量的 

单独使用

单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的

  • 变量前++ :例如 ++a
  • 变量后++ :例如 a++
public class Demo03Operator {public static void main(String[] args) {// 定义一个int类型的变量aint a = 3;//变量前++和变量后++,变量的结果是一样的;++a;System.out.println(a);//4a++;System.out.println(a);//5}
}

复合使用

  ++、--如果不是单独使用(如在表达式中、或者同时有其它操作),放在变量前后会存在明显区别

  • 放在变量的前面先对变量进行+1、-1,再拿变量的值进行运算
  • 放在变量的后面先拿变量的值进行运算,再对变量的值进行+1、-1
public class Demo04Operator {public static void main(String[] args) {// 其他变量放在一起使用int x = 3;int y = x++;System.out.println(x);//4System.out.println(y);//3System.out.println("==========");// 和输出语句一起int z = 5;System.out.println(z++);//5System.out.println(z);//6}
}

赋值运算符

基本赋值运算符:就是“ 

int a = 10; // 先看“=”右边,把数据10赋值给左边的变量a存储。

扩展赋值运算符

代码示例

public class Demo04Operator {public static void main(String[] args) {short s = 10;/*s = s + 10;  此行代码报出,因为运算中s提升为int类型,运算结果int赋值给short可能损失精度*/s += 10; // 此行代码没有问题,隐含了强制类型转换,相当于 s = (short) (s + 10);System.out.println(s);//20}
}

注意事项:

  • 所有的赋值运算符的 = 左边一定是一个变量  

关系运算符/比较运算符

对数据进行条件判断的符号,最终会返回的结果一定是 布尔结果(false,true)

示例

public class Demo05Operator {public static void main(String[] args) {int a = 10;int b = 10;System.out.println(a == b);  //trueSystem.out.println(a != b); // falseSystem.out.println(a > b); //  falseSystem.out.println(a >= b); // trueSystem.out.println(a < b); // falseSystem.out.println(a <= b); // true//相等判断必须是== 如果使用=是在进行赋值操作!System.out.println(a = b); // 10 }
}

逻辑运算符 

可以把多个条件的布尔结果放在一起运算,最终返回一个布尔结果

示例

public class Demo06Operator {public static void main(String[] args) {//定义变量int i = 10;int j = 20;int k = 30;//  & “与”,并且的关系,只要表达式中有一个值为false,结果即为falseSystem.out.println((i > j) & (i > k)); //falseSystem.out.println((i < j) & (i > k)); //falseSystem.out.println((i > j) & (i < k)); //falseSystem.out.println((i < j) & (i < k)); //trueSystem.out.println("--------");//  | “或”,或者的关系,只要表达式中有一个值为true,结果即为trueSystem.out.println((i > j) | (i > k)); //falseSystem.out.println((i < j) | (i > k)); //trueSystem.out.println((i > j) | (i < k)); //trueSystem.out.println((i < j) | (i < k)); //trueSystem.out.println("--------");// ^ “异或”,相同为false,不同为trueSystem.out.println((i > j) ^ (i > k)); //falseSystem.out.println((i < j) ^ (i > k)); //trueSystem.out.println((i > j) ^ (i < k)); //rueSystem.out.println((i < j) ^ (i < k)); //falseSystem.out.println("--------");// ! “非”,取反System.out.println((i > j)); //falseSystem.out.println(!(i > j)); // true}
}
短路逻辑运算符
  • 在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。
  • 同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。

示例

public class Demo07Operator {public static void main(String[] args) {int x = 3;int y = 4;System.out.println((x++ > 4) & (y++ > 5)); //falseSystem.out.println(x); // 4System.out.println(y); // 5//左边已经可以确定结果为,false 右边不参与运算System.out.println((x++ > 4) && (y++ > 5)); // falseSystem.out.println(x); // 5System.out.println(y); // 5System.out.println((x++ > 4) | (y++ > 5)); //trueSystem.out.println(x); // 6System.out.println(y); // 6//左边已经可以确定结果为 true,右边不参与运算System.out.println((x++ > 4) || (y++ > 5)); // trueSystem.out.println(x); // 7System.out.println(y); // 6}
}

三元运算符

语法格式

执行流程

  1. 首先计算关系表达式的值
  2. 如果值为true,返回表达式1的值
  3. 如果为false,返回表达式2的值

示例

/*
需求:一座寺庙里住着三个和尚,已知他们的身高分别为135cm、110cm、165cm,请用程序实现获取这三个和尚的最高身高。
*/
public class Demo08Test {public static void main(String[] args) {//1:定义三个变量用于保存和尚的身高,单位为cm,这里仅仅体现数值即可。int height1 = 135;int height2 = 110;int height3 = 165;//2:用三元运算符获取前两个和尚的较高身高值,并用临时身高变量保存起来。int tempHeight = height1 > height2 ? height1 : height2;//3:用三元运算符获取临时身高值和第三个和尚身高较高值,并用最大身高变量保存。int maxHeight = tempHeight > height3 ? tempHeight : height3;//4:输出结果System.out.println("maxHeight:" + maxHeight); //maxHeight:165}
}

运算符优先级

在表达式中,哪个运算符先执行后执行是要看优先级的,例如 “*、/” 的优先级高于”+、-” 。

示例

public class Demo09Test {public static void main(String[] args) {// 目标:看看Java是否存在优先级,大家以后需要注意优先级问题System.out.println(10 > 3 || 10 > 3 && 10 < 3); // trueSystem.out.println( (10 > 3 || 10 > 3 ) && 10 < 3); // false}
}

写代码的注意事项

  • 表达式不要太复杂
  • 先算的使用( )

相关文章:

  • python学生作业提交管理系统-在线作业提交系统
  • Hutool的`BeanUtil.toBean`方法详解
  • 自定义Widget开发:自定义布局实现
  • Spring Boot Controller 如何处理HTTP请求体
  • 力扣刷题Day 42:缺失的第一个正数(238)
  • javaStream流toMap小坑
  • 算法与数据结构 - 常用图算法总结
  • 视频编解码学习六之视频采集和存储
  • C++算法(19):整数类型极值,从INT_MIN原理到跨平台开发实战
  • 大模型备案材料解析:模型服务协议涵盖内容
  • SpringBoot+Dubbo+Zookeeper实现分布式系统步骤
  • 【hadoop】Sqoop数据迁移工具的安装部署
  • 车载网络TOP20核心概念科普
  • 如何使用极狐GitLab 软件包仓库功能托管 ruby?
  • 3.2.3 掌握RDD转换算子 - 2. 过滤算子 - filter()
  • 按摩椅的机芯类型和材质
  • vue中router和route的区别
  • 矿井设备通信破局:ModbusTCP转DeviceNet网关应用实践
  • 2025年3月青少年机器人技术等级考试(二级)实际操作真题试卷
  • 从单智到多智:深度拆解基于MetaGPT的智能体辩论
  • 习近平同瑞典国王卡尔十六世·古斯塔夫就中瑞建交75周年互致贺电
  • 来论|建设性推进缅北和平进程——中国的智慧与担当
  • 吴勇强、高颜已任南京市委常委
  • 加力、攻坚、借力、问效,上海为优化营商环境推出增量举措
  • 中方对中美就关税谈判的立场发生变化?外交部:中方立场没有任何改变
  • 陈雯出任外交部离退休干部局局长,此前为外交部办公厅副主任