0


JAVASE语法零基础——运算符(只讲解与C语言细微区别)

Java系列文章目录


在这里插入图片描述

**Write once,Runanywhere.**🔥🔥🔥

前面几篇文章都是可以帮助C语言学习者快速熟悉Java的语法,如果你是没有学习过C语言而直接来观看的这个JavaSE语法系列的专栏,那你可以先去看看我C语言的相关专栏,便于你快速掌握JavaSE的语法。
这篇文章着重讲解Java运算符与C语言里运算符的细微区别,两者之间并没有太大的区别。

💥 💥 💥如果你觉得我的文章有帮助到你,请您点赞评论收藏并转发给你身边的朋友,得到你们支持就是我最大的动力!!!
💥 💥 💥
在这里插入图片描述

🚀🚀🚀 新的知识开始喽🚀🚀🚀
在这里插入图片描述

文章目录



1.什么是运算符

像 =、-、+、<、>等等,这样对操作数执行数学运算的符号称为运算符。
Java中运算符可以分为:算术运算符(+ - * /)、关系运算符(<> ==)、逻辑运算符、移位运算符以及条件运算符等等。

2.什么是表达式

表达式:运算符和操作数的结合。
以下这些式子都称作为表达式:

int a =10;int b =20;
a + b;
a>b;

3.算术运算符

3.1 基本四则运算符:加减乘除模(+ - * / %)

还是说明一下,这里的模(%)运算就是数学当中求除法的余数。
直接上代码:

int a =10;int b =20;System.out.println(a+b);//30System.out.println(a-b);//-10System.out.println(a*b);//200System.out.println(a/b);//0System.out.println(a%b);//10

这里重点看下面两块代码:

3.1.1 除法 /

请你写出下面代码执行后的结果

publicstaticvoidmain(String[] args){System.out.println(5/2);System.out.println(5.0/2);System.out.println(5/2.0);System.out.println((float)(5/2));}

答案是2、2.5、2.5、2.0。
看代码后的注释分析:

