全部章节   >>>>


本章目录

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. Oracle中分割逗号函数REGEXP_SUBSTR

    最近优化FORM中的查询条件遇到某个字段可以选取多个值的问题,思路当然就是选取时将多个值通过某个符号拼接起来,查询数据的时候将拼接后的字符串按照符号分割开,在分割逗号的时候用到了一个新的方法REGEX ...

  2. 数据库ER图基础概念

    ER图分为实体.属性.关系三个核心部分.实体是长方形体现,而属性则是椭圆形,关系为菱形. ER图的实体(entity)即数据模型中的数据对象,例如人.学生.音乐都可以作为一个数据对象,用长方体来表示, ...

  3. Data Calendar

    1.Date对象 Date类在java.util包中.使用Date类的无参数构造方法创建的对象可以获取本地当前时间. 用Date的构造方法Date(long time)创建的Date对象表 示相对19 ...

  4. mysql之对象创建

    1 --创建表空间 2 create tablespace tablespace_name 3 innodb and ndb: 4 add datafile 'file_name' 5 innodb ...

  5. GCD的补充

    1-1 关于GCD中的创建和释放     在iOS6.0之前,在GCD中每当使用带creat单词的函数创建对象之后,都应该对其进行一次release操作.           在iOS6.0之后,GC ...

  6. 【编程思想】【设计模式】【行为模式Behavioral】Specification

    Python版 https://github.com/faif/python-patterns/blob/master/behavioral/specification.py #!/usr/bin/e ...

  7. Spring Boot中使用Dubbo

    高并发下Redis会出现的问题: 缓存穿透 缓存雪崩 热点缓存 一.定义commons工程11-dubboCommons (1) 创建工程 创建Maven的Java工程,并命名为11-dubboCom ...

  8. Linux目录结构和基础命令

    Linux目录和基础命令 目录 Linux目录和基础命令 1 Linux目录结构 1.1 Linux文件名命令要求 1.2 文件的类型 2. 基础命令 2.1 ls 2.2 cd和pwd 2.3 命令 ...

  9. Grafana 任意文件读取漏洞 (CVE-2021-43798)学习

    漏洞概述 Grafana是一个跨平台.开源的数据可视化网络应用程序平台.用户配置连接的数据源之后,Grafana可以在网络浏览器里显示数据图表和警告. Grafana 的读取文件接口存在未授权,且未对 ...

  10. iOS-启动项目(二)引入第三方库

    摘要 项目中很大几率会用到第三方库,通过 Pod 方式引入第三方库是效率很高的方式,这里介绍一个新的项目搭建 Pod 方式的环境,方便项目中引入第三方库文件. 刚创建的项目中如果需要用到第三方库,常用 ...