全部章节   >>>>


本章目录

3.1 运算符(一)

3.1.1 赋值运算符

3.1.2 算数运算符

3.1.3 复合运算符

3.1.4 实践练习(一)

3.1.5 实践练习(二)

3.2 运算符(二)

3.2.1 关系运算符

3.2.2 逻辑运算符

3.2.3 三母运算符

3.2.4 实践练习

3.3 运算符优先级和表达式

3.3.1 表达式

3.3.2 运算符和优先级

3.3.3 实践练习

3.4 数据类型转换

3.4.1 自动类型转换

3.4.2 强制类型转换

3.4.3 实践练习(一)

3.4.4 实践练习(二)

总结:


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章 运算符与表达式】的更多相关文章

  1. Java程序设计基础笔记 • 【目录】

    持续更新中- 我的大学笔记>>> 章节 内容 实践练习 Java程序设计基础作业目录(作业笔记) 第1章 Java程序设计基础笔记 • [第1章 初识Java] 第2章 Java程序 ...

  2. Java程序设计基础笔记 • 【第1章 初识Java】

    全部章节   >>>> 本章目录 1.1 程序的概念及Java语言介绍 1.1.1 生活中的程序 1.1.2 计算机程序 1.1.3 算法和流程图 1.1.4 实践练习 1.2 ...

  3. Java程序设计基础笔记 • 【第5章 循环结构】

    全部章节   >>>> 本章目录 5.1 while循环结构 5.1.1 循环简介 5.1.2 while循环 5.1.3 while循环的使用 5.1.4 while循环的注 ...

  4. Java程序设计基础笔记 • 【第10章 数组】

    全部章节   >>>> 本章目录 10.1 数组概述 10.1.1 数组优势 10.1.2 Java中的数组 10.1.3 数组的分类 10.2 一维数组 10.2.1 数组的 ...

  5. Java程序设计基础笔记 • 【第7章 Java中的类和对象】

    全部章节   >>>> 本章目录 7.1 理解类和对象 7.1.1 对象 7.1.2 抽象与类 7.1.3 类与对象的关系: 7.2 Java中的类和对象 7.2.1 类的定义 ...

  6. Java程序设计基础笔记 • 【第6章 循环结构进阶】

    全部章节   >>>> 本章目录 6.1 for循环 6.1.1 for循环的简介 6.1.2 for循环的使用 6.1.3 for循环的表达式 6.1.4 实践练习 6.2 ...

  7. 【Java】《Java程序设计基础教程》第一章学习

    一.Java概述 1.介绍了Java语言的由来 2.Java语言的特点:简单.面向对象.分布式.高效解释执行.健壮.安全.结构中立.可移植.高效率.多线程.动态 3.Java语言的实现机制,引入虚拟机 ...

  8. 【Java】《Java程序设计基础教程》第二章学习

    一.标识符 Java 中标识符的使用有如下规定:(1)标识符由字母.数字.美元符号”$”和下划线”_”组成,除此之外的任何其他符号是不能作为标识符使用的.(2)标识符中的第一个字符不能为数字.  (3 ...

  9. Java程序设计基础笔记 • 【第2章 变量与数据类型】

    全部章节   >>>> 本章目录 2.1 变量 2.1.1 变量的概念 2.1.2 变量的使用 2.1.3 实践练习 2.2 数据类型 2.2.1 数据类型的种类 2.2.2 ...

随机推荐

  1. 08-认证(Authorization)

    这又是一个非常实用的功能,对我们做接口测试来说,经常要处理登录认证的情况 .如果不用这个Authorization其实也能解决认证的问题,无非就是把要认证的数据按照要求在指定位置传入参数即可.比如我们 ...

  2. Use of explicit keyword in C++

    Predict the output of following C++ program. 1 #include <iostream> 2 3 using namespace std; 4 ...

  3. Linux基础命令---apachectl

    apachectl apachectl指令是apache http服务器的前端控制程序,可以协助控制apache服务的守护进程httpd. 此命令的适用范围:RedHat.RHEL.Ubuntu.Ce ...

  4. solr8.2

    https://www.cnblogs.com/carlosouyang/p/11352779.html

  5. 【C/C++】例题3-5 生成元/算法竞赛入门经典/数组与字符串

    [题目] x+x的各位数之和为y,x为y的生成元. 求10万以内的n的最小生成元,无解输出0. [解答] 这是我根据自己的想法最初写的代码: #include<cstdio> #inclu ...

  6. 【C/C++】习题3-3 数数字/算法竞赛入门经典/数组和字符串

    [题目] 把前n个(n<=10000)的整数顺序写在一起:123456789101112-- 数一数0~9各出现多少次(输出10个整数,分别是0,1,2,--,9出现的次数) [解答] 暴力求解 ...

  7. 【Linux】【专项突破】Linux重定向与管道

    [专项突破]Linux重定向与管道 This article is written by Xrilang(Chinese Name:萌狼蓝天) If you want find me ,You can ...

  8. 罗德与施瓦茨公司和TSN Systems公司为车载以太网提供纳秒级精度延时测量

    前言 随着毫米波雷达.激光雷达和摄像头等传感器的大量出现,并要求海量的传感器数据在几毫秒内传输完成并处理,使得网络延迟问题变得越发重要.测试和测量的专家Rohde&Schwarz(以下简称R& ...

  9. pycharm的破解和基本使用

    pycharm的破解 pycharm的账号注册 在完成安装后打开pycharm软件,需要选择购买或是使用.点击试用,选择进入官网注册账号. 进入官网后选择邮箱登录,输入自己的邮箱,点击sign up ...

  10. 转:UITableView学习笔记

    UITableView学习笔记        作者:一片枫叶 看TableView的资料其实已经蛮久了,一直想写点儿东西,却总是因为各种原因拖延,今天晚上有时间静下心来记录一些最近学习的 TableV ...