运算符

算术运算符

取余 自加 自减
+ - * / % ++ --
public class 算术运算符 {
public static void main(String[] args) {
int 被除数, 除数, 商, 余数;
被除数 = 10;
除数 = 3;
商 = 被除数 / 除数;
余数 = 被除数 % 除数;
System.out.println("商:" + 商 + " 余数:" + 余数);
}
}

浮点数也能取余,把上述代码的int改为double:

商:3.3333333333333335 余数:1.0

另外,浮点数可以除以0:

商:Infinity 余数:NaN

比较运算符

> < >= <= == !=

位运算符

用于操作整数类型(char也算入)

按位与 按位或 按位异或 补码取反 左移 右移 无符号右移
& | ^ ~ << >> >>>

关于补码取反,参见:

位运算法则:

p q p&q(同1为1) p|q(有1则1) p^q(同0异1)
1 0 0 1 1
0 1 0 1 1
1 1 1 1 0
0 0 0 0 0

重点掌握:

  • >> 右移(除以2^n)
  • << 左移(乘以2^n)
public class 左移右移 {
public static void main(String[] args) {
int a;
a = 512;
System.out.println(a << 1);
System.out.println(a >> 1);
System.out.println(a >>> 1);
a = -512;
System.out.println(a << 1);
System.out.println(a >> 1);
System.out.println(a >>> 1);
}
}

​ 对于int a=3,扩大8倍最快的方法是a<<3,即左移3位,相当于乘以23,计算机做位移的操作要被乘除快得多,比加法都快。

扩大2倍 a<<1 缩小2倍 a>>1
扩大4倍 a<<2 缩小4倍 a>>2
扩大8倍 a<<3 缩小8倍 a>>3
扩大16倍 a<<4 缩小16倍 a>>4

逻辑运算符

用于操作bool类型

运算符 说明
&& AND,同真为真
|| OR,一荣俱荣
NOT

短路逻辑运算

以&&为例:

  • 两个操作数都为true时,结果才为true;
  • 第一个为false时,结果就必为false,这时不会再判断第二个操作
public class 短路逻辑运算 {
public static void main(String[] args) {
int a = 1;
if ((a < 0) && (a++ < 1)) {
// Do Nothing
}
System.out.println(a);
}
}

“短路逻辑运算”针对布尔类型数据,而位运算符针对整型数据。

运算符 说明
& 不短路与
| 不短路或

赋值运算符

等号运算符(=)左侧只能是变量;右侧不一定。

连续赋值:a = b = 3;降低可读性,不推荐使用。

扩展的赋值运算符:(x+=2相当于x=x+2)

+= -= *= /= %=
&= |= ^= <<= >>= >>>=

推荐使用扩展的赋值运算符:①代码更简洁②效率较高

public class 赋值运算符 {
public static void main(String[] args) {
byte a = 1;
// 2是int,a+2自动提升为int类型
// 再赋值给a,需要显式转换一下
a = (byte) (a + 2);
System.out.println(a);
a = 1;
a += 2;
System.out.println(a);
}
}

运算符优先级

括号 ( )
单目运算符 自加、自减、~、!
算术运算符 */%
加减(+-)
位运算符1 位移(>>、<<、>>>)
比较运算符 大于小于
等于·不等于
位运算符2 按位与
按位异或
按位或
逻辑运算符 &&
||
三目运算符 ?:
赋值运算符 含扩展赋值

