Java系列之运算符
运算符
- 算术运算符:+ (加)、-(减) 、*(乘)、/(除)、%(模)、++(自增) 、 --(自减)
- 赋值运算符:=
- 关系运算符:>、<、>= <= == != instanceof
- 逻辑运算符:&& || !
- 位运算符:& | ^ ~ >> << >>>
- 三目运算符:? :
- 扩展赋值运算符:+= -= /= *=
算术运算符与赋值运算符
//运算符
public class Demo08 {
public static void main(String[] args) {
//算术运算符 + - * / % ++ --
int i1 = 8; //赋值运算符
int i2 = 7;
double d1 = 16.0;
System.out.println("i1 + i2 = "+(i1+i2));
System.out.println("i1 - i2 = "+(i1-i2));
System.out.println("i1 * i2 = "+(i1*i2));
System.out.println("i1 / i2 = "+(i1/i2));
System.out.println("i1 % i2 = "+(i1%i2));
i1++;
System.out.println("i1++ = "+(i1));
i1--;
System.out.println("i1-- = "+(i1));
}
}

关系运算符和逻辑运算符
public class Demo09 {
public static void main(String[] args) {
//关系运算符 > < == >= <= != instanceof
int i1 = 8;
int i2 = 10;
System.out.println("i1 > i2 :"+(i1 > i2)); //false
System.out.println("i1 >= i2 :"+(i1 >= i2)); //false
System.out.println("i1 < i2 :"+(i1 < i2)); //true
System.out.println("i1 <= i2 :"+(i1 <= i2)); //true
System.out.println("i1 != i2 :"+(i1 != i2)); //true
System.out.println("i1 == i2 :"+(i1 == i2)); //false
// 逻辑运算符 && || !
System.out.println(i1 + " > " + i2+" && "+i1 + " < " + i2+" : "+((i1>i2)&&(i1<i2)));
System.out.println(i1 + " > " + i2+" || "+i1 + " < " + i2+" : "+((i1>i2)||(i1<i2)));
System.out.println("!("+i1 + " > " + i2+") : "+!((i1>i2)));
}
}

三目运算符与算术运算符拓展
public class Demo10 {
public static void main(String[] args) {
// 三目运算符 (表达式 ? 值1 :值2) 当表达式的值为真取 值1,否则取值2
int i = 1;
int j = i < 2 ? 5 : 10; // 5
int k = i > 2 ? 5 : 10; //10
System.out.println(j);
System.out.println(k);
// 运算符拓展
j+=2; // j = j + 2
k-=5; // k = k - 5
System.out.println(j); // 7
System.out.println(k); // 5
j*=2; // j = j * 2
k/=3; // k = k / 2
System.out.println(j); //14
System.out.println(k); // 1
}
}

