运算符

算术运算符

取余 自加 自减
+ - * / % ++ --
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. Eureka整合sidecar异构调用

    本次使用nodejs脚本生成的异构程序测试: node-server.js var http = require('http'); var url = require('url'); var path ...

  2. STM32入门系列-使用C语言封装寄存器

    前面文章介绍了存储器映射.寄存器和寄存器映射,这些都是为了介绍使用 C语言封装寄存器做铺垫.这里我们通过一个实例来对 C 语言封装寄存器进行介绍. 具体实例:控制 GPIOC 端口的第 0 管脚输出一 ...

  3. CSS动画之转换模块

    2D转换模块:注意点:1.可以类似于过渡模块一样简写,但是这里不是用逗号隔开而是用空格 2.2D的转换模块会修改元素的坐标系,所以旋转之后的平移就不是水平平移 格式:旋转:transform: rot ...

  4. 基于flask的python注册到eureka

    Eureka架构中的三个核心角色: 服务注册中心 Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-demo 服务提供者 提供服务的应用,可以是SpringBoot应用 ...

  5. AdaBoost算法详解与python实现

    1. 概述 1.1 集成学习 目前存在各种各样的机器学习算法,例如SVM.决策树.感知机等等.但是实际应用中,或者说在打比赛时,成绩较好的队伍几乎都用了集成学习(ensemble learning)的 ...

  6. Windows 10 启动出现蓝屏 终止代码:UNMOUNTABLE_BOOT_VOLUME

    解决办法:在命令符窗口中[管理员权限] 1.– 修复Windows文件:损坏的Windows文件可能会导致严重的问题. sfc /scannow 2 .– 修复硬盘:确保您的硬盘依次运行,以及Wind ...

  7. 三分钟快速解析GraphQL基本工作思路!

    欢迎阅读 本文会通过实际场景介绍一下 GraphQL,目的是让你快速了解 GraphQL 是什么,以及基本工作思路,不包含实际用法,所以阅读很轻松. 一.GraphQL 是什么? GraphQL 是后 ...

  8. 利用Kotlin扩展函数实现任意View的点击处理(点击效果和防止快速点击)

    利用Kotlin扩展函数实现View的点击处理(点击效果和防止快速点击) kotlin经典写法: view?.setOnClickListener { //实现 } 项目实践证明,这种写法存在问题 例 ...

  9. Nacos配置中心和服务的注册发现

    在上一篇中,我们已经把Nacos的集群搭建好了,那么既然已经搭建好了,就要在咱们的项目中去使用.Nacos既可以做配置中心,也可以做注册中心.我们先来看看在项目中如何使用Nacos做配置中心. Nac ...

  10. Excel字符串函数

    Excel字符串函数(用到的记录一下)"a1"代表a1单元格 mid(a1,start_num,nums)  a1格从第start_num取nums个,从1开始. len(a1) ...