Java基础教程——运算符的更多相关文章

  1. Java基础教程(18)--继承

    一.继承的概念   继承是面向对象中一个非常重要的概念,使用继承可以从逻辑和层次上更好地组织代码,大大提高代码的复用性.在Java中,继承可以使得子类具有父类的属性和方法或者重新定义.追加属性和方法. ...

  2. Java基础-比较运算符Compare Operators

    Java基础-比较运算符Compare Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关系运算符 关系运算符包括: 1>.大于(>) 2> ...

  3. Java基础-算术运算符(Arithmetic Operators)

    Java基础-算术运算符(Arithmetic Operators) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java程序通过运算符实现对数据的处理,Java中的运算符包括: ...

  4. Java基础教程(12)--深入理解类

    一.方法的返回值   当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行.当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行: 执行完方法中所有的语句: 遇到return语句: ...

  5. Java基础-位运算符Bitwise Operators

    Java基础-位运算符Bitwise Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.位运算特点 位运算符分为按位与(&),按位或(|),按位异或(^ ...

  6. Java基础教程:注解

    Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...

  7. Java基础教程:网络编程

    Java基础教程:网络编程 基础 Socket与ServerSocket Socket又称"套接字",网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个s ...

  8. Java基础教程(5)--变量

    一.变量 1.变量的定义   正如上一篇教程<Java基础教程(4)--面向对象概念>中介绍的那样,对象将它的状态存在域中.但是你可能仍然有一些疑问,例如:命名一个域的规则和惯例是什么?除 ...

  9. Java基础教程:Lambda表达式

    Java基础教程:Lambda表达式 本文部分内容引用自OneAPM:http://blog.oneapm.com/apm-tech/226.html 引入Lambda Java 是一流的面向对象语言 ...

随机推荐

  1. SourceTree安装及卸载

    一.安装步骤 下载地址: 链接:https://pan.baidu.com/s/1K5ImZASuThJZoGLz6Ay_4g 提取码:hqkp 1. 点击安装包,点击下一步 2. 出现账户注册的页面 ...

  2. nb-iot技术实现跟踪功能的应用

    在互联网和连接的世界里,nb-iot风靡一时.企业和个人正在利用nb-iot技术和nb-iot设备的可靠,快速连接能力,对其技术系统进行渐进式更改,并创建一个互联的"智能"世界. ...

  3. [Luogu P4777] 【模板】扩展中国剩余定理(EXCRT) (扩展中国剩余定理)

    题面 传送门:洛咕 Solution 真*扩展中国剩余定理模板题.我怎么老是在做模板题啊 但是这题与之前不同的是不得不写龟速乘了. 还有两个重点 我们在求LCM的时候,记得先/gcd再去乘另外那个数, ...

  4. 【Flutter 实战】pubspec.yaml 配置文件详解

    老孟导读:pubspec.yaml 文件是 Flutter 中非常重要的配置文件,下面就让我们看看里面各个配置的含义. pubspec.yaml 是 Flutter 项目的配置文件,类似于 Andro ...

  5. 程序人生|从网瘾少年到微软、BAT、字节offer收割机逆袭之路

    有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...

  6. mysql处理查询请求的步骤

    服务端处理客户端的查询请求大致需要三个步骤: 连接管理 客户端连接服务端时,服务端会为其分配一个线程,客户端断开连接不会回收线程(避免频繁创建销毁的性能问题),服务端一直等待客户端发来消息(文本消息) ...

  7. 8. Prism导航

    1. 背景 导航是为了实现不同界面的切换,是一种组织系统功能的方式.提供两种导航,一是基于View切换,二是基于ViewModel状态. 2. 基于View切换的导航 最常用导航方式.在该种导航中首先 ...

  8. Pyston v2.0 发布,解决 Python 慢速的救星

    Pyston 自从 2017 年发布 0.6.1 版本后,已经淡出了人们的视线三年多了,导致现在新人都很少听过它的大名. 前两天(2020年10月28日)Pyston 在官方博客上(https://b ...

  9. 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记(2) - 识别当前i.MXRT型号

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记(2)之识别当前i.MXRT型号. 文接上篇 <超级下载算法(RT-UFL)开发笔记(1) - 执行在不同CM ...

  10. MySql Binlog 说明 & Canal 集成MySql的更新异常说明 & MySql Binlog 常用命令汇总

    文章来源于本人的印象笔记,如出现格式问题可访问该链接查看原文 原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 目录 背景介绍 开启MySq ...