java运算符

分类:

             算术运算符

             赋值运算符

             比较运算符

             逻辑运算符

             位运算符

             三目运算符

             

目录

算术运算符:

赋值运算符

比较运算符

逻辑运算符

位运算符

三目运算符


算术运算符:

        明确: 二元运算符: 需要两个操作数才能完成运算的运算符 例如: 5 * 3

        -- 二元算术运算符: + , - , * , / , %

             加法运算符: +

                 第一种使用: 正号    了解

                    例如: +9  , 9    +号可以省略不写

                 第二种使用: 做加法运算    10 + 5

                    说明: 左右两边操作数是:整数,小数,char类型

                    例如: 10 + 5.5

                           'a' + 1

                 第三种使用: 做字符串连接符

                    说明:  左右两边操作数至少有一个是字符串

                    例如: "hello" + "world"      --> "helloworld"

                           "张三" + 100 + "年"    --> "张三100年"

                           "李四" + 1 + 99 + "年" --> "李四199年"

                           "王五" + (1 + 99) + "年" --> "王五100年"

                     运算顺序: 有()先算() , 没有() 从左往右一顺拼接

            减法运算:-

                第一种使用: 负号    不能省略

                    例如: -9

                第二种使用: 减号

                    说明: 左右两边操作数是:整数,小数,char类型

                    例如: 100 - '1' - 5.5

                    总结: 任意一个算术表达式,例如:100 - '1' - 5.5 的结果类型是表达式的最大类型

            乘法运算:*

                 说明: 左右两边操作数是:整数,小数,char类型

                 例如: 10 * '菜'

            除法运算:/

                 说明: 左右两边操作数是:整数,小数,char类型

                 例如: 10 / 3    ---> 3

                 例如: 10 / 0    ---> 数学异常:ArithmeticException

                 结论: 整数和整数做除法只能得到整数

                        分母不能为:0 ,否则就会出现数学异常

            取余运算符: %

                 说明: 左右两边操作数是:整数,小数,char类型

                 例如: 10 % 3      ---->  1

                 例如: 10 % 3.0    ---->  1.0

                 推导:

                     1 % 3 = 1

                     2 % 3 = 2

                     3 % 3 = 0

                     4 % 3 = 1

                     ...

                     m % n = [0,n-1] : m> 0 , n > 0 -- 任意一个整数m 对另外一个整数n 取余,余数的范围:[0,n-1]

            【随堂练习】

                1、判断一个数是奇数还是偶数;

                    分析:

                        1. 定义一个整数变量:num

                            int num = 19;

                        2. 使用if...else 双选结构判断num是奇数还是偶数

                           判断条件:

                                   num % 2 == 1 : num 是奇数   常用

                                   num % 2 != 0 : num 是奇数

                                   num % 2 == 0 : num 是偶数   常用

                                   num % 2 != 1 : num 是偶数

                         3.根据判断情况,打印结果

                     说明:java中 , = 是赋值号, == 判断是否相等

                     补充: 判断一般使用分支结构:if

                         两种情况讨论:if...else

                         if(判断条件){

                            当 判断条件 成立,执行的代码

                         }

                         else{

                            当 判断条件 不成立,执行的代码

                         }

                2、获取整数987的百位数、十位数和个位数。

                     分析:

                         1. 定义一个整数变量num,值为:987

                              int num = 987;

                         2.  获取num的个位,十位,百位上的数

                              int bit1 = num % 10;

                              int bit2 = num / 10 % 10; 常用

                              int bit2 = num % 100 / 10 ;

                              int bit3 = num / 100 % 10 ;

                         3.打印输出结果

        -- 一元算术运算符:++ , --      例如: ++num

            说明:1. ++ , --只能针对变量,不能应用于常量

              以++为例:

                   单独使用:  95%  在循环结构中使用

                        ++在变量的前面和后面没有区别,都是等价于:num = num + 1;

                   参与其他运算:5%

                         ++num : 先让num自增加1 ,然后num自增之后的值参与其他运算

                         num++ : 先拿到num自增加1之前的值参与其他运算,算完之后再让num自增加1

             【思考】

                1、可以对常量进行递增或递减操作吗?例如:5++或++5。

                     不行, 因为常量值不能改变,而++是为了自增改变值

                2、int num = 5; num = num++;请问代码执行后num的值为多少?

             