位运算符
Integer.toBinaryString()为java提供的输出二进制方法
- & 位与运算 同为1取1,否则取0
- | 位或运算 同为0取0,否则取1
- ^ 位异或运算 相同取0,否则取1
- ~ 按位取反 1取0,0取1
- << 按位左移,右侧补0
- >> 按位右移,带符号右移 正数右移高位补0,负数右移高位补1 右移一位相当于除2
- >>> 不带符号右移 无论是正数还是负数,高位通通补0
package test;
public class Demo11 {
public static void main(String[] args) {
int a = 0b10011001;
int b = 0b10000110;
int c = a & b; // 0b10000000
int d = a | b; // 0b10011111
int e = a ^ b; // 0b00011111
int f = ~a; // 0b11111111 11111111 11111111 01100110 一个int占4个字节
int i = 0b10011010;
int g = i<<1; // 左移一位相当于乘以2
int h = i>>1; // 带符号右移 正数右移高位补0,负数右移高位补1 右移一位相当于除2
int l = i >>> 1; //不带符号右移 无论是正数还是负数,高位通通补0
System.out.println(b);
System.out.println(Integer.toBinaryString(c));
System.out.println(Integer.toBinaryString(d));
System.out.println(Integer.toBinaryString(e));
System.out.println(Integer.toBinaryString(f));
System.out.println(i); //154
System.out.println(g); //308
System.out.println(h); // 77
System.out.println(l); // 77
System.out.println(-7>>1); // -4
System.out.println(-1>>>1); // 2147483647:MAX_VALUE
}
}
Java系列之运算符的更多相关文章
- 【JAVA零基础入门系列】Day5 Java中的运算符
运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...
- java与.net比较学习系列(4) 运算符和表达式
上一篇总结了java的数据类型,得到了冰麟轻武等兄弟的支持,他们提出并补充了非常好的建议,在这里向他们表示感谢.在后面的文章中,我会尽力写得更准确和更完善的,加油! 另外,因为C#是在java之后,也 ...
- Java系列笔记(2) - Java RTTI和反射机制
目录 前言 传统的RTTI 反射 反射的实现方式 反射的性能 反射与设计模式 前言 并不是所有的Class都能在编译时明确,因此在某些情况下需要在运行时再发现和确定类型信息(比如:基于构建编程,),这 ...
- Java系列笔记(4) - JVM监控与调优
目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM ...
- Java系列笔记(3) - Java 内存区域和GC机制
目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面 ...
- Java系列笔记(1) - Java 类加载与初始化
目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个 ...
- Java系列笔记(6) - 并发(上)
目录 1,基本概念 2,volatile 3,atom 4,ThreadLocal 5,CountDownLatch和CyclicBarrier 6,信号量 7,Condition 8,Exchang ...
- 【转】O'Reilly Java系列书籍建议阅读顺序(转自蔡学庸)
Learning Java the O'Reilly's Way (Part I) Java 技术可以说是越来越重要了,不但可以用在计算机上,甚至连电视等家电用品,行动电话.个人数字助理(PDA)等电 ...
随机推荐
- C语言 之 多线程编程
一.基础知识 计算机的核心是CPU,承担了所有的计算任务. 操作系统是计算机的管理者,负责任务的调度.资源的分配和管理,统领整个计算机硬件. 应用程序则是具有某种功能的程序,程序是运行于操作系统之上的 ...
- Python的组合数据类型
""" Python的组合类型: 序列类型:元素之间存在先后关系,可以通过索引来访问 列表: 元组: 字符串: 映射类型:用键值来表示数据 字典: 集合类型:元素是无序的 ...
- 一起来作画吧「GitHub 热点速览 v.22.14」
作者:HelloGitHub-小鱼干 又一个现象级.火爆社交媒体的项目--多人作画,把你想要放置的元素添加到某一个画布上,Reddit Place 便有了你的痕迹.在本周特推中 reddit-plac ...
- 前端CSS基础
一:CSS 1.什么是CSS? CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). C ...
- 2019-2020 10th BSUIR Open Programming Championship. Semifinal
2019-2020 10th BSUIR Open Programming Championship. Semifinal GYM链接https://codeforces.com/gym/103637 ...
- 【课程汇总】OpenHarmony 成长计划知识赋能第三期系列课程(附链接)
OpenHarmony 开源开发者成长计划第三期知识赋能课程硬核程度再次升级,带领开发者上手 OpenHarmony 的标准系统应用开发,学习标准设备应用开发,使用 eTS UI 开发分布式应用样例, ...
- golang常用库包:Go依赖注入(DI)工具-wire使用
google 出品的依赖注入库 wire:https://github.com/google/wire 什么是依赖注入 依赖注入 ,英文全名是 dependency injection,简写为 DI. ...
- 解决windows下WslRegisterDistribution failed with error: 0x80070050的问题
最近升级了老电脑的windows10的系统,发现wsl2里面安装的ubuntu20.04不能在windows terminal正常启动了(我之前是把ubuntu20.04作为默认启动终端的.) 涉及报 ...
- MySQL8自增主键变化
MySQL8自增主键变化 醉后不知天在水,满船清梦压星河. 一.简述 MySQL版本从5直接大跃进到8,相信MySQL8一定会有很多令人意想不到的改进,如果不想只会CRUD可以看看. 比如系统表引擎的 ...
- 动态规划 Dynamic Programming 学习笔记
文章以 CC-BY-SA 方式共享,此说明高于本站内其他说明. 本文尚未完工,但内容足够丰富,故提前发布. 内容包含大量 \(\LaTeX\) 公式,渲染可能需要一些时间,请耐心等待渲染(约 5s). ...