Java入门系列-06-运算符

这篇文章为你搞懂2个问题

  1. java 中的常用运算符有哪些?如何使用?
  2. 这些运算符的运算优先级是怎样的?

算数运算符

明显是做数学运算的,包括以下符号:

  1. + 加法运算
    敲一敲:

    public class DemoAdd {
    public static void main(String[] args) {
        int sum=2+3;
        System.out.println(sum);//输出变量 sum 的值
        int a=5;
        int b=3;
        int result=a+b;//将变量 a 的值与变量 b 的值相加
        System.out.println(result);
        result+=20;//相当于 result=result+20;
        System.out.println(result);
    }
    }

    当对一个变量本身进行算数运算可以使用 +=-=*=/=%= 进行简化
    int a=10;a+=2; 在声明变量后进行操作
    但声明变量时赋值便是非法的 int x+=10;

  2. - 减法运算
    敲一敲:
    public class DemoMinus {
    public static void main(String[] args) {
        int diff=2-3;
        System.out.println("差:"+diff);
        double a=55.4;
        double b=5.2;
        double result=a-b;
        System.out.println("变量a的值减变量b的值等于:"+result);//结果不一定精准
        result-=10;//相当于 result=result-10;
        System.out.println("结果:"+result);
    }
    }
  3. * 乘法运算
    敲一敲:
    public class DemoMultiply {
    public static void main(String[] args) {
        int product=2*3;
        System.out.println("积:"+product);
        double a=10;
        double b=5;
        double result=a*b;
        System.out.println("变量a的值乘以变量b的值等于:"+result);
        result*=10;//相当于 result=result*10;
        System.out.println("结果:"+result);
    }
    }
  4. / 除法运算
    敲一敲:
    
    public class DemoDivide {
    public static void main(String[] args) {
        int product=5/2;
        System.out.println("商:"+product);
        double a=5;
        double b=2;
        double result=a/b;
        System.out.println("变量a的值除以变量b的值等于:"+result);
        result/=10;//相当于 result=result/10;
        System.out.println("结果:"+result);
    }
    }