赋值运算符

         分类:

              普通的赋值运算符: =

              特殊的赋值运算符: += , -= , *= , /= , %=

                  明确: 1. 特殊的赋值运算符是二元算术运算符和 普通的赋值运算符 的结合体

                        2. += 之间不能有空格

             a += b;

             说明: b 可以是常量  ,可以是表达式,也可以是变量

             a += b; 等效于: a = (a的类型)(a + (b));

             a -= b; 等效于: a = (a的类型)(a - (b));

             a *= b; 等效于: a = (a的类型)(a * (b));

             a /= b; 等效于: a = (a的类型)(a / (b));

             a %= b; 等效于: a = (a的类型)(a % (b));

             结论:特殊的赋值运算符隐含了强制类型转换

             使用中一般采用:sum = sum + 10;  -- 不建议用:sum += 10;

                1、交换两个变量的值(用三种方式实现)。

                     int a = 3 , b = 5;

                     交换之后: a = 5 , b = 3

                     方式一: 使用临时变量temp       推荐

                           优点: 思路简单   缺点:浪费内存

                     方式二: 使用一加两减

                           优点:节约内存    缺点: 思路复杂

                     方式三:采用异或位运算      位运算讲解

   

                1、short num = 11; num = num + 1; 和short num = 11; num += 1;哪一个正确呢?

                  第二个正确:  num += 1;等效于: num = (short)(num + 1);

                2、int sum += 30; 请问这行语句语法是否正确???

                   int sum = sum + 30;

比较运算符

        分类: > , < , >= , <= , == , !=

        明确: 1. 比较运算符是 二元运算符

              2. 比较运算符的运算结果是boolean类型

         == : 等于符号

            说明:  如果比较的是基本数据类型, == 比较的是数据值是否相等

                   如果比较的是引用数据类型, == 比较的是内存地址值是否相同

          !=: 不等于

             例如: a != b;

             当 a != b 成立时 ,结果为:true

             当 a != b 不成立时 ,结果为:false

逻辑运算符

        分类: & , | , ^ , !  , && , ||

        明确: 逻辑运算符两边的操作数是boolean类型,最终的结果也是boolean类型

       

        逻辑与:&  

            执行的特点: 有false则false

              辅助记忆: 有房? 并且 有车?

        逻辑与:|

            执行的特点: 有true则true

              辅助记忆: 有房? 或者 有车?

        逻辑异或:^

             执行的特点: 相同为false ,不同为true

                辅助记忆: 同级相斥,异级相吸

        逻辑非 : !      一元运算符

             执行特点: 取反 , 非true为false , 非false为true

             注意事项: 逻辑非一般只用一个。

        短路与: &&

            运行特点: & 和 &&  都是有false则false,但是&& 具有短路效果

            短路效果 : 效率比&高

                  当左边结果为:false时, 右边不执行,直接将左边false作为最终的结果

                  当左边结果为:true时, 右边执行,将右边执行的结果作为最终的结果

        短路或: ||

             运行特点: | 和 ||  都是有true则true,但是|| 具有短路效果

             短路效果:当左边结果为:true时, 右边不执行,直接将左边true作为最终的结果

                       当左边结果为:false时, 右边执行,将右边执行的结果作为最终的结果

           补充: 4(包含)~6(不包含) : [4 , 6) 之间所有的整数

           补充: 4(包含)~6.0(不包含) : [4 , 6.0) 之间所有的整数和小数

        练习:

            1、判断一个数是否在4(包含)~6(不包含)之间;

               分析:

                    1. 定义一个int类型的整数变量,变量名:num

                        int num = 5;

                    2. 判断num是否在[4,6)之间

                           条件一:num >= 4

                           条件二:num < 6

                          数学中: 4 <= num < 6

                          java中: 4 <= num && num < 6

            2、判断一个数是否在4(不包含)~6(包含)之外;

            3、判断一个数是否在4(不包含)~6.0(包含)之外;

