java基础—第二章、运算符
目录
第一节、算术运算
java语言中常用的算术运算符有5种,如下
运算符 | 含义 |
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 取模运算 |
其中+、-、*运算符都容易理解和数学中的相同,需要注意的是除法和取模运算。
一.除法运算符
在除法运算中,0作为除数的情况,会根据类型的不同做处理。对于整型数据,它会出现异常。但对于浮点数类型,将会得到一个无穷大值或者NaN,不建议用0作为除数。
注意,当除法运算的两边操作数,均为整型时,结果是取整,去掉小数部分。
int a;
a = 5 / 3; //1
system.out.println(a);
二.取模运算符
取余(取模),意为取余数,可用于整数、char,也可用于浮点数,但结果也将是浮点数。
123.5 % 4 //结果为 3.5
123 % 4 //结果为3
取模运算可以用于判断奇偶数,素数,最大公约数等
//奇偶数判断
int num = 22;
if(num % 2 ==0) //对2取模,余数为0,为偶数,否则为奇数
System.out.println(num+"是偶数");
else
System.out.println(num+"是奇数");
三.自增和自减运算符
int x = 5, y = 20;
int z1 = x ++; //后缀、先使用,z1 = 5,x = 6;
int z2 = ++ y; //前缀、先自增,z2 = 21,y = 21;
System.out.println(x); //6
System.out.println(y); //21
System.out.println(z1); //5
System.out.println(z2); //21
结论:
- 变量无论是前置还是后置运算其结果一定为+1;
- 只在使用它或者关于它表达式时候考虑其前置和后置规则。
第二节、关系运算符
包含: > < <= >= == !=
运算符 | 名称 | 示例 | 功能 |
< | 小于 | a < b | a小于b时返回true,否则返回false |
<= | 小于等于 | a <= b | a小于等于b时返回true,否则返回false |
> | 大于 | a > b | a大于b时返回true,否则返回false |
>= | 大于等于 | a >= b | a大于等于b时返回true,否则返回false |
== | 等于 | a == b | a等于b时返回true,否则返回false |
!= | 不等于 | a != b | a不等于b时返回true,否则返回false |
其中 > < <= >= 四个比较好理解一点。 == 、 !=应当注意。比较结果为逻辑值false 或true
- == 代表精确比较是否相等,注意要和赋值号=区分开
- 前四种关系运算符的优先级相同,后两种相同,前四种高于后两种
- 关系运算符的优先级低于算术运算符
- 关系运算符的优先级高于赋值运算符
- 前四种关系运算符的操作数不能是Boolean类型,后两种可以。
int num1 = 12;
int num2 = 21;
num1 > num2 //false
num1 < num2 //true
num1 >= num2 //false
num1 <= num2 //true
num1 == num2 //false
num1 != num2 //true
第三节、逻辑运算符
符号 | 名称 | 功能说明 |
! | 非 | 只操作一个数据,对数据取反 |
& | 与 | 两个条件同时为true才为true,否则为false |
| | 或 | 两个条件有一个为true,则为true,否则为false |
^ | 异或 | 两个条件真值不同,则异或结果为true,否则为false |
&& | 短路与 | 同&,两个条件同时为真,结果为true,否则为false |
|| | 短路或 | 两个条件有一个为true则为true,否则为false |
特别说明:
短路与&&和短路||是按照“短路”的方式进行求值的,也就是说,如果第一个表达式可以判断出整个表达式的值,就不进行后面的运算了。
一.逻辑运算&&、||、!
这里用0代表false,1代表true
变量ab | 变量b | a && b | a || b | !a |
0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 0 |
二.使用逻辑运算符
//使用逻辑运算符
//与
int s = 80;
boolean res1 = s >= 70 && s <= 90; //true
boolean res2 = s <= 60 && s >= 50; //false
//或
boolean f = fasle;
int i = 100;
boolean res3 = f || (i >= 0 && i < 10); //false
boolean res4 = f || (i >= 50 && i <= 100); //true
//非
boolean res5 = ! f ; //true
boolean res6 = f || !(i < 10) //true
三.“短路逻辑”——混合表达式
如果第一个表达式可以判断出整个表达式的值,就不进行后面的运算了。结合前面的自增自减举例:
int a = 56;
boolean a1 = a > 60 && a ++ < 90; //flase
System.out.println(a1);
问题1:问a的值是多少?
a的值最终为56,因为与运算的操作数中,第一个表达式 a > 60为false,&&运算,一假则假,后面的表达式就不用算了。
int a = 56;
a1 = a < 60 || ++ a > 30; //true
System.out.println(a1);
问题2:问a的值是否发生变化?
a的值最终没有变化还是为56,因为或运算的操作数中,第一个表达式 a < 60 为true,||运算,一真则真,后面的表达式就不用算了。
- 与运算: 一假必假 指:当第一个表达式为假时后面的表达式就不会再取运算了
- 或运算: 一真必真 指:当第一表达式为真时后面的表示式不参与运算
第四节、赋值运算
一.赋值运算符“=”
int x,y,c;
x = y = c = 100;
//将100赋值给c --> b = (c = 100)运算符
二.复合赋值运算符
+=、-=、*=、/=、%=;同算术运算法的操作,知识多了一个赋值。
复合赋值运算符
运算符 表达式(a = 10) 计算 结果 += a += 5 a = a + 5 15 -= a -= 5 a = a - 5 5 *= a *= 5 a = a * 5 20 /= a /= 5 a = a / 5 2 %= a %= 5 a = a % 5 0
第五节、字符串连接符
-
双引号括起来的内容就是字符串的直接量
//1.字符串类型:String
String s = "可以任意写,写什么都对";//双引号括起来的内容就是字符串的直接量
//字符串连接符+
int score = 85;
String result = "该学生的分数为:"+score; //连接
System.out.println(score);
System.out.println(result);
//2.字符串拼接符的扩展
String res = "";
System.out.println(res + 100);// 100
System.out.println(100 + res);//100
System.out.println(100 + res + 200);//100 200
System.out.println(100 + 200 + res);//300
System.out.println(res + 100 + 200);// 300
System.out.println(100 + 200 + res + 300 + 400);//300 300400
- 1. 主要看字符串的位置,字符串与其他类型或字符串类型,那么“+”一定为拼接
- 2. 如果是同类型先相加,那么“+”为运算符,再去拼接其他字符串。
第六节、三目运算符(重点)
一.使用三目运算符(条件运算符)
String s = 65 > 60 ? "及格" : "不及格";//及格
二.三目的嵌套
int a = -3;
String r = a > 0 ? "正数" : (a == 0 ? "0" : "负数");//负数
相关文章
- Java 对象和类
- Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介
- 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制
- java基础—Objcet中的equals方法重写
- java基础将一个int数组转换成一个字符串
- java并发面试题(一)基础
- Java基础面试题
- 零基础,三个月内,找到??? java后端开发工作
- 备战金九银十!【Java 面试小抄】涵盖当下最时新热门技术点,学完 offer 得拿到手软~
- 最新秋招,Java八股文!含答案,JAVA核心知识点最详细版(面试必备)
- Java基础篇——从入门到入土
- 第30节:Java基础-内部类
- 第二十四节:Java语言基础-讲解数组的综合应用
- 第二十二节:Java语言基础-详细讲解位运算符与流程控制语句
- 第二十二节:Java语言基础-详细讲解位运算符与流程控制语句
- 第二十一节:Java语言基础-关键字,标识符,注释,常量和变量,运算符
- 恶补java基础 位运算符
- Java基础语法:6. Java运算符
- Java中abstract class 和 interface 的解释和他们的异同点(转)
- Java基础之关键字
- JDK 13 都已经发布了,Java 8 依然是最爱
- Java | 韩顺平 循序渐进学Java自用笔记---OOP基础 [ 更新中 ]
- 当MySQL想恋爱,java和navicate抢着做媒婆 ------ java连接MySQL数据库 & navicat for MySQL 连接
- 【转】Java学习---线程间的通信
- 【HarmonyOS】【JAVA UI】 HarmonyOS如何集成华为分享
- 深入理解Java虚拟机06--虚拟机字节码执行引擎
- java实现后台自动发邮件功能
- 蓝桥杯VIP试题 之 基础练习 矩阵乘法 - JAVA
- 狂神说笔记——Java SE基础02
- 第5周编程:零基础学Java
- Java小白入门200例62之java中日期查询常用实例
- VeriCode 智能验证码快速集成,Java图形验证码支持彩色、gif、中文、英文、算术等类型,贝塞尔曲线作为干扰线,可用于Java Web、JavaSE等项目,10种漂亮的内置字体,不依赖系统字体