一起学JAVA基础之运算符
作者:程序媛?泡泡 发布时间:2023-11-06 23:19:01
1 运算符
1.1 概述
运算符 用于连接 表达式 的 操作数,并对操作数执行运算。
例如,表达式num1+num2,其操作数是num1和num2,运算符是”+”。
在java语言中,运算符可分为5种类型:
算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符。
根据操作数的不同,运算符又分为单目运算符、双目运算符和三目运算符。
单目运算符只有一个操作数,双目运算符有两个操作数,三目运算符则有三个操作数。
位运算符涉及到二进制位的运算,在java 程序中运用不是很多。
1.2 运算符速查表
1.3 练习:测试自增自减
创建包: cn.tedu.basic
创建类: TestOperator.java
package cn.tedu.basic;
/**本类用于测试取余运算符*/
public class TestOperator {
//0.创建程序的入口函数main
public static void main(String[] args) {
//1.测试除法与取余数
System.out.println(25 / 10);//2
System.out.println(25 % 10);//5
//2.练习1:获取一个两位数59的十位与个位
int x = 59;
System.out.println(x/10);//打印十位,5
System.out.println(x%10);//打印个位,9
//3.练习2:获取一个三位数159的百位、十位与个位
int y = 159;
System.out.println(y / 100);//打印百位
System.out.println(y / 10 % 10);//打印十位
System.out.println(y % 10);//打印个位
//4.测试自增自减运算符
/** 前缀式:符号在前:++a --a ,先改变变量本身的值,再使用,比如打印
* 后缀式:符号在后: a++ a--,先使用,再改变变量本身的值
* ++:相当于给变量本身的值+1
* --: 相当于给变量本身的值-1*/
System.out.println("我是一个无情的分界线");
/**普通的四则运算并不会改变变量本身的值
* 自增自减运算符才会改变变量本身的值*/
int z = 1;
System.out.println(z+4);//5
System.out.println(z);//1
int a = 1;
System.out.println(++a);//2
System.out.println(a);//2
int b = 1;
System.out.println(b++);//1
System.out.println(b);//2
int c = 1;
System.out.println(--c);//0,符号在前,先自减,再打印
System.out.println(c);//0,上面已经自减过了
int d = 1;
System.out.println(d--);//1,符号在后,先打印,再自减
System.out.println(d);//0,打印过后,自减成0
//之前的代码会对后面的代码产生影响,c的值是0
System.out.println(c);//0
System.out.println(--c-c-c--);//1,-1-(-1)-(-1)=1
System.out.println(c);//-2,经历了两次自减,所以0-2=-2
}
}
1.4 练习:测试逻辑运算符
创建包: cn.tedu.basic
创建类: TestOperator2.java
package cn.tedu.basic;
/**本类用于测试逻辑运算符*/
public class TestOperator2 {
public static void main(String[] args) {
/**与:全真才真*/
System.out.println("测试单与:");
System.out.println(true & true);
System.out.println(true & false);
System.out.println(false & true);
System.out.println(false & false);
System.out.println("测试双与:");
System.out.println(true && true);
System.out.println(true && false);
System.out.println(false && true);
System.out.println(false && false);
/**或:全假才假*/
System.out.println("测试单或:");
System.out.println(true | true);
System.out.println(true | false);
System.out.println(false | true);
System.out.println(false | false);
System.out.println("测试双或:");
System.out.println(true || true);
System.out.println(true || false);
System.out.println(false || true);
System.out.println(false || false);
}
}
1.5 练习:求两数的最大值
创建包: cn.tedu.basic
创建类: TestMaxNum.java
package cn.tedu.basic;
import java.util.Scanner;
package cn.tedu.basic;
import java.util.Scanner;
/**需求:接收用户输入的两个整数,并比较输出这两个数的最大值*/
public class TestMaxNum {
public static void main(String[] args) {
//1.提示用户输入
System.out.println("请输入您要比较的第一个整数:");
//2.接收用户输入的整数,并把这个值交给变量a来保存
int a = new Scanner(System.in).nextInt();
System.out.println("请输入您要比较的第二个整数:");
int b = new Scanner(System.in).nextInt();
//3.比较接收两个数,使用三元运算符
/**1 ? 2 : 3
* 1是表达式,若1的结果为true,结果取2位置,若1的结果为false,结果取3位置
* */
//4.定义变量max来保存比较的最大值
int max = a > b ? a : b;
//5.打印最大值
System.out.println("两个数的最大值是:"+max);
/**思考题:如何判断3个数的最大值? int max = a>b?(a>c?a:c):(b>c?b:c);*/
}
}
1.6 练习:求平年闰年
创建包: cn.tedu.basic
创建类: TestYear.java
需求:接收用户输入的年份,判断是平年还是闰年
需求:接收用户输入的年份,判断是平年还是闰年
package cn.tedu.basic;
import java.util.Scanner;
/**
* 需求:接收用户输入的年份,判断是平年还是闰年
* 如果年份是闰年,需要满足下面两个条件之一:
* 条件1:能被4整除,并且不能被100整除
* 条件2:能被400整除
* */
public class Test3_Year {
public static void main(String[] args) {
//1.提示并接收用户输入的年份
System.out.println("请输入您要判断的年份:");
int year = new Scanner(System.in).nextInt();
//2.定义一个变量用来保存结果
String result = "平年";//默认值是平年,假设每年都是平年
//3.判断用户输入的年份是否满足闰年的条件
/**解决方案1*/
/**条件1:能被4整除,并且不能被100整除*/
//if(year % 4 == 0) {//能被4整除
//if(year %100 != 0) {//不能被100整除
//result = "闰年";//符合闰年的条件1,修改结果为闰年
//}
//}
///**条件2:能被400整除*/
//if(year % 400 == 0) {//能被400整除
//result = "闰年";//符合闰年的条件2,修改结果为闰年
//}
/**解决方案2*/
/**判断结构 if(判断条件){满足判断条件以后执行的代码} */
//if(条件1 || 条件2){是闰年 }
//if((小条件1 && 小条件2) || 条件2){ 是闰年 }
//if((能被4整除 && 不能被100整除) || 能被400整除){ 是闰年 }
if((year % 4 == 0 && year %100 != 0) || year % 400 == 0){
result = "闰年";//符合闰年的条件,修改结果为闰年
}
System.out.println(year+"年是"+result);
}
}
2 拓展补充:
2.1 总结1:算术运算符之自增自减运算符
a是操作数,++是自增运算符,- -是自减运算符,自增和自减运算符即可以放在变量的前面,也可以放在变量的后面,例如:a++、++a、a- -、- -a等。
自增(++):将变量的值加1
分前缀式(如++a)和后缀式(如a++)。前缀式是先加1再使用;后缀式是先使用再加1。
自减(- -):将变量的值减1
分前缀式(如- -a)和后缀式(如a- -)。前缀式是先减1再使用;后缀式是先使用再减1。
2.2 总结2:逻辑运算符
逻辑运算符连接两个关系表达式或布尔变量,用于解决多个关系表达式的组合判断问题
注意逻辑运算符返回的运算结果为布尔类型
通常,我们用0表示false,用1表示true
与:表示并且的关系
&单与: 1 & 2 ,结果想要是true,要求1和2都必须是true
&&双与(短路与):1 && 2 ,当1是false时,2会被短路,提高程序的效率
或:表示或者的关系
|单或: 1 | 2,结果想要是true,要求1和2只要有一个为true就可以
||双或(短路或):1 || 2,当1是true时,2会被短路,提高程序效率
2.3 总结3:优先级控制
当一个表达式包含多个运算符时,就需要考虑运算符的优先级,优先级高的运算符先参与运算,优先级低的运算符后参与运算。在实际的开发中,不需要特别去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方使用小括号辅助进行优先级管理。
通常优先级由高到底的顺序依次是:1. 括号级别最高,逗号级别最低;
2. 单目 > 算术 > 位移 > 关系 > 逻辑 > 三目 > 赋值。
3. 除了单目运算符、赋值运算符和条件运算符,其他的运算符都是从左到右结合的。
来源:https://blog.csdn.net/weixin_43884234/article/details/115361956