位运算符

          逻辑运算符: &    |    ^   !

          分类: & ,  |  , ^ , ~ , <<  ,  >>  , >>>

          明确: 位运算符直接操作二进制,运算效率比普通的运算符高

          与位运算: &        二元运算符, 左右两边的操作数可以是整数

             运行特点: 有0则0

          或位运算: |        二元运算符, 左右两边的操作数可以是整数

             运行特点: 有1则1

          异或位运算: ^     二元运算符, 左右两边的操作数可以是整数

             运行特点: 相同为0 , 不同为1\

             结论: 任意两个正整数:m , n,  当m连续异或两次n值还是:m

                 m ^ n ^ n = m

                 n ^ m ^ n = m

             使用场景:异或位运算符以后可以做数据加密

                 123 ^ n   -->  程序员  --->    123 ^ n ^ n

                 exct ^ 3 -->   程序员  --->    exct ^ 3 ^ 3

            练习: 交换两个整数变量的位置:int a = 3 , b = 5;

                        a = a ^ b;

                        b = a ^ b;

                        a = a ^ b;

         非位运算: ~           一元运算符, 右边的操作数可以是整数

              运行特点: 取反: 非0为1,非1为0

         左移位运算: <<          二元运算符, 左右边的操作数可以是整数

              特点: 直接将二进制值向左边移动,然后最低为补0

              结论:m和n都是正整数, m << n 等效于:m * 2 ^ n

          右移位运算: >>         二元运算符, 左右边的操作数可以是整数

                正整数右移:最高位补0

                负整数右移:最高位补1

                结论: m和n都是整数, m >> n 等效于:m / (2 ^ n)

         无符号右移: >>>       二元运算符, 左右边的操作数可以是整数

             >>>  和  >>   区别:

               负整数 无符号右移 最高位补0

               负整数 右移 最高位补1

      题: 请写出 5 * 2 的最高效表示?  5 << 1

三目运算符

          明确: 三目运算符 需要三个操作数才能完成运算给,又称为三元运算符

          格式: 关系表达式? 结果1 : 结果2 ;

          例如: num % 2 == 0 ? "偶数":"奇数";

          执行流程: 先计算关系表达式的结果

                          当 关系表达式 结果为:true时, 将结果1 赋值给 左边的变量

                          当 关系表达式 结果为:false时, 将结果2 赋值给 左边的变量

        练习:

             1、获取两个数的最大值或最小值

                分析:

                    1. 定义两个int类型整数, num1 和num2

                           int num1 = 10 , num2 = 20;

                    2. 使用三目运算符求出 num1 和num2 中的最大值

                           int max =  ( num1 > num2 ? num1 : num2);

                    3. 输出结果

            2. 获取三个数的最小值

                  1. 定义三个int类型的整数:a, b , c

                     int a = 7 , b = 8 , c = 1;

                  2. 使用三目运算符求出a和b中的较小值,使用临时变量temp接收

                     int temp = a > b ? b : a;

                  3. 使用三目运算符求出temp和c中的较小值 ,使用最下值变量min 接收

                     int min = temp > c ? c : temp;

                  4. 输出打印min即为最小值

          注意事项:  1. 结果1 和 结果2的数据类型要保持一致

                     2. 运算符的运算符优先级:

                             = : 先算右边,再把右边的结果赋值给左边

                             && : 从左往右一顺算

                             关系表达式? 结果1 : 结果2 ;   先判断关系表达式,得到结果再赋值给左边的变量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值