5. `%` 取模、取余运算
敲一敲:
```java
public class DemoRemainder {
    public static void main(String[] args) {
        //正常求余数
        int result=10%3;
        System.out.println("10%3="+result);
        //小数在前
        int result1=2%5;
        System.out.println("2%5="+result1);
        //其中一个是负数
        int result2=-3%2;
        System.out.println("-3%2="+result2);
        //两个数都是负数
        int result3=-2%-5;
        System.out.println("-2%-5="+result3);
    }
}
  1. ++ -- 自增、自减运算符
    敲一敲:

    public class DemoSelf {
    public static void main(String[] args) {
        int a=10;
        a++;//后置自增
        System.out.println(a);//11
        --a;//前置自减
        System.out.println(a);//10
        System.out.println(++a);//11
        System.out.println(a++);//11
        System.out.println(a);//12
    }
    }

    自增、自减运算符是对一个变量本身进行加1或减1的操作
    运算符可以防置在变量前或后
    前置的运算符会先进行加1或减1的操作然后再使用,而后置则是先使用再进行操作

比较运算符

对比两者之间的关系,运算后的结果是布尔值

符号 介绍
> 大于
< 小于
== 等于 用于比较值和内存地址
!= 不等于
>= 大于等于
<= 小于等于

敲一敲:

public class DemoCompare {
    public static void main(String[] args) {
        System.out.println(10>5);//10大于5 true
        System.out.println(10<5);//10小于5 false
        System.out.println(1!=1);//1不等于1 false
        System.out.println(10==5);//10等于5 false
        System.out.println(9>=9);//9大于等于9 true
        System.out.println(5<=8);//5小于等于8 true
    }
}

逻辑运算符

符号 介绍
&& 与 运算符两边都为true运算结果为true
|| 或 运算符只要一边为true运算结果为true
! 非 取反,为true时结果为false,为false时结果为true

敲一敲:

public class DemoLogic {
    public static void main(String[] args) {
        int age=50;
        int money=100;
        //两边都不符合条件 false
        System.out.println((age<40)&&(money>100));
        //只符合一个条件 false
        System.out.println((age<60)&&(money>100));
        //两边都符合条件 true
        System.out.println((age<60)&&(money>30));

        //两边都不符合条件 false
        System.out.println((age<40)||(money>100));
        //只符合一个条件 true
        System.out.println((age<60)||(money>100));
        //两边都符合条件 true
        System.out.println((age<60)||(money>30));

        boolean isBig=age>60;//false
        System.out.println(!isBig);//取反 true
    }
}

位运算符

用于对二进制数据的操作

符号 介绍
&gt;&gt; 对二进制向右位移n位
&lt;&lt; 对二进制向左位移n位
& 位与运算 同位的二进制都为1时结果为1
| 位或运算 同位的二进制有一个为1时结果为1
^ 异或 从二进制高位开始比较,如果相同则为0,不相同则为1。
~ 位非

敲一敲:
demo1

public class DemoBit {
    public static void main(String[] args) {
        System.out.println(10>>1);//5
        System.out.println(7<<1);//14
    }
}

位移运算符操作的是二进制,上例中 10 的二进制是 1010
向右位移1位 变成了 101 左边空缺将用 0 补上 0101 转为10进制为 5
向左位移原理一样 7 的二进制为 0111 向左位移后,右边补0 为1110
转为10进制为 14

demo2

public class DemoBit {
    public static void main(String[] args) {
        System.out.println(5|1);//5
        System.out.println(3|2);//3
    }
}

上例中 5 和 1 转为二进制如下
5 0101
1 0001
5 0101
对应的位中只要有1 结果为1

demo3

public class DemoBit {
    public static void main(String[] args) {
        System.out.println(7^4);//3
    }
}

7和4的二进制如下
7 0111
4 0100
3 0011
对应位值相同为0不同为1

运算符的优先级

优先级顺符由高到低是
小括号 > 算数运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符

试一试

  1. 将一个整数除以2或乘2而不使用 + - * / ,如何实现?

搜索关注公众号「享智同行」,第一时间获取技术干货
回复"006"获取答案

原文地址:http://blog.51cto.com/13219188/2298662

时间: 2024-08-30 16:20:08

Java入门系列-06-运算符的相关文章

Java 集合系列 06 Stack详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列 05 Vector详细介绍(源码解析)和使用示例 Java 集合系列 06 Stack详细介绍(源码解析)和使用示例 第1部分 Stack介绍 Stack简介 Stack是栈.它的特性是:先进后出(FILO, F

java io系列06之 序列化总结(Serializable 和 Externalizable)

本章,我们对序列化进行深入的学习和探讨.学习内容,包括序列化的作用.用途.用法,以及对实现序列化的2种方式Serializable和Externalizable的深入研究. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_06.html 1. 序列化是的作用和用途 序列化,就是为了保存对象的状态:而与之对应的反序列化,则可以把保存的对象状态再读出来. 简言之:序列化/反序列化,是Java提供一种专门用于的保存/恢复对象状态的机制. 一般在以下几种

Java入门系列之字符串特性(二)

前言 上一节我们讲解到字符串本质上就是字符数组,同时详细讲解了字符串判断相等需要注意的地方,本节我们来深入探讨字符串特性,下面我们一起来看看. 不可变性 我们依然借助初始化字符串的方式来探讨字符串的不可变性,如下: String str = "Jeffcky"; System.out.println(str); 上述我们通过字面量的方式来创建字符串,接下来我们对字符串str进行如下操作: String str = "Jeffcky"; str.substring(0

Java入门系列之包装类(四)

前言 上一节我们讲解了StringBuilder VS StringBuffer以及二者区别,本节我们来讲解包装类. 包装类 我们知道在Java中有8中基本数据类型,分为数值类型:byte.short.int.long.float.double.字符类型:char.布尔类型:bool,那么什么是包装类呢?包装类是8种基本数据类型的对象表示,而且8种包装类和字符串对象一样是不可变且final(不可通过继承或扩展破坏不可变性)的.我们通过查看int的包装类型Integer可知,如下: 如下为基本数据

Java入门系列之集合HashMap源码分析(十四)

前言 我们知道在Java 8中对于HashMap引入了红黑树从而提高操作性能,由于在上一节我们已经通过图解方式分析了红黑树原理,所以在接下来我们将更多精力投入到解析原理而不是算法本身,HashMap在Java中是使用比较频繁的键值对数据类型,所以我们非常有必要详细去分析背后的具体实现原理,无论是C#还是Java原理解析,从不打算一行行代码解释,我认为最重要的是设计思路,重要的地方可能会多啰嗦两句. HashMap原理分析 我们由浅入深,循序渐进,首先了解下在HashMap中定义的几个属性,稍后会

java入门了解06

1.进程 :     (一)正在执行的程序称作为一个进程. 进程负责了内存空间的划分. (二)问题: windows号称是多任务的操作系统,那么windows是同时运行多个应用程序吗? 从宏观的角度: windows确实是在同时运行多个应用程序. 从微观角度: cpu是做了一个快速切换执行的动作,由于速度态度,所以我感觉不到在切换 而已. 2.线程:     线程的优先级默认是5:    (一)线程在一个进程 中负责了代码的执行,就是进程中一个执行路径, (二)多线程: 在一个进程中有多个线程同

Java 集合系列06之 Vector详细介绍(源码解析)和使用示例

概要 学完ArrayList和LinkedList之后,我们接着学习Vector.学习方式还是和之前一样,先对Vector有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它.第1部分 Vector介绍第2部分 Vector数据结构第3部分 Vector源码解析(基于JDK1.6.0_45)第4部分 Vector遍历方式第5部分 Vector示例 转载:http://www.cnblogs.com/skywang12345/p/3308833.html 第1部分 Vector介绍 Vec

(转)Java 集合系列06之 Vector详细介绍(源码解析)和使用示例

概要 学完ArrayList和LinkedList之后,我们接着学习Vector.学习方式还是和之前一样,先对Vector有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它.第1部分 Vector介绍第2部分 Vector数据结构第3部分 Vector源码解析(基于JDK1.6.0_45)第4部分 Vector遍历方式第5部分 Vector示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308833.html 第1部分 Vector介

Java入门系列:处理Json格式数据

本节主要讲解: 1)json格式数据处理方法 2)第三方工具包的使用方法 3)java集合数据类型 [项目任务] 编写一个程序,显示未来的天气信息. [知识点解析] 为了方便后面代码的分析,先需要掌握几个相关的知识. 1.什么是json格式数据 从结构上看,我们所见到的所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二种类型是序列(sequence),也就是