在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
- 单独使用:放在变量前或后结果一样
- 参与其它运算:
提到运算,你可能会立即想到加、减、乘、除四则运算以及“九九乘法表”。Java 语言中有很多进行数据运算的方式,比如:算术运算、比较运算、逻辑运算、赋值运算、三目运算等。每一种运算方式,又都包含了很多的运算符,小编把这些运算符形象的称为“十八般武艺”,学习 Java 中的运算,就是学习这些运算符的使用,也就是修炼这“十八般武艺”的过程。
运算符,顾名思义,就是对数据(常量和变量)进行运算的符号。我们把数据用运算符连接起来,就构成了可以进行运算的表达式。比如 1 + 2、3 * 4 等等。看看这行代码:
public class Test{
public static void main(String[] args) {
int number = 1 + 2; // 使用加号(+)将常量1和2连接起来,构成了一个加法表达式,并把运算结果赋值给变量number
System.out.println(number); // 输出number的值
}
}
上面的式子就是使用运算符加号(+)将常量 1 和 2 连接起来,构成了一个加法表达式,并把运算结果赋值给变量 number,不出意外的话,打印结果应该是:
3
事实上,参与运算的数据可能会有很多,也有可能是变量、常量等混合在一起进行运算,比如(接上面代码):
public class Test{
public static void main(String[] args) {
int number = 1 + 2; // 使用加号(+)将常量1和2连接起来,构成了一个加法表达式,并把运算结果赋值给变量number
System.out.println(number); // 输出number的值
int count = number + 10; // 变量和常量同时参与运算
System.out.println(count); // 输出计算结果
}
}
打印结果:
13
除此之外,运算的方式也有很多,加法、减法、取余(取模)、比较运算等等,但它们都有一个共同的特点:每个表达式都会有一个运算结果。我们根据表达式运算结果的数据类型,将表达式的类型进行归纳分类,比如:
练好了运算符、表达式的基本功,现在,我们可以开始学习真正的武艺了。
算术运算
先来几个简单的招式,好好复习我们小学时期的算术运算。Java 中的算术运算符【大概、也许】有七种:
前面四个运算符还算常见:+、 -、 *、 / ,虽然乘号(*)和除号(/)跟我们以前见到的长得不一样,但并不难理解。百分号(%)在这里是“取余”、“取余”的意思,也就是说,使用百分号(%)可以得到数字 7 除以 3 之后的余数:1。而 ++ 和 -- 就比较陌生了,它们分别代表数据 “自增1” 和 “自减1”,这种运算是我们以前没见过的,接下来,我手把手教你每个招式——运算符的用法。
1、加、减、乘、除
先学会舞刀弄枪——四则运算的用法,上代码:
public class Test{
public static void main(String[] args) {
int num1 = 3;
int num2 = 4;
int num3 = 5;
int num4 = 10;
// 1.加法运算
int add = num1 + num2;
// 2.减法运算
int subtract = num2 - num1;
// 3.乘法运算
int multiply = num2 * num3;
// 4.除法运算
int divide = num4 / num3;
// 分别输出运算结果
System.out.println(add); // 输出加法计算结果
System.out.println(subtract); // 输出减法计算结果
System.out.println(multiply); // 输出乘法计算结果
System.out.println(divide); // 输出除法计算结果
}
}
输出结果:
7
1
20
2
运算结果完全没有新意。
除法运算有个细节要注意:如果相除的两个数进行运算,除不尽怎么办?猜想一下,下面这个行代码会得到什么结果:
System.out.println(7 / 3); // 即 7 / 3,结果是什么,2.333...还是2,还是1
看结果:
public class Test{
public static void main(String[] args) {
System.out.println(7 / 3);
}
}
结果居然是2!为什么会这样?
切记一点:除法运算符( / ),得到两个数据相除的商,在 Java 语言中,整数除以整数结果还是整数,如果除不尽,会舍弃余数。也就是说,7 / 3 的商是2,余数为1,因为参与运算的被除数、除数都是整数(int类型),所以计算结果还是整数,舍弃了余数部分,结果是2。
是不是有一种恍然大悟的感觉。这是 Java 中的运算与我们以前的认知第一个不一样的地方。
2、取模、自增(++)和自减(--)
再教你三个进阶招式(%、 ++、 --):
public class Test{
public static void main(String[] args) {
int num1 = 3;
int num2 = 4;
int num3 = 5;
int num4 = 10;
int remainder = num3 % num1; // 取模/取余运算,5对3取模,结果是?
System.out.println(remainder); // 输出取模运算结果
num2++; // num2自增1
num4--; // num4自减1
System.out.println(num2); // 输出自增之后的运算结果
System.out.println(num4); // 输出自减之后的运算结果
}
}
输出结果:
2
5
9
百分号(%)是取模运算,也叫取余运算,是除法运算的一种扩展,只不过除法运算得到的结果是商,而取模运算得到的结果是余数。如果两个数进行取模运算,结果是0,意味着什么?没错,这就是整除的效果,所以,取模运算(%)可以用来判断两个数是否能够整除,也就是说,被除数是除数的倍数。
加加(++)和减减(--)运算是让变量进行自增或自减。这里要注意,不能将这两个运算符直接使用到常量上,比如下面的代码是错误的:
1++; // 不允许常量自增或自减
思考一下,为什么?那是因为常量的概念,规定了它不能够被修改,所以,如果你想要获得2,那么直接使用字面值常量2就行了,完全不需要使用另一个常量进行运算。还有个细节,上面的代码,也可以把 ++ 和 -- 放到变量的前面,这样的运算结果是一样的(放在变量前、后的代码不能同时存在,否则数据会进行两次运算哦):
来,我们试试把++和--写到前面
++num2; // num2自增1
--num4; // num4自减1
public class Test{
public static void main(String[] args) {
int num1 = 3;
int num2 = 4;
int num3 = 5;
int num4 = 10;
int remainder = num3 % num1; // 取模/取余运算,5对3取模,结果是?
System.out.println(remainder); // 输出取模运算结果
// num2++; // num2自增1
// num4--; // num4自减1
++num2; // num2自增1
--num4; // num4自减1
System.out.println(num2); // 输出自增之后的运算结果
System.out.println(num4); // 输出自减之后的运算结果
}
}
输出结果没有变化:
5
9
当然,加加(++)和减减(--)也可以像别的运算符那样,把结果赋值给一个新的变量,就像这样:
public class Test{
public static void main(String[] args) {
int num1 = 3;
int num2 = 4;
int num3 = 5;
int num4 = 10;
int num5 = num2++; // 猜想:num2自增1,然后赋值给新变量num5
int num6 = num4--; // 猜想:num4自减1,然后赋值给新变量num6
System.out.println(num5); // 输出自增之后的运算结果
System.out.println(num6); // 输出自减之后的运算结果
}
}
输出结果:
4
10
咦,怎么还是原来的值?难道是没有发生运算?
看来我们的猜想不正确,原来
int num5 = num2++; // 结论:num2先赋值给新变量num5,然后才进行自增运算
int num6 = num4--; // 结论:num4先赋值给新变量num6,然后才进行自减运算
我把加加(++)和减减(--)放到变量前面试试:
public class Test{
public static void main(String[] args) {
int num1 = 3;
int num2 = 4;
int num3 = 5;
int num4 = 10;
// int num5 = num2++; // 结论:num2先赋值给新变量num5,然后才进行自增运算
// int num6 = num4--; // 结论:num4先赋值给新变量num6,然后才进行自减运算
int num5 = ++num2; // 猜想:num2自增1,然后赋值给新变量num5
int num6 = --num4; // 猜想:num4自减1,然后赋值给新变量num6
System.out.println(num5); // 输出自增之后的运算结果
System.out.println(num6); // 输出自减之后的运算结果
}
}
输出结果:
5
9
终于变成正确答案了:
int num5 = ++num2; // 结论:num2自增1,然后赋值给新变量num5
int num6 = --num4; // 结论:num4自减1,然后赋值给新变量num6
但是,这是为什么呢?加加(++)和减减(--)放到变量前和放到变量后为什么结果不一样,到底数据有没有进行运算呢?剖析一下这两招:
在变量前,先自增(自减) ,再进行其它运算
在变量后,先以原值进行其它运算,再自增(自减)
所以,第一次把 ++ 和 -- 放在变量后,是把变量原来的值赋值给新变量,而自增(或自减)的值被抛弃了,因此打印的是原来的值;第二次把 ++ 和 -- 放在变量前,是把运算之后的值赋值给新变量,因此打印的是计算之后的数据,这就是加加(++)和减减(--)这两个运算符的底层原理。 ++ 和 -- 是一种特殊的运算,这是再一次不同于我们以往认知的一个地方。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Java学习之Java源码讲解
关于Java中源码的学习,是不少同学头疼的知识点。本文整理了JAVA源码学习的八大要点,分别是基础知识、面向对象、异常处理、集合、综合类核心代码、JAVA8新特性、Input/Output和Java小实例。
6753
2019-08-01 21:43:56
Java学习路线 博学谷Java课程大纲
Java课程重点讲解主流技术框架、Lambda表达式及其他新特性、Spring全家桶Spring Boot /Spring Data/Spring Cloud等现阶段企业流行技术和知识点;由入门案例到详细工作原理及特性的解析,循序渐进逐步深入。
6133
2019-11-21 14:37:02
自学Java要多长时间?学多久可以找工作?
自学Java要多长时间?学多久可以找工作?相信这些都是Java初学者十分关心的问题,但是这些问题并没有一个明确的答案,毕竟学习者自身的能力水平和付出的努力不同,得到的结果也就不一样。一般来讲,自学Java到可以找工作的程度,至少需要一年以上。这还是算比较乐观的情况,许多人常常在入门Java不久后就放弃了学习了。下面我们来看看Java的学习方法和学习内容。
10121
2020-01-11 11:25:39
什么是数据库?数据库基础入门知识整理
什么是数据库?倘若我们按照字面意思来分析:顾名思义,数据库应该是一个仓库,具体来说,是一个能够装取数据的仓库。听上去好像比较抽象,那么数据库又以什么方式存在呢?我们又该如何使用它呢?为了帮助刚刚入门编程的小伙伴掌握有关数据库的知识点,小编特意为大家总结整理数据库基础入门知识。下面让我们一起来好好认识一下数据库。
6615
2020-01-14 18:29:56
零基础学Java免费视频课程分享
如今,想要转行学Java的零基础者是越来越多了。相信大多数的初学者在刚刚入门Java的时候,难免都会感到十分迷茫无从下手。要知道,Java作为一个经久不衰的编程语言,在备受程序员喜爱的同时,其学习难度和知识范围也不小。为了帮助大家可以更好更快的入门Java,博学谷特意推出了学Java的免费视频课程,希望可以帮助零基础的编程小白,少走一些弯路,快速入门Java的同时,也能找到自己的学习的大方向。
5210
2020-01-17 12:04:21