Java基础知识——算术操作符、自增自减、关系操作符,你真的了解吗?
三人行,必有我师焉。欢迎大家加我的微信 yh18482155461,或扫描下方二维码,关注我的微信公众号,共同探讨Java相关技术问题。
温故知新
上一节我们讲到了Java中的赋值操作符,用案例的方式讲解了赋值操作符的使用方式,以及其作用于基本数据类型和引用数据类型的不同效果。请回答一下几个问题:
- 赋值表达式的左值和右值分别需要符合什么规则?
- 赋值操作符作用于基本数据类型和作用于引用数据类型有什么异同?
如果发现有回答不上的问题,请回顾上节内容!如果还不懂,请直接@我!
更上一层楼
今天我们主要讲解以下内容哦!!!
- 算术操作符
- 自增自减操作符
- 关系操作符
算术操作符
基本算术操作符
Java中的基本算术操作符主要包括加号(+)、减号(-)、乘号(*)、除号(/)和取模(%)运算。
运算示例
public class Operation {
public static void main(String [] args) {
int a = 10;
int b = 5;
int c = a + b;
int d = a - b;
int e = a / b;
int f = a * b;
int g = 3 % 2;
System.out.println("c="+c+";d="+d+";e="+e+";f="+f+";g="+g);
}
}
//output
//c=15;d=5;e=2;f=50;g=1
//+-*/相对简单,就不多叙述了;重点是取模运算(%),也叫做取余运算
//即取整除之后的余数
组合操作符
在Java中可以把操作符和赋值操作符合并为一个操作符,如+=
、-=
、*=
、/=
等;在这里我们主要举例基本算术操作符和赋值操作符的组合使用。Java中所有的操作符都可以与赋值操作符搭配,只要其有实际意义就行
。
运算示例
public class Operation {
public static void main(String [] args) {
int a = 10;
//相当于 a = a + 5
int a += 5;
System.out.println(a);
//相当于 a = a - 5
int a -= 5;
System.out.println(a);
//相当于 a = a * 5
int a *= 5;
System.out.println(a);
//相当于 a = a / 5
int a /= 5;
System.out.println(a);
}
}
//output
//15
//5
//50
//2
加减算术操作符的特殊用法
+、-算术操作符,既可以作为一元操作符,也可以作为二元操作符(元的概念,几元指有几个值参与了操作!)
一元减号操作符的作用是转变数据的符号,如 1 => -1;而一元加号操作符的作用是将较小类型的操作数提升为int类型,如把一个short数提升为int类型。
自增自减操作符
Java提供了大量的快捷运算操作符。其中,自增和自减操作符是日常中用的比较多的。自增操作符
用符号++
表示,自减操作符
用符号--
表示。
自增自减操作符有两种使用方式(假设我们有一个变量a):
- 前缀式:
++a
,其表示先执行运算,再生成变量的值作为结果。 - 后缀式:
--a
,其表示先生成变量的值作为结果,再进行运算。
运算示例
public class Operation {
public static void main(String [] args) {
int a = 5;
//相当于 a = a + 1
System.out.println(a++);
//相当于 a = a + 1
System.out.println(++a);
}
}
//output
//5
//6
//可能会有同学疑惑,为什么结果是这样的呢?
//a++,表示先生成变量的值作为结果,再进行运算
//因此返回的是没进行运算前的值
//因此是5
//++a,表示先进行运算,再生成变量的值作为结果
//因此返回的是进行运算之后的值
//因此是6
关系操作符
关系操作符是判断两个值或者说两个对象之间关系的操作符,其返回一个boolean结果。关系操作符包括>
、<
、>=
、<=
、==
、!=
。==
和!=
适用于所有的基本数据类型,而其他操作符不适用于boolean类型
。
运算示例
public class Operation {
public static void main(String [] args) {
int a = 10;
int b = 5;
System.out.println("a>b:"+(a>b));
System.out.println("a<b:"+(a<b));
System.out.println("a>=b:"+(a>=b));
System.out.println("a<=b:"+(a<=b));
System.out.println("a!=b:"+(a!=b));
System.out.println("a==b:"+(a==b));
}
}
//output
//a>b:true
//a<b:false
//a>=b:true
//a<=b:false
//a!=b:true
//a==b:false
==操作符到底在比较什么?
请看以下例子:
public class Operation {
public static void main(String [] args) {
Integer i1 = new Integer(10);
Integer i2 = new Integer(10);
Value v1 = new Value();
Value v2 = new Value();
v1.i = v2.i = 10;
System.out.println("i1 == i2?" + i1 == i2);
System.out.println("i1 != i2?" + i1 != i2);
System.out.println("i1.equals(i2)?" + i1.equals(i2));
System.out.println("v1 == v2?" + v1 == v2);
System.out.println("i1.equals(i2)?" + i1.equals(i2));
}
class Value {
int i;
public void setI(int i) {
this.i = i;
}
public int getI() {
return this.i;
}
}
}
//output
//i1 == i2?false
//i1 != i2?true
//i1.equals(i2)?true
//v1 == v2?false
//i1.equals(i2)?false
在对以上案例的答案进行解读之前,我们需要先清楚一个知识点:==操作符和!=操作符比较基本数据类型时比较的是值,而比较对象时比较的是对象的引用
。因此对于前两个输出,我们可以理解了,因为通过new
操作符获得的Integer对象,在内存中都有各自的物理地址,因此他们的引用是不同的(引用实际放的就是物理地址)。
那么如何比较两个对象的实际内容是否相等呢?所有的对象都有equals方法,可用于比较对象的实际内容是否相等
。但是这个方法不适用于基本数据类型。
那么我们就可以理解,第三个输出,由于i1和i2的值都是10,因此他们通过equals方法比较出来是相等的。但是为什么第四、第五个输出又是false呢?因为equals方法默认比较的实际还是对象的引用,除非我们重写该方法,并重新定义其实现
。很显然,Integer这个类中,重写了该方法。
时时回顾
今天我们主要讲解了Java中的算术运算符、自增自减操作符和关系操作符。这些操作符在我们日后的生活中经常用到,因此务必牢牢掌握!
如果觉得我写的内容对你有帮助,可以关注我的微信公众号,和我一起进步!
Java基础知识——算术操作符、自增自减、关系操作符,你真的了解吗?的更多相关文章
- Java基础知识(一) 自增、自减运算符
.d1 { border-style: none } .d2 { border-style: solid } .d3 { border-style: dotted } .d4 { border-sty ...
- java 基础知识二 基本类型与运算符
java 基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...
- java基础知识文章汇总
将之前的所有关于Java基础知识的随笔,整理成质量较高的十几篇随笔,几乎是好几篇比较零散的随笔合成现在的一篇,自认为还不错. java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- 毕向东—Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- java基础知识精华
转载:https://www.jianshu.com/p/6c078abb720f java基础知识 java内存模型 java运行时数据区域 hashMap 如何解决冲突 存储方式 冲突达到一定数量 ...
- java基础知识小小结
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
随机推荐
- 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询。这些是所有 Oracle 开发者都必备的技能,所以快快收藏吧!
日期/时间 相关查询 获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 “SYSDATE”来指定查询的日期. SELECT TRUNC (SYSDATE, 'MO ...
- 【Monkey】Monkey稳定性测试常用命令
Monkey稳定性测试常用命令: 1.adb shell monkey n 2.adb shell monkey -p com.android.calculator2 1000 3.adb shel ...
- SQL Join 与 In的效率
今天在优化朋友的一个系统, 主要他们前期是叫人外包写的, 越来越慢, 导出订单明细时, 基本都是TimeOut, 我查看到这里面是这样写: select * from Orders where ID ...
- learning websocket protocol
websocket的产生背景: 众所周知,Web应用的通信过程通常是客户端通过浏览器发出一个请求,服务器端接收请求后进行处理并返回结果给客户端,客户端浏览器将信息呈现.这种机制对于信息变化不是特别频繁 ...
- MSRHook与SSDTHook
//方式1:MSR Hook #include <ntifs.h> UINT32 oldaddr = ; UINT32 pidtoprotect = ; PCLIENT_ID pid = ...
- 什么样的类才算是一种可重用的组件,即JavaBean?
每一个类实现了Bean的规范才可以由Spring来接管,那么Bean的规范是什么呢? 必须是个公有(public)类 有无参构造函数 用公共方法暴露内部成员属性(getter,setter) 实现这样 ...
- UML之顺序图
一 定义 顺序图是将交互关系表示为一个二维图.纵向是时间轴(生命线),时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线表示,当对象的过程 ...
- MapReduce(二) MR的高级特性-序列化、排序、分区、合并
一.序列化 (*) 核心接口:Writable接口.如果有一个类实现了Writable接口,就可以作为Map/Reduce的key和value. 举例: 读取员工数据,生成员工对象,直接存储 ...
- Ubuntu 中文拼音输入法键入异常
如果确定系统装的OK,可以修复ubuntu Ctrl+Alt+t切出终端,输入命令: " ibus-daemon -drx",然后再输入拼音试一试就会OK .
- 固定div的位置——不随窗口大小改变为改变位置
百度首页示例: 我给二维码,和下面文本固定位置 这时html代码 <div id="bar_code"> <div class="img_put&quo ...