猜你喜欢
- 本文实例讲述了Android编程解析XML文件的方法。分享给大家供大家参考,具体如下:前言在学习Android的Framework层源码时,
- 这篇文章主要介绍了spring boot 全局异常处理方法汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 一、啥是Fluent-Mybatis与Mybatis-Plus类似,是对Mybaits进一步的封装,使之语法简洁明了,更重要的是不需要在自主
- 之前用View Pager做了一个图片切换的推荐栏(就类似与淘宝、头条客户端顶端的推荐信息栏),利用View Pager很快就能实现,但是一
- 本文实例讲述了C#直线的最小二乘法线性回归运算方法。分享给大家供大家参考。具体如下:1.Point结构在编写C#窗体应用程序时,因为引用了S
- 如果您要显示敏感数据,例如。钱包金额,或者只是当登录表单显示插入的密码清晰时(想想眼睛图标..),当您不在应用程序中时,您必须隐藏敏感数据。
- 之前讲到了自定义Adapter传递给ListView时,因为ListView的View回收,需要注意当ListView列表项中包含有带有状态
- 本文实例为大家分享了C#实现图形界面的时钟的具体代码,供大家参考,具体内容如下秒针有跳跃两个格子问题,主要是算法耗时没考虑在TimeTick
- 在Android程序开发中我们经常遇到四种数据存储方式,每种存储方式都各有不同;以下我分别列举了Android开发中的不同存储方式的特点一,
- Java 8的18个常用日期处理一、简介伴随lambda表达式、streams以及一系列小优化,Java 8 推出了全新的日期时间API。J
- 想用java做一个像windows里一样的txt编辑软件,涉及到字体设置选项卡,在网上找了很久都没找到,就生气啦自己写一个,现在贴这里分享一
- 本文实例为大家分享了C语言实现通讯录小项目的具体代码,供大家参考,具体内容如下编写程序实现通讯录的基本功能,可以做到增,删,查,改,打印通讯
- 本文实例讲述了Android编程实现Listview点击展开和隐藏的方法。分享给大家供大家参考,具体如下:代码较多,所以找关键点大家贴出来,
- 为什么需要方法回调?方法回调是功能定义和功能分离的一种手段,是一种松耦合的设计思想。在JAVA中回调是通过接口来实现的。作为一种系统架构,必
- 本文实例讲述了Java实现数组转字符串及字符串转数组的方法。分享给大家供大家参考,具体如下:字符串转数组使用Java split() 方法s
- 注解是 JDK 5.0 引入的一种注释机制。注解可以作用在类型(类、接口、枚举等)、属性、方法、参数等不同位置,具体的 JDK
- java返回json请求中文变成问号原来在个人项目时,用layui的数据表格获取数据时,不会出现中文变问号问题后来换了个项目,发现返回的js
- 四大函数式接口新时代的程序员:lambda 表达式,链式编程,函数式接口,Stream 流式计算函数式接口: 只有一个方法的接口@Funct
- 大家好,在这篇文章中,我们将学习如何添加动画,同时从一个页面到其他在 Flutter。我们将覆盖不同类型的动画和实现基本动画 Flutter
- 一、项目需求二、项目思路1、菜单制作2、中奖号码生成 getNumber (随机数 Math.random)3、购买号码和中奖号码比对 生成