JavaSE基础 ——运算符
JAVA学习day03 javase基础语法 ——运算符
3.1 算数运算符
运算符是用来计算数据的符号。数据可以是常量,也可以是变量。被运算符操作的数我们称之为操作数。
算数运算符最常见的操作就是将操作数参与数学运算,具体使用见下表:
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
+ | 加 | 2+3 | 5 |
+ | 连接字符串 | “中”+“国” | 中国 |
- | 负号 | int a = 3;-a | -3 |
- | 减 | 3-1 | 2 |
* | 乘 | 3*4 | 12 |
/ | 除 | 4/2 | 2 |
% | 取模 | 5%2 | 1 |
++ | 自增 | int a = 1;a++/++a | 2 |
- - | 自减 | int b = 2;b- - | 1 |
我们在使用算数运算符时,记得要注意以下事项:
● 加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。
● 除法“ / ”当两边为整数时,取整数部分,舍余数部分。当其中一遍为浮点型时,按照正常规则相除。
● “ % ”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。
● 整数做被除数,0 不能做除数,否则报错。
代码演示:
/*算数运算符
*/
package org.westos.cn;public class OperatorDemo {public static void main(String[] args) {/** 常量使用算数运算符*/System.out.println(10+20);/** 变量使用算数运算符*/int a = 10;int b = 20;System.out.println(a+b);//"+"作为加法运算使用int c = a + b;//"+"作为连接字符串使用System.out.println("a = "+a);}
}
运行结果下图所示:
图1-1 运行结果
3.2 算数运算符++、- - 的使用
在一般情况下,算数运算符不会改变参与计算的变量值。而是在原有变量值不变的情况下,计算出新的值。但是有的操作符会改变变量的值,例如 ++ 、- - 。
● ++运算符,会在原有值的基础上自增1;
● - - 运算符,会在原有值的基础上自减1。
看下列代码:
/** 自增自减*/int i = 3;int j = 3;i++;j--;System.out.println(i);System.out.println(j);
上面代码输出的结果i的值为4,j的值为2,说明在原有值的基础上发生了改变。
再看一段代码:
int n = 3;int m = 3;++n;--m;System.out.println(n);System.out.println(m);
这段代码的输出结果 n的值为4,m为2;
这说明++、- - 运算符单独使用,不参与运算操作时,运算符前后位置导致的运算结果是一样的。
接下来说明++、- - 运算符参与操作时,发生了怎样的变化,看下面的代码:
int a = 3;int b;b = a++ + 10;System.out.println(a);System.out.println(b);
上面代码的输出结果a的值为4,b为13;
这里要强调下,当++、- - 运算符参与运算操作时,后置++、- - 的作用:
● ++、- - 运算符后置时,先使用a的原有值参与运算操作,运算操作完成后,变量a的值自增或自减1;
再说明下++、- - 运算符前置是,参与运算操作的变化,看下面一段代码:
int a = 3;int b;b = ++a + 10;System.out.println(a);System.out.println(b);
上面的代码的输出结果a的值为4,b的值为14;
所以当++、- - 运算符参与运算操作时,前置++、- - 的作用:
●++、- - 运算符前置时,先将变量的值自增或自减1,然后使用更新的新值再参与后面的运算。
3.3 赋值运算符
赋值运算符就是为变量赋值的符号,赋值运算符使用方法如下表:
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
= | 赋值 | int a = 2 | 2 |
+= | 加后赋值 | int a = 2;a+=2 | 4 |
-= | 减后赋值 | int a = 2; a-=2 | 0 |
*= | 乘后赋值 | int a = 2;a*=3 | 6 |
/= | 除后赋值 | int a = 2;a/=2 | 1 |
%= | 取模后赋值 | int a = 2;a%=2 | 0 |
注意:像+=这样的形式的赋值运算符,会将结果自动强转成等号左边的数据类型。
写一个代码,我们来看下赋值运算符的使用
public class OperatorDemo2 {public static void main(String[] args) {/** 赋值运算符* +=, -=, *=, /=, %= :* 上面的运算符作用:将等号左右两边计算,会将结果自动强转成等号左边的数据类型,再赋值给等号左边的* 注意:赋值运算符左边必须是变量*/byte b = 10;b += 20;System.out.println(b);}
}
运行结果如下图所示:
图 1-2 运行结果
3.4 比较运算符
比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系或是否相等关系,结果是布尔值 true 或 false。
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
== | 相等于 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
> | 大于 | 3>4 | false |
< | 小于 | 3<4 | true |
>= | 大于等于 | 4>=3 | true |
<= | 小于等于 | 4<=3 | false |
这里需要注意的:
● 赋值运算符 = 和比较运算符 ==的区别:
(1)赋值运算符 = 是将 = 号右边的值赋值给左边的变量;
(2)比较运算符 = = 是用来判断 = =左右变量或常量是否相等的;
通过下面的代码演示这个注意事项:
int a = 3;int b = 4;System.out.println(a = b);System.out.println(a == b);
上面代码的输出结果第一个值为4,第二个值为布尔值false。
运行结果如下:
图 1-3 运行结果
3.5 逻辑运算符
逻辑运算符是用布尔值进行运算的,运算结果为true或false。
运算符 | 运算结果 | 范例 | 结果 |
---|---|---|---|
& | 与 | false&true | false |
l | 或 | false l true | true |
^ | 异或 | true^false | true |
! | 非 | !true | false |
&& | 短路与 | false&&true | false |
ll | 短路或 | true ll false | true |
我们来看下逻辑运算符的常用方式:
● 逻辑运算符通常连接两个其他表达式来表示计算的结果布尔值;
● 当使用逻辑与或者短路或时,只要运算符前的表达式能判断出结果,运算符后面的表达式就不再判断。
下面用过代码演示一下:
package org.westos.demo1;public class OperatorDemo3 {public static void main(String[] args) {boolean b = 100 > 99;boolean b1 = false;System.out.println(b && b1);//结果为falseSystem.out.println(b || b1);//结果为trueSystem.out.println(!b1);//结果位true}
}
运算规律:
(1)短路与 && :参与运算的两边的数据,有false,运算结果为false;
(2)短路或 || :参与运算的两边的数据,有true,运算结果为true;
(3)逻辑非:! :参与运算的数据,原先是true变为false,原先是false变为true。
3.6 三元运算符
● 格式:
(条件表达式)?表达式1 :表达式2;
● 运算规则:
先判断条件表达式的值,若为true,运算结果为表达式1,若为false,结果为表达式2。
下面通过代码演示三元运算符的使用:
package org.westos.demo1;public class OperatorDemo4 {public static void main(String[] args) {System.out.println(3 > 4 ? "正确" : "错误");int a = 3;int b = 4;String result = ((a == b) ? "相等" : "不相等");System.out.println(result);}
}
运行结果如下:
图 1-4 运行结果
3.7 运算符的优先级
下表是每种运算符的优先级,按照运算先后顺序排序(优先级相同的情况下,按照从左到右的顺序依次运算)
优先级 | 描述 | 运算符 |
---|---|---|
1 | 括号 | () 、[] |
2 | 正负号 | + - |
3 | 自增自减,非 | ++ 、- - 、! |
4 | 乘除,取余 | * 、/ 、% |
5 | 加减 | + 、- |
6 | 移位运算 | << 、>> 、>>> |
7 | 大小关系 | >、< 、>= 、<= |
8 | 相等关系 | == 、!= |
9 | 按位与 | & |
10 | 按位异或 | ^ |
11 | 按位或 | l |
12 | 逻辑与 | && |
13 | 逻辑或 | ll |
14 | 条件运算 | ? : |
15 | 赋值运算 | += 、-= 、*= 、/= 、%= |
16 | 位赋值运算 | &= 、l= 、<<= 、>>= 、>>>= |
下面看一段代码
package org.westos.demo1;public class OperatorDemo5 {public static void main(String[] args) {int a = 5;int b = 3;int c = 1;int d = (a > b && b > c ? (c++) : (++c));System.out.println(d);}
}
运行结果如下:
图 1-5 运行结果
上述代码的运算执行顺序是什么?
(1)小括号优先级高,先执行它中的内容;
(2)比较运算符>优先级高于逻辑与,先完成&&两边的运算再将它们的结果逻辑与;
(3)三元运算符的条件判断结果为true,则返回表达式1 的结果 c++。
运算符的学习就到这。
JavaSE基础 ——运算符相关推荐
- javaSE基础04
javaSE基础04 一.三木运算符 <表达式1> ? <表达式2> : <表达式3> "?"运算符的含义是: 先求表达式1的值, 如果为真, ...
- JavaSE基础练习题
JavaSE基础练习题 作者:田超凡 版权所有,转载请注明原作者,仿冒侵权必究法律责任 选择题:(3*10) 1) 下列说法正确的是(C) A.运算符优先级最高的是关系运算 B.数组的长度在使用过程中 ...
- JavaSE基础阶段学习笔记
MarkDown学习 标题 三级标题 四级标题 字体 hello,word! hello,word! hello,word! hello,word! 引用 选择狂神说Java,走向人生巅峰 分割线 图 ...
- JavaSE基础——常用类1
JavaSE基础--常用类1 一.Object类 java.lang.Object类是Java语言中的根类,即所有类的父类.它当中描述的所有方法子类都可以使用. 如果在类的声明中没有显式地使用exte ...
- java学习之路之javaSE基础1
<h2>java学习之路之javaSE基础1</h2> <div> ###01.01_计算机基础知识(计算机概述)(了解) * A:什么是计算机?计算机在生活中的应 ...
- JavaSE基础篇---processon在线脑图分享
JavaSE基础篇学习笔记脑图 按照学习阶段按java基础知识.变量与运算符.流程控制.数组再到面向对象,结合课程以及学习笔记做成的脑图,内容较多,仅供个人学习.详细见链接脑图.
- Javase基础(二)——数据类型
Javase基础(二)--数据类型 Javase基础(二)--数据类型和运算 常量 进制概述和二,八,十六进制 进制转换 源码.反码.补码 原码 反码 补码 变量的概述及格式 变量相加和常量相加的区别 ...
- Javase基础知识总结
今天11.25,我开始了第二天的写日记 我也开始了我的整理笔记 我希望我可以一直坚持下去 我不想为了未来的我后悔 加油 Javase基础知识总结 写代码: 1,明确需求.我要做什么? 2,分析思路.我 ...
- 【JavaSE 基础知识盲点小结】
[JavaSE 基础知识盲点小结] 一.第一天: 1. 在 cmd 命令窗口问题: ①编译是: javac HelloWorld.java ②运行时是: java HelloWorld (类名 不加 ...
- JavaSE基础篇--Java SE语法02--基本语法
JavaSE基础篇 Java SE语法02 HelloWorld 基本语法 流程控制 方法 数组 基本语法 标识符 关键字 数据类型 运算符 数据类型转换 运算后结果的数据类型 Java SE语法02 ...
最新文章
- l293d电机驱动原理_一文搞懂步进电机特性、原理及驱动器设计
- 5.15云原生中间件 Meetup 成都站来啦!
- python中的常量可以修改吗_python实现不可修改的常量
- c语言中英文的作用,C语言中英文对照.doc
- 单片机自动调光C语言,51单片机触控调光程序C语言
- tag 和branch的区别
- Scrapy框架的介绍和基本使用
- eval函数python_Python eval()函数
- AI助力教学升级,掌门优课智能互动双师课程获用户认可
- vue.js开发微信公众号加载缓慢出现的白页问题-随笔
- 在SpringBoot项目中,自定义注解+拦截器优雅的实现数据的加解密!
- 2022年对于李一男是关键的一年,这也将决定他的社会地位
- 不支持虚拟化的cpu如何开VM虚拟机(不支持,即“主机不支持Intel VT-x,不是支持Intel VT-x,但Intel VT-x禁处于禁用状态!!!!!!)
- matlab 数学形态学,数学形态学matlab程序
- 详解Linux终端下编写“贪吃蛇”游戏
- 帮我从求职者的角度分析一下现在使用人数最多的十大汉语线上教学平台的申请难度...
- GALAXY OJ NOIP2019联合测试2-普及组
- matlab如何读取.mat文件,matlab中读取mat文件
- 格雷码解析以及计算(仅供自己记录查阅)
- spring cloud alibaba 全家桶详细整合
热门文章
- ios手机Safari本地服务连不上
- SQL Server 获取日期是星期周几(默认从周日开始到周六 1-7)
- EasyUI DataGrid 实用例子(2015-05-22)
- 通过JS控制textarea的输入长度
- c#中ToString(yyyyMMdd) 与ToString(yyyymmdd)区别
- 【原】上一学年的课程设计
- 拓端tecdat|matlab估计arma garch 条件均值和方差模型
- Linux复习-常见命令及文件操作
- 图像处理-提取指定颜色
- php服务器启动错误,服务器意外重启之后PHP-FPM不能启动