Java程序设计基础笔记 • 【第3章 运算符与表达式】
全部章节 >>>>
本章目录
3.1 运算符(一)
(1)运算符,顾名思义就是用于计算的符号。
(2)Java 语言中的运算符
①按功能分为:赋值运算符、算术运算符、关系运算符和逻辑运算符
②按操作数的个数分类:单目运算符、双目运算符、三目运算符
(3)使用运算符时,要关注下列三个方面:
①运算符的目:运算符能连接操作数的个数称为运算符的目
②运算符的优先级:优先级是指在一个表达式中出现多个不同运算符,在进行计算时运算符执行的先后次序。
③运算符的结合方向:结合方向又称为结合性,是指当一个操作数连接两个同一优先级的运算符时,按运算符的结合性所规定的结合方向处理。
3.1.1 赋值运算符
赋值运算符为“=”,是Java语言中最简单,也是最常用的运算符。
赋值运算用于将赋值运算符右侧表达式的结果赋予赋值运算符左侧的变量。
int english = 92;
赋值运算符具有自右向左的结合性
int a,b,c; //同时声明三个变量
a = b = c = 1; //自右向左赋值
注意:赋值运算符的左侧只能为一个变量,而右侧可以是变量、常量或表达式。
3.1.2 算数运算符
运算符 |
功能 |
示例 |
+ |
加法运算 |
表达式1+2计算结果为3 |
- |
减法运算 |
表达式2-1计算结果为1 |
* |
乘法运算 |
表达式2*2计算结果为4 |
/ |
除法运算 |
表达式4/2计算结果为2 |
% |
模运算 |
表达式5%2计算结果为1 |
注意:
如果参与运算的数值都是整数,则“/”完成的是整除运算,如5/2 的值是2 而非2.5。
模运算“%”是进行除法运算后取余数,参与运算的必须是整数。
示例:使用算术运算符实现两个数字的基本四则运算。
int num1 = 5;
int num2 = 3;
int result;
result = num1+num2; // 加法运算
System.out.printf("%d + %d的结果是 %d\n",num1,num2,result);
result = num1-num2; // 减法运算
System.out.printf("%d - %d的结果是 %d\n",num1,num2,result);
result = num1*num2; // 乘法运算
System.out.printf("%d * %d 的结果是 %d\n",num1,num2,result);
result = num1/num2; // 除法运算
System.out.printf("%d / %d的结果是 %d\n",num1,num2,result);
result = num1%num2; // 求余运算
System.out.printf("%d %% %d的结果是 %d\n",num1,num2,result);
(1)在算术运算符中,还存在两个较为独特的单目运算符,分别是自增和自减
++变量名 或 变量名++
--变量名 或 变量名--
(2)自增和自减运算符分别用于使变量值自增1或自减1。
3.1.3 复合运算符
在Java语言中,可以将赋值运算符和算术运算符进行组合,从而形成复合赋值运算符,用于对变量自身执行算术运算。
运算符 |
功能 |
示例 |
+= |
加法运算 |
int a=10; a+=2 等效于a=a+2; a=12 |
-= |
减法运算 |
int a=10; a-=2 等效于a=a-2; a=8 |
*= |
乘法运算 |
int a=10; a*=2 等效于a=a*2; a=20 |
/= |
除法运算 |
int a=10; a/=2 等效于a=a/2; a=5 |
%= |
模运算 |
int a=10; a%=2 等效于a=a%2; a=0 |
当需要对变量自身进行算术运算时,建议使用复合赋值运算符,效率要远高于算术运算符。
复合赋值运算符的结合性自右向左。
例如:
int a=5;
a+=a+=5;// 等效于a=a+(a+5)
执行完毕后,变量a 的值为15。
3.1.4 实践练习(一)
3.1.5 实践练习(二)
3.2 运算符(二)
3.2.1 关系运算符
关系运算符用于比较两个变量或表达式的值的大小关系。
在Java 中,关系运算结果值为bool 类型,包括“true”或“false”。
运算符 |
功能 |
示例 |
> |
比较大于关系 |
表达式2>1 计算结果为“True” |
< |
比较小于关系 |
表达式2<1 计算结果为“False” |
>= |
比较大于等于关系 |
表达式2>=1 计算结果为“True” |
<= |
比较小于等于关系 |
表达式2<=1 计算结果为“False” |
== |
比较相等关系 |
表达式2==1 计算结果为“False” |
!= |
比较不相等关系 |
表达式2!=1 计算结果为“True” |
示例:使用关系运算符实现两个数字之间的大小比较。
int num1 = 88;
int num2 = 100;
boolean result;
result = num1>num2;
System.out.printf("%d > %d的结果为:%b\n",num1,num2,result);
result = num1>=num2;
System.out.printf("%d >= %d的结果为:%b\n",num1,num2,result);
result = num1<num2;
System.out.printf("%d < %d的结果为:%b\n",num1,num2,result);
result = num1==num2;
System.out.printf("%d == %d的结果为:%b\n",num1,num2,result);
result = num1!=num2;
System.out.printf("%d != %d的结果为:%b\n",num1,num2,result);
3.2.2 逻辑运算符
使用关系运算符可以比较程序中两个值的大小关系,但在程序中经常需要从多个比较关系中得到综合判断的结果。
运算符 |
功能 |
示例 |
&& |
与运算,即同时成立,缺一不可 |
a>b&&c>d:只有左右两个表达式的值都为true, 整个结果才为True。只要有一个表达式为false,则整个表达式为False |
|| |
或运算, 即两者中有一个成立即可 |
a>b||c>d:左右两个表达式中只要有一个成立就为true,只有两个都为false才为false |
! |
非运算,取反 |
!(a>b):如果表达式a>b 为false,则进行取反运算后为true;如果表达式a>b为true,则进行取反运算后为false |
示例:要想进入微软亚洲研究院工作,必须是研究生毕业,且从事软件开发两年以上的工作经验
如果要描述入职微较亚洲研究院的条件,则伪代码为:
(学历>=硕士)&&(工作年限>=两年)
如果入职微软亚洲研究院的条件变为“学历为硕士以上或工作年限两年以上”,则伪代码为:
(学历>=硕士)(工作年限>=两年)
如果入职微软亚洲研究院的条件变为“学历不能为硕士以下”,则伪代码为:
!(学历<硕士)
int degree, workyear;
degree = 3; //degree 1代表本科,2代表硕士,3代表博士
workyear = 3;
boolean result=(degree>=2)&&(workyear>=2);
System.out.println("博士并且工作3年的入职评判结果为:"+result);
degree = 2;
workyear = 1;
result = (degree >= 2) && (workyear >= 2);
System.out.println ("硕士并且工作1年的入职评判结果为:" + result);
degree = 1;
workyear = 1;
result = (degree >= 2) && (workyear >= 2);
System.out.println("本科并且工作1年的入职评判结果为:" + result);
3.2.3 三母运算符
三目运算符可以快速的帮我们实现条件的判断,语法如下:
布尔表达式?表达式1:表达式2
条件表达式的结果由布尔表达式决定,如果布尔表达式的值为true,则返回表达1的值,否则返回表达式2的值。
示列:使用三目运算符实现成年与否的判断
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的年龄");
int age = sc.nextInt();
System.out.println(age>=18?"成年":"未成年");
注意:
- 条件运算符的优先级低于关系运算符和算术运算符,高于赋值运算符。
- JAVA中条件运算表达式中的关系表达式值的类型必须为布尔类型,只能是true或false。
- 条件运算符的结合性是右结合性。
3.2.4 实践练习
3.3 运算符优先级和表达式
3.3.1 表达式
表达式和运算符:
计算机程序在处理数据时会进行大量的计算,而数据的运算则需要借助运算符和表达式来完成。
表达式是指由操作数和运算符组成的用于完成某种运算功能的语句
其中Y、X、Z、10 称为操作数,=、*、+ 称为运算符。
3.3.2 运算符和优先级
在Java语言中进行表达式求值时,同一优先级的运算符,运算次序由结合性决定,不同优先级的运算符,运算次序由优先级决定。
优先级 |
运算符 |
结合性 |
1 |
() |
从左到右 |
2 |
!、++、-- |
从右到左 |
3 |
* 、/、 % |
从左到右 |
4 |
+ 、- |
从左到右 |
5 |
> 、<、 >=、 <= |
从左到右 |
6 |
==、 != |
从左到右 |
7 |
&& |
从左到右 |
8 |
|| |
从左到右 |
9 |
= 、+=、 -=、 *=、 /=、 %= |
从右到左 |
3.3.3 实践练习
3.4 数据类型转换
- 不同类型的数据在进行混合运算时需要进行类型转换,即将不同类型的数据转换为同种类型的数据后再进行计算。
- 针对于值类型的数据,类型转换主要包括以下两种形式:自动类型转换、强制类型转换
3.4.1 自动类型转换
条件1:满足自动类型转换的条件
两种类型要兼容:数值类型(整型和浮点型)互相兼容
目标类型大于源类型: 例如:double 型大于 int 型
条件2:操作数向大操作数类型转换,计算结果也为表达式中大操作数的类型
示例:实现自动类型转换
//自动转换示例3
int a3 = 10;
long b3 = 1000;
long result3 = a3 + b3;
System.out.println(result3);
//自动转换示例4
byte a4 = 10;
char b4 = 'a'; //字母a对应为97
//a4、b4将转换为int类型,最终运算的结果为int类型
int result4 = a4 + b4;
System.out.println(result4);
3.4.2 强制类型转换
强制类型转换可以将大数据类型转化为小数据类型(如将double转换为int),在转换过程中会丢失数据的精度。
语法:
(目标数据类型) 表达式;
示例:求半径为5的圆的周长,结果取整数
public class TypeTran {
public static void main(String[] args) {
int r = 5;
int round = (int)(2*3.14*r);//求圆的周长,强制类型转换后会丢失精度
System.out.println("半径为"+r+"的圆的周长为:"+round);
}
}
3.4.3 实践练习(一)
3.4.4 实践练习(二)
总结:
- 在Java中,运算符按功能分为:赋值运算符、算术运算符、关系运算符和逻辑运算符。
- 关系运算符运算后的结果为boolean类型。
- 逻辑运算符可以连接多个关系运算符,它的操作数与结果均为boolean类型。
- 数据类型转换分为自动类型转换和强制类型转换。
- 数据类型转换是为方便不同类型的数据之间进行计算,发生自动类型转换有一定的条件。
Java程序设计基础笔记 • 【第3章 运算符与表达式】的更多相关文章
- Java程序设计基础笔记 • 【目录】
持续更新中- 我的大学笔记>>> 章节 内容 实践练习 Java程序设计基础作业目录(作业笔记) 第1章 Java程序设计基础笔记 • [第1章 初识Java] 第2章 Java程序 ...
- Java程序设计基础笔记 • 【第1章 初识Java】
全部章节 >>>> 本章目录 1.1 程序的概念及Java语言介绍 1.1.1 生活中的程序 1.1.2 计算机程序 1.1.3 算法和流程图 1.1.4 实践练习 1.2 ...
- Java程序设计基础笔记 • 【第5章 循环结构】
全部章节 >>>> 本章目录 5.1 while循环结构 5.1.1 循环简介 5.1.2 while循环 5.1.3 while循环的使用 5.1.4 while循环的注 ...
- Java程序设计基础笔记 • 【第10章 数组】
全部章节 >>>> 本章目录 10.1 数组概述 10.1.1 数组优势 10.1.2 Java中的数组 10.1.3 数组的分类 10.2 一维数组 10.2.1 数组的 ...
- Java程序设计基础笔记 • 【第7章 Java中的类和对象】
全部章节 >>>> 本章目录 7.1 理解类和对象 7.1.1 对象 7.1.2 抽象与类 7.1.3 类与对象的关系: 7.2 Java中的类和对象 7.2.1 类的定义 ...
- Java程序设计基础笔记 • 【第6章 循环结构进阶】
全部章节 >>>> 本章目录 6.1 for循环 6.1.1 for循环的简介 6.1.2 for循环的使用 6.1.3 for循环的表达式 6.1.4 实践练习 6.2 ...
- 【Java】《Java程序设计基础教程》第一章学习
一.Java概述 1.介绍了Java语言的由来 2.Java语言的特点:简单.面向对象.分布式.高效解释执行.健壮.安全.结构中立.可移植.高效率.多线程.动态 3.Java语言的实现机制,引入虚拟机 ...
- 【Java】《Java程序设计基础教程》第二章学习
一.标识符 Java 中标识符的使用有如下规定:(1)标识符由字母.数字.美元符号”$”和下划线”_”组成,除此之外的任何其他符号是不能作为标识符使用的.(2)标识符中的第一个字符不能为数字. (3 ...
- Java程序设计基础笔记 • 【第2章 变量与数据类型】
全部章节 >>>> 本章目录 2.1 变量 2.1.1 变量的概念 2.1.2 变量的使用 2.1.3 实践练习 2.2 数据类型 2.2.1 数据类型的种类 2.2.2 ...
随机推荐
- C++之error: cannot bind non-const lvalue reference of type ‘myString&’ to an rvalue of type ‘myString’
先看代码(不想看代码可以直接看代码后的问题描述) //header.h #ifndef _HEADER_H #define _HEADER_H #define defaultSize 128 #inc ...
- ORACLE中dual用法详解
基本上oracle引入dual为的就是符合语法1. 我们先从名称来说,dual不是缩写词,本身就是完整的单词.dual名词意思是对数,做形容词时是指二重的,二元的.2. Oracle中的dual表是一 ...
- 如何用shell脚本分析网站日志统计PV、404、500等数据
以下shell脚本能统计出网站的总访问量,以及404,500出现的次数.统计出来后,可以结合监控宝来进行记录,进而可以看出网站访问量是否异常,是否存在攻击.还可以根据查看500出现的次数,进而判断网站 ...
- 根据注释生成xml和从nuget包中复制xml显示到swagger
生成xml到输出目录 从注释生成xml 在要生成xml的项目的csproj中添加如下代码, 生成的xml名称为项目名称.xml. 比如该项目叫做Abp.Application, 则xml名为 Abp. ...
- Java中Date类型与String 类型之间的互相转换
Java中String类型和Date类型之间的转换 我们在注册网站的时候,往往需要填写个人信息,如姓名,年龄,出生日期等,在页面上的出生日期的值传递到后台的时候是一个字符串,而我们存入数据库的时候确需 ...
- IT过来人的10点经验谈
1 入行要趁早,正常是22岁本科或25岁硕士毕业入行.如果是零基础经培训班加持的,尽量在28岁前入行,30岁以后再想要入行IT的,千万慎重. 2 IT行业确实能挣大钱,而且能为学历一般学校一般家庭背景 ...
- [BUUCTF]REVERSE——findit
findit 步骤: apk文件,直接用apkide打开,找到findit文件 查看了所有的函数,没找到有关flag的线索,但是找到了一串奇怪的16进制 将第一串转换一下,感觉第二串应该是flag 拿 ...
- CF792A New Bus Route 题解
Content 给定一个长度为 \(n\) 的数列 \(a_1,a_2,a_3,...,a_n\),求这个序列当中差的绝对值最小的数对并求出这样的数对的个数. 数据范围:\(2\leqslant n\ ...
- java 多线程 :ThreadLocal 共享变量多线程不同值方案;InheritableThreadLocal变量子线程中自定义值,孙线程可继承
ThreadLocal类的使用 变量值的共享可以使用public static变量的形式,所有的线程都是用同一个public static变量.如果想实现每一个线程都有自己的值.该变量可通过Thr ...
- java 输入输出IO流 RandomAccessFile文件的任意文件指针位置地方来读写数据
RandomAccessFile的介绍: RandomAccessFile是Java输入输出流体系中功能最丰富的文件内容访问类,它提供了众多的方法来访问文件内容,它既可以读取文件内容,也可以向文件输出 ...