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 ...
随机推荐
- Maven pom.xml报错解决
用Maven建了一个web工程,总是在pom.xml头的地方报错: 大概是: Original error: Could not transfer artifact org.hamcrest:hamc ...
- android TabLayout设置选项卡之间的距离无效已解决
根据下面的链接设置完距离后无法生效 https://www.jb51.net/article/131304.htm layout <com.google.android.material.tab ...
- Gitlab安装操作说明书
一.Gitlab安装操作步骤 登录官方网站https://about.gitlab.com/downloads/根据你所需要的系统版本,作者使用的是centos6, 检查您的服务器是否符合硬件要求.g ...
- jquery对radio和checkbox的操作
jQuery获取Radio选择的Value值 代码 $("input[name='radio_name'][checked]").val(); //选择被选中Radio的Valu ...
- maven的lifecycle
1.maven clean. 清理项目的target目录 2.maven compile 编译项目 3.maven test 编译项目后,再执行Junit测试方法 4.maven package 编译 ...
- ES6常用的数值转换方法
<script type="text/javascript"> // Number常用方法 /* Number.isFinite() 用来检查一个数值是否为有限的(fi ...
- 【Spring Framework】Spring入门教程(五)AOP思想和动态代理
本文主要讲解内容如下: Spring的核心之一 - AOP思想 (1) 代理模式- 动态代理 ① JDK的动态代理 (Java官方) ② CGLIB 第三方代理 AOP概述 什么是AOP(面向切面编程 ...
- promise ,async 小记
Promise Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及该异步操作的结果值. 摇色子游戏,随机1-6的一个整数,并且将其返回. function fn() { retur ...
- FindUserByPageServlet
package com.hopetesting.web.servlet;import com.hopetesting.domain.PageBean;import com.hopetesting.do ...
- 【C/C++】string的长度
一般用 s.length() s.size() 两种 size也可以用于vector string和vector的区别 string输入直接cin vector一般类似压栈pushback 输入一般是 ...