java基础--运算符

注释

在讲解运算符前我们来谈一下Java中的注释。注释的作用是方便程序员再次阅读代码,方便其他程序员阅读自己的代码,对于团队开发的时候也是如此。
在Java中注释分为三种单行注释,多行注释,和文档注释。

        // 这种是单行注释

       /*
        这种是多行注释
         */
         
        /**
         * @author zyt
         * @date 2024/7/22
        */    这种是文档注释        

单行注释顾名思义,单行的时候使用,多行注释则是,当有多行代码需要注释时,使用这个多行注释,文档注释在可以被Javadoc工具解析然后生成一个网页文件形式的程序说明手册。文档注释多用于类名或者方法名上。
单行注释和多行注释都不参与编译,在程序编译后的class文件中不存在注释。
多行注释不可以嵌套使用。

运算符

在Java中运算符分为算术运算符,逻辑运算符,位运算符,关系运算符,移位运算符以及条件运算符。下面我们一一介绍。

算数运算符

基本四则运算符

算数运算符包含+,-,*,/,%,这几个均为二元运算符,需要有左右两个操作数。
我们这里主要谈后两个,前面的+ - *与正常数学中的无差。
在Java中的 / 代表除,这里需要注意以下几点:
1.两个整数相除结果仍然是整数,若想得到小数结果,/的左右两个数至少必须有一个是小数类型。
2.分母(右操作数)不可以为0。
Java中的%代表取余,需要注意以下几点:
1.小数也可以进行取余,但意义不大,一般都采用整数进行取余。
2.负数也可以进行取余。
3.分母(右操作数)不可以为0。

 System.out.println(12.5 % 5);//小数取余,结果是2.5
 System.out.println(-12.5 % 5);//负数取余,结果为-2.5

增量运算符

增量运算符有+= -= *= /=
这个运算符只可以对变量使用,常量不可以使用。

int a = 3;
a += 2 //a = a + 2
a- = 1 //a = a - 1
a *= 1//a = a * 1
a /= 1//a = a / 1

这里有个需要注意的小点,根据例子来阐述。

        int a = 3;
        double b = 3.5;
        a += b;
        System.out.println(a); //6
        System.out.println(b); //3.5

好好看我上一篇的笔记了嘛,如果好好看了,可能就会在这有疑问,如果没有,就再看一遍上一篇的类型转换那。数据类型-类型转换
在上一篇文章中,我们了解到对于数据类型大的转向数据类型小的需要强制类型转换,否则编译错误,无法运行,但上述代码却能正确运行,这是为什么呢?
重点来了!!!!!!!!!
由于这是增量运算符,会自动进行转换。a += b等同于a = (int)a + b,所以转换才没错!!!

自增,自减运算符

自增运算符是++自减运算符是–
这里有很多同学就会比较乱,下面我带大家来梳理一下。
符号在操作数后面时指先赋值再自增
符号在操作数前面的时候指先自增,在赋值。

单操作数时
++a 与 a++一样
--a 与 a--一样
多操作数时就会有区别了,这里拿++来举例,--同理
符号在后时:
        int a = 3;
        int b = 1;
        b = a++;  符号在操作数后面,先把a的值赋给b后a再自增
        System.out.println(a);//输出4
        System.out.println(b);//输出3
符号在前时:
        int a = 3;
        int b = 1;
        b = ++a;符号在操作数前面,a先++,然后值再赋给b
        System.out.println(a);//输出4
        System.out.println(b);//输出4

这里有个易错题

        int a = 6;
        a = a++;
        System.out.println(a);//输出6

大家看到这个题是否会疑惑,会不会来回算了好几遍。这个结果没错就是输出6,至于为什么呢,它的内部比较复杂,我这里就简单说一下。
a = a++确实是先进行赋值再自增,但由于操作数是一个,所以此时就有些问题了,我们可以理解为有两个表,一个是操作表,一个是局部变量表,我们将值赋给了a此时想要输出的就是这个a,a后自增,此时那个数存储到了操作表上,固然输出的并不是7。
大家如果实在理解不了,就可以先记住这个易错点,后续我们再慢慢研究。

关系运算符