publicstaticvoidmain(String[] args){System.out.println(5/2);// 整型/整型 == 整型 5/2 == 2System.out.println(5.0/2);// 小数默认double型  double/int == double , int 提升为double型System.out.println(5/2.0);//  小数默认double型  int/double == double , int 提升为double型System.out.println((float)(5/2));// int/int == int 5/2 == 2 ,(float)强转为float型 -->2.0}

3.1.2 取模 %

还是一样请你写出一下代码的运行结果。

publicstaticvoidmain(String[] args){System.out.println(10%3);System.out.println(10%-3);System.out.println(-10%3);System.out.println(-10%3);System.out.println(11.5%2);}

答案以及分析看下面代码的注解:

publicstaticvoidmain(String[] args){System.out.println(10%3);// 10/3 ==3......1System.out.println(10%-3);// 10/-3 ==-3......1System.out.println(-10%3);// -10/3 ==-3......-1System.out.println(-10%-3);// -10/-3 ==3......-1System.out.println(11.5%2);// 11.5/2 == 5......1.5}

这里的模运算与Java里的区别: 1.可以对浮点类型的数字进行取模运算 2.取模运算的结果可以是浮点数

3.1.3除数为0除法或者取模运算

在数学当中,

除数也就是分母是不能为0的

,Java程序当中也一样。
看代码:
在这里插入图片描述
程序会出现异常,异常指的是:在程序运行的时候,出现了不正常的行为。

3.2 增量运算符 += -= *= %=

看代码:

publicstaticvoidmain(String[] args){int a =4;
        a +=1;System.out.println(a);//a = a+1; 5
        a -=1;System.out.println(a);//a = a-1; 4
        a *=5;System.out.println(a);//a = a*5; 20
        a /=2;System.out.println(a);//a = a/2; 20/2==10
        a %=2;System.out.println(a);//a = a%2; 20%2 ==0}

但是在Java里面,

增量运算符可以自动帮我们进行类型转换

,看代码:
在这里插入图片描述

注意:只有变量才能使用该增量运算符,常量不能使用。

3.3.自增/自减运算符++ –

作用与效果跟C语言相同,直接看代码1:

int a =1;++a;System.out.println(a);//2
int a =1;
        a++;System.out.println(a);//2

这里不管是前置++和后置++都打印1。

代码2:

int a =1;
        a++;//++后置 先使用后++System.out.println(a++);//2  a++---》3System.out.println(a);//3
int a =1;++a;// 2 ++前置 先++后使用System.out.println(++a);//3System.out.println(a);//3
  • 如果单独使用,【前置++】和【后置++】没有任何区别。
  • 如果混合使用,【前置++】就是先++再使用,【后置++】就是先使用后++。
  • 只有变量才能自增/自减运算,常量不能使用,因为常量不允许被修改。

3 .4.关系运算符

关系运算符主要有6个:== != < > <= >=,其

计算结果是true或者false。

在这里插入图片描述
需要注意的点就是要判断范围时:3<a<5和C语言一样这是错误的写法。

3.5逻辑运算符(重点)

逻辑运算符主要有三个:&& || !,

运算结果都是Boolean类型。

3.5.1.逻辑与&&

3.5.1.1语法规则:布尔表达式1 && 布尔表达式2

布尔表达式:表达式的结果为true或者false。

在这里插入图片描述

publicstaticvoidmain9(String[] args){System.out.println(true&&true);//trueSystem.out.println(true&&false);//falseSystem.out.println(false&&true);//falseSystem.out.println(false&&false);//false}

下图这个语句会报警告,因为

19/0

不是布尔表达式。
在这里插入图片描述

19/0

改写成布尔表达式

(19/0)==0

publicstaticvoidmain(String[] args){int a =1;int b =2;System.out.println((a>b)&&(19/0)==0);//false}

3.5.1.2短路与

在这里插入图片描述

int a =1;int b =2;System.out.printin((a>b)&&(19/0==0));

在这里插入图片描述

3.5.2.逻辑或||

3.5.2.1语法规则:布尔表达式1 || 布尔表达式2

在这里插入图片描述

publicstaticvoidmain(String[] args){System.out.println(true||true);//trueSystem.out.println(true||false);//trueSystem.out.println(false||true);//trueSystem.out.println(false||false);//false}

3.5.3.逻辑非!

语法规则:!布尔表达式

int a =1;System.out.println(!(a==1));//false

在这里插入图片描述

3.6.按位运算符

3.6.1 位运算符

位运算符操作的对象是二进制的比特位,位运算符的操作对象主要有四个:**

&、|、^、~

**。

与C语言相同:
按位与&:如果两个二进制位都为1,则结果为1,否者为0。
按位或|:如果两个二进制位都为0,则结果为0,否则为1。
注意:当&和|的操作数为整数(int、short、byte、long)的时候,表示按位运算,当操作数为Boolean表达式时,表示逻辑运算。
在这里插入图片描述

按位异或:如果两个二进制位相同则为0,相异则为1。
按位取反~:如果该二进制位为0则转化为1,如果该二进制位为1则转化为0。
因为前面C语言的专栏有讲到过,所以这里只讲解一下按位取反:

int a =0xf;System.out.printf("%x\n",~a);//fffffff0System.out.println(~a);//-16//0xf ==> 正数补码: 00000000 00000000 00000000 00001111//~a ==> 取反后补码:11111111 11111111 11111111 11110000//                    f  f     f   f    f   f    f   0// a取反后变成了负数:11111111 11111111 11111111 11110000//          补码-1:11111111 11111111 11111111 11101111//      取反得到原码:10000000 00000000 00000000 00010000==》-16

注意:

  • 0x为前缀的数字为十六进制数字,一个十六进制数字对应4个二进制位
  • 0xf表示十进制的15,也就是二进制的1111。
  • printf能够格式化的输出内容,%x表示按照十六进制输出.
  • \n表示换行。

3.6.2 位移运算(了解)

<< 左移**:最左侧位不要了,最右侧补0
**>>右移
:最右侧位不要了,最左侧补0
>>> 无符号左移: 最右侧位不要了,最左侧补0

3.6.1 左移<<

int a =10;//只看后8位 00001010//a<<1    00010100 //20System.out.println(a<<1);//20

注意:左移丢弃的是符号位,因此正数左移可能会变成负数。

3.6.2 右移>>

最右侧不要了,最左侧补符号位(正数补0,负数补1)

int b =11;System.out.println(b>>1);//5//    00001011-->10//>>1 00000101-->5System.out.println(b>>2);//2System.out.println(b>>3);//1

规律小结:
左移1位相当于对原来的数字*2
右移1位对于正数相当于原来的数字/2,对于负数相当于对于原来的数字/2再减1

对于正数:

int a =10;//只看后8位 00001010//a<<1    00010100 //20System.out.println(a<<1);//20System.out.println(a<<2);int b =11;System.out.println(b>>1);//5System.out.println(b>>2);//2System.out.println(b>>3);//1

对于负数:

int a =-10;//只看后8位 00001010//a<<1    00010100 //20System.out.println(a<<1);//-20System.out.println(a<<2);//-40int b =-11;System.out.println(b>>1);//-6 -11/2==-5 -5-1==-6System.out.println(b>>2);//-3System.out.println(b>>3);//-2

3.6.3 无符号右移

最右侧位不要了,最左侧位补0

int c =1;//     00000001//>>>1 00000000--->0System.out.println(c>>>1);//0

注意:

  • 由于计算机位移的效率高于计算乘除,当某个代码正好乘除2的N次方的时候可以使用位移运算代替
  • 移动负数位或者移动位数过大都没有意义

3.7 条件运算符

条件运算符只有一个,同时也是Java中唯一的一个三目运算符布尔表达式1?表达式2:表达式3

  1. 布尔表示1true时,整个表达式的值为表达式2的值
  2. 布尔表示1false时,整个表达式的值为表达式3的值
//求两个整数的最大值int a =10;int b =20;int max = a>b?a:b;System.out.println(max);//20

复杂的条件运算符:

boolean flg =false?false:true==true?true:false;//             表达式1  表达式2     表达式3     表达式4//             表达式1错误执行表达式3 //             表达式3正确 执行表达式4System.out.println(flg);//true

注意:

  1. 表达式2和表达式3的结果要是同类型的,除非能发生类型隐式类型转换
System.out.println(true?1:2.0);//1.0  表达式2 int类型隐式提升为double类型
  1. 表达式不能单独存在,其产生的结果必须要被使用,否则会报错在这里插入图片描述## 3.8 运算符的优先级优先级不必记忆,在写代码运算时注意括号()的使用即可。---

🌏🌏🌏今天的你看懂这里又学到了很多东西吧🌏🌏🌏

在这里插入图片描述

🌔 🌔 🌔下次见喽🌔 🌔 🌔
在这里插入图片描述


本文转载自: https://blog.csdn.net/m0_62160964/article/details/124346333
版权归原作者 马上回来了 所有, 如有侵权,请联系我们删除。

“JAVASE语法零基础&mdash;&mdash;运算符(只讲解与C语言细微区别)”的评论:

还没有评论