运算符

  • 算术运算符:+ (加)、-(减) 、*(乘)、/(除)、%(模)、++(自增) 、 --(自减)
  • 赋值运算符:=
  • 关系运算符:>、<、>= <= == != 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系列之运算符的更多相关文章

  1. 【JAVA零基础入门系列】Day5 Java中的运算符

    运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...

  2. java与.net比较学习系列(4) 运算符和表达式

    上一篇总结了java的数据类型,得到了冰麟轻武等兄弟的支持,他们提出并补充了非常好的建议,在这里向他们表示感谢.在后面的文章中,我会尽力写得更准确和更完善的,加油! 另外,因为C#是在java之后,也 ...

  3. Java系列笔记(2) - Java RTTI和反射机制

    目录 前言 传统的RTTI 反射 反射的实现方式 反射的性能 反射与设计模式 前言 并不是所有的Class都能在编译时明确,因此在某些情况下需要在运行时再发现和确定类型信息(比如:基于构建编程,),这 ...

  4. Java系列笔记(4) - JVM监控与调优

    目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例     光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM ...

  5. Java系列笔记(3) - Java 内存区域和GC机制

    目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...

  6. Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)

    位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面 ...

  7. Java系列笔记(1) - Java 类加载与初始化

    目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个 ...

  8. Java系列笔记(6) - 并发(上)

    目录 1,基本概念 2,volatile 3,atom 4,ThreadLocal 5,CountDownLatch和CyclicBarrier 6,信号量 7,Condition 8,Exchang ...

  9. 【转】O'Reilly Java系列书籍建议阅读顺序(转自蔡学庸)

    Learning Java the O'Reilly's Way (Part I) Java 技术可以说是越来越重要了,不但可以用在计算机上,甚至连电视等家电用品,行动电话.个人数字助理(PDA)等电 ...

随机推荐

  1. 分库分表实现方式Client和Proxy,性能和维护性该怎么选?

    大家好,我是[架构摆渡人],一只十年的程序猿.这是分库分表系列的第一篇文章,这个系列会给大家分享很多在实际工作中有用的经验,如果有收获,还请分享给更多的朋友. 其实这个系列有录过视频给大家学习,但很多 ...

  2. BootstrapBlazor 使用模板创建项目

    原文连接:https://www.cnblogs.com/ysmc/p/16101157.html BootstrapBlazor 官网地址:https://www.blazor.zone Boots ...

  3. formdata收集数据

    通常在收集表单的时候我们都要涉及到绑定上传附件,这时候就可以用formdata的形式携带文件流上传给服务器. formData是ajax2.0(XMLHttpRequest Level2)新提出的接口 ...

  4. SpringBoot-总结

    SpringBoot一站式开发 官网:https://spring.io/projects/spring-boot Spring Boot可以轻松创建独立的.基于Spring的生产级应用程序,它可以让 ...

  5. UML中类关系表示与Java代码中的对应关系

    UML中类关系表示与Java代码中的对应关系 1. 类的UML表示法 上图中,Employee 类有两个String类型的私有属性和一个返回值为String类型public 方法 getName(); ...

  6. 简单说一说jsonp原理

    背景:由于浏览器同源策略的限制,非同源下的请求,都会产生跨域问题,jsonp即是为了解决这个问题出现的一种简便解决方案. 同源策略即:同一协议,同一域名,同一端口号.当其中一个不满足时,我们的请求即会 ...

  7. YARN线上动态资源调优

    背景 线上Hadoop集群资源严重不足,可能存在添加磁盘,添加CPU,添加节点的操作,那么在添加这些硬件资源之后,我们的集群是不能立马就利用上这些资源的,需要修改集群Yarn资源配置,然后使其生效. ...

  8. 观察者模式与Google Guava EventBus实现

    概述 观察者模式又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种. 它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态变化时,会 ...

  9. C#使用进程调用bash,不断往bash内插入命令并执行

    呃呃呃,遇到了一个非常恶心得问题,现在就是,有几十万条数据需要当作参数调用python脚本 一次一次输入命令过去缓慢,经过了多层考虑决定使用进程来解决(不知道线程怎么开启bash得) 原理非常简单,类 ...

  10. 聊聊 node 如何优雅地获取 mac 系统版本

    背景 今天突然碰到了一个兼容性需求,需要根据不同 macOS 版本,进行不同的兼容性处理. 没想到看似简单的需求,中间也经历了一番波折,好在最后解决了问题. 在此记录一下解决问题的过程,也方便其他有类 ...