关系运算符主要有==,!=,<,>,<=,>=其结果为true或者false
这里需要将 == 与=区分开,前者为关系运算符,后者为赋值运算符。

        System.out.println(5<4);   false
        System.out.println(4>5);    false
        System.out.println(5==5);   true
        System.out.println(5<=4);   false
        System.out.println(5>=5);   true
        System.out.println(5!=4);   true

注意当多次判断时不可以连着写,例如3<5<9,3<5这个可以得出结果为true,但true<9这个怎么进行判断呢,所以这个不可以连着写,要分开一个一个判断。

逻辑运算符

逻辑运算符有&&,||,!,运算结果都是boolean类型

逻辑与&&

表达式1&&表达式2,结果具体如下:
真&&真 =真 真&&假 = 假 假&&假 = 假 假&&真 = 假
根据这个可以得知在逻辑与中只要有一个为假,则整个式子就为假,只有全为真的时候才为真。

逻辑或||

表达式1||表达式2,具体如下:
真||真 = 真 真||假 = 真 假||真 = 真 假 ||假 = 假
总结:在进行逻辑或的时候只要有一个为真则最后结果为真,全部为假的时候才为假。

逻辑非!

真变假,假变真

短路运算

短路运算主要针对的是&&和||两者。
表达式1&&表达式2,如果表达式1的结果为false时,则表达式2不会执行,直接得出最后结果为false
表达式1||表达式2,如果表达式1结果为true,表达式2也不会继续执行,而是直接得出最后结果为true
这里要和位运算符中的|和&进行区分,当|和&的结果为boolean类型时也表示逻辑运算,只不过并不符合短路运算。只有&&和||才可以进行短路运算。

位运算符

位运算符有|,&,~,^这里面 ~是一元运算符,其余均为二元运算符。需要注意的是,这些运算符都是二进制位一个一个来比较的。

&

按位与,如果二进制位中的两个数字均为1则结果为1,如果有一个为0,则结果为0

|

按位或,如果二进制位中的两个数字均为0则结果为0,如果有一个为1,则结果就为1

~

这个符号叫做按位取反,每个二进制位上的数字全部变换,0变位1,1变为0

^

这个符号称为按位异或,如果两个数字相同则为0,如果不同则为1

移位运算符

这部分我们需要进行了解,无须细扣。移位运算符分为三种:<<,>>,>>>。
我们分别来介绍一下。这里需要注意的是在Java中的数据类型是有符号的。
左移一位,代表该数*2,移动N位,则该数乘以2的N次方
右移一位,代表该数/2,移动N位,则该数除以2的N次方
这里计算机中这个移位的效率是高于乘除的,所以如果想要进行的乘除为2的倍数时,也可以考虑一下移位。

<<

这个符号是左移符号,这个也是在二进制的基础上来谈的。左移最左侧一位不要了,最右侧补0。
由于Java中是有符号的,所以左移可能会导致正数变为负数。

>>

这个符号是右移符号,此时是指抛弃最右边一位,在最左侧补数,如果该数为正数则补0,如果是负数,则补1。

>>>

这个符号为无符号右移,最右侧的数不要了,左侧补零。

条件运算符

条件运算符只有一个就是表达式1?表达式2:表达式3.这个条件运算符也可称为三目运算符。
当表达式1的值为真时,则结果为表达式2
当表达式1的值为假时,则结果为表达式3
这里需要注意:
1.表达式2和表达式3的类型最好相同,如果不相同就要会发生隐式类型转换
2.条件运算符不可以单独存在,最后其值必须有使用,否则报错。

int c = a>b?1:2  这种正确
a>b?1:2   这种错误,最后结果没有被使用

相信大家已经对三目运算符有了了解了,那么我们就来练习一下吧。

        int a = 5;
        int b = 4;
        int c = 10;
        int d = 15;
        System.out.println(a > b ? c > d ? true : false : true);

大家可以自己练习一下这道题,但希望大家是自己动脑想出,而不是在运行出。最后答案为false。如果做对了,恭喜你,你很棒!如果做错了,也很厉害,只不过差一点,实在看不懂了欢迎来问我!

运算符的顺序

到这里我们已经将所有的运算符全部学完,运算符有很多,那具体在运算时可能会有优先级吧,比如乘除的优先级肯定高于加减。下面我找了一个图片关于优先级顺序的,但我觉得了解个大概就可以,对于有歧义的我们加个括号就能解决。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值