zoukankan      html  css  js  c++  java
  • [Java入门笔记] Java语言基础(三):运算符

    简介

    运算符是一种特殊的符号,运算符是通过一定的运算规则操作一个或多个操作数,并生成结果的特定符号,运算符和操作数的有效组合称为表达式。

    Java中运算符主要分为以下几类:

    • 赋值运算符
    • 算术运算符
    • 关系运算符
    • 逻辑运算符
    • 条件运算符(三目运算符)
    • 位运算符

    赋值运算符

    赋值运算符用于给变量或者常量指定值,赋值运算符的符号是"="。

    int a = 1;  //定义时直接赋值
    int b;
    int c;
    b = c = 2;  //可以在一个语句内为多个变量赋值
    int d = b + 3;   //变量运算后再赋值,先执行右边,再执行左边

    算术运算符

    Java支持加减乘除和求余等基本数学运算。分别是以下几种:

    运算符

    说        明

    一元

    -

    一元减,即取负

    ++

    自增,如:++a等价于a = a + 1

    --

    自减,如:--a等价于a = a – 1

    二元

    +

    加法,返回两个操作数的和

    -

    减法,返回两个操作数的差

    *

    乘法,返回两个操作数的积

    /

    除法,返回两个操作数的商

    %

    取模,返回两个操作数整除后的余数

    加法运算符:+

    double a = 1.1;
    double b = 1.2;
    double sum = a + b;
    System.out.println(sum);  //输出2.3

    减法运算符:-

    double a = 2.2;
    double b = 1.1;
    double sub = a - b;
    System.out.println(sub);  //输出1.1

    乘法运算符:*

    int a = 11;
    double b = 1.2;
    double multiply = a * b;
    System.out.println(multiply);  //输出1.32

    除法运算符:/

    除法运算符有点特殊:如果运算的两个值都是int,得到的结果也是int类型,会把小数点直接去掉,也不会四舍五入

    int a = 10;
    int b = 4;
    double c = a/b;
    System.out.println(c);  //10初4本来结果是2.5,但是两个int类型数相除结果是int类型数,尽管将结果值赋给了double,
                  //但输出结果变成了2.0,相当于运算完成时将小数点给去了,再转换为2.0
    double a2 = 5.2; double b2 = 3.1; double c2 = a2/b2; System.out.println(c2); //两个double值运算,输出结果:1.6774193548387097 System.out.println(5 / 0.0); //除数为double型0.0,输出负无穷大 System.out.println(5 / 0); //除数为0,运行时会报错

    求余运算符:%

    int a = 5;
    int b = 3;
    double c = 3.2;
    System.out.println(a%b);  //输出2
    System.out.println(a%c);  //1.7999999999999998
    
    System.out.println(0%5);  //输出0
    System.out.println(5%0);  //运行会出错

    求负:-

    int i = -1;
    int i2 = -i;
    System.out.println(i2);  //输出1

    自加:++

    int i = 1;
    i++;  //相当于将i的值加1;
    System.out.println(i); //输出2

    自加符号既可以放在变量前面,也可以放在变量后面,放在前面先把操作数加1,再进行表达式的运算,放在后面则相反。

    int i1 = 1;
    int i2 = 1;
    int i3 = i1++;  //此时i3的值为1,i1的值为2;它是先将i1的值赋给了i3,再将i1加1;
    int i4 = ++i2;  //此时i4的值为2,i2的值也为2;它是先将i2的值加1,再将值赋给i4;

    自减:--

    作用类似于自加

    int i1 = 1;
    int i2 = 1;
    int i3 = i1++;  //此时i3的值为1,i1的值为0;它是先将i1的值赋给了i3,再将i1减1;
    int i4 = ++i2;  //此时i4的值为0,i2的值也为0;它是先将i2的值减1,再将值赋给i4;

    关系运算符(比较运算符)

    关系运算符可以测试两个操作数之间的关系(但不会改变操作数的值),关系表达式的结果为boolean型true/false:

    运算符

    说        明

    ==

    等于,检查两个操作数是否相等

    !=

    不等于,检查两个操作数是否不相等

    >

    大于,检查左操作数是否大于右操作数

    >=

    大于等于,检查左操作数是否大于或等于右操作数

    <

    小于,检查左操作数是否小于右操作数

    <=

    小于等于,检查左操作数是否小于或等于右操作数

    System.out.println(4 == 4);  //结果为true
    System.out.println(4 != 3);  //结果为true
    System.out.println(true == false);  //结果为false

    逻辑运算符

    逻辑运算符用于操作boolean类型的变量或常量

    运算符

    说        明

    Java

    一元

    !

    逻辑非(NOT)

    二元

    &

    逻辑与(AND)(不短路)

    左边为false,依然会运算右边

    |

    逻辑或(OR)

    如左操作数为true,依然运算右边操作数

    &&

    短路与

    如左操作数为false,则不运算右操作数

    ||

    短路或

    如左操作数为true,则不运算右操作数

    ^

    异或

    当两个操作数不同时返回true,相同则返回false

    看例子

    System.out.println(!true);  //结果为false
    System.out.println(2 > 1 && 1 > 1); //结果为false
    System.out.println(2 > 1 || 1 > 1); //结果为true
    System.out.println(true ^ false);  //结果为true,异或,相当于把第一个前面一个值true取反,再进行“或”运算

    下面我们来看一下 |于||的区别

    int a = 1;
    int b = 1;
    if(a == 1 | b++ > 1){
        System.out.println(b);  //输出b的值为2,按位或虽然|符号左边结果为true,但依然会执行|符号右边的代码
    }

     将|改为||

    int a = 1;
    int b = 1;
    if(a == 1 || b++ > 1){
        System.out.println(b);  //输出b的值为1,||符号左边结果为true,不会再执行||符号右边的代码
    }

     条件运算符(三目运算符)

    它的一般形式是:

      表达式1 ? 表达式2 : 表达式3

    根据表达式1的结果来判断执行表达式2还是表达式3,如果表达式1的结果为true,则执行表达式2,否则执行表达式3;
    条件运算符在某些情况下能够替代小型的if…else语句。
    String s = 1 > 2 ? "1大于2" : "1不大于2";
    System.out.println(s); //输出 1不大于2

    位运算符

    位运算符既参加运算的两个数据,按二进制位进行运算。Java的位运算符有如下7个:按位与(&)、按位或(|)、按位非(~)、按位异或(^)、左移运算符(<<)、右移运算符(>>)、无符号右移运算符(>>>)。

    具体介绍可以参考下面这篇文章:

    http://www.cnblogs.com/yezhenhan/archive/2012/06/20/2555849.html

    运算符的优先级

    很多情况下,一个表达式由多个运算符组成,优先级决定运算符的计算顺序:

    优先级

    运    算    符

    1

    括号: ()和[]

    2

    一元运算符:-、++(前置)、--(前置)、!

    3

    算术运算符:*、/、%、+和-

    4

    关系运算符:>、>=、<、<=、==和!=

    5

    逻辑运算符:&、|、&&和||

    6

    条件运算符:? :

    7

    赋值运算符:=、*=、/=、%=、+=和-=

    尽管运算符有优先级,一个表达式中会根据表达式运算符的优先级进行先后运算,但是在实际编程中如果一个表达式很长也不会推荐这样写,而是分为几步写,因为写在一起可读性太差。

  • 相关阅读:
    面试中要注意的 3 个 JavaScript 问题
    angularJS遇到的坑
    为什么你的前端工作经验不值钱?
    ceph pg常见的几种状态
    k8s网络之flannel
    k8s流量访问之service
    lvs+keepalived高可用
    iptables【学习笔记】
    Linux和OpenStack中的网络知识【学习笔记】
    服务器BIOS设置
  • 原文地址:https://www.cnblogs.com/hopeblog/p/5008289.html
Copyright © 2011-2022 走看看