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)等电 ...
随机推荐
- localStorage存储返回过来的对象 显示object object的问题
localStorage.setItem() 不会自动将Json对象转成字符串形式 用localStorage.setItem()正确存储JSON对象方法是: 存储前先用JSON.stringify( ...
- c++对c的拓展_内联函数
目的:保持处理宏的高效及安全性 解决的问题:1.c中预处理宏有些难以发现的问题 2.c++ 中预处理不能访问类成员,不能作用类的成员函数 作用:无函数调用时开销,又可像普通函数般进行参数.返回值类型安 ...
- linux中LNMP架构和location用法
location 使用Nginx Location可以控制访问网站的路径,但一个server可以有多个location配置, 多个location的优先级该如何区分 location匹配符号 匹配符 ...
- 五、JDK的安装与配置
一.JDK下载与安装 1.1.下载JDK安装包 博主在这里给大家准备了一个64位操作系统的jdk1.8以便大家下载(使用的是迅雷) 点击此处下载 提取码:dfbt 如果其他小伙伴的电脑版本不一样,博主 ...
- SpringMVC小小注意点——/*和/的区别
/*会去匹配所有的数据,包括jsp /只匹配请求,不匹配jsp页面
- 【LeetCode】24.两两交换链表中的节点
24.两两交换链表中的节点 知识点:链表 题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 示例 1 ...
- 2021.12.16 eleveni的刷题记录
2021.12.16 eleveni的刷题记录 1. 数论 https://www.luogu.com.cn/problem/P2532 1.1卡特兰数 https://www.luogu.com.c ...
- 2021.11.09 P2292 [HNOI2004]L语言(trie树+AC自动机)
2021.11.09 P2292 [HNOI2004]L语言(trie树+AC自动机) https://www.luogu.com.cn/problem/P2292 题意: 标点符号的出现晚于文字的出 ...
- 解决Mapper.xml文件中sql标签第一个字段报错
在文件标头的http后边补上www 下边代码仅第4行有变动 原文件: <?xml version="1.0" encoding="UTF-8"?> ...
- 字节跳动构建Data Catalog数据目录系统的实践(上)
作为数据目录产品,Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据.数据消费者找数和理解数的业务场景,并服务于数据开发和数据治理的产品体系.本文介绍了字节跳动 Data ...