Java基础(day04)(运算符)

目录

运算符

                算术运算符  : 

                +(求和)   -(求差)   *(求积) 

                          /(求商运算) 

                        %(取余) 

               ++ (自增运算符)           --(自减运算符)

                 赋值运算符  :  

               关系运算符  : 

                逻辑运算符  : 

                三目运算符(三元表达式)  : 

                位运算符  :  


运算符

        概念 : 被指定了运算规则的符号

        分类  : 

                算术运算符  : 

                +(求和)   -(求差)   *(求积) 

                                

                         应用场景  :  

                        1*输出语句对字面值直接使用

                        2*输出语句中对变量运算

                        3*将运算的结果保存在变量

                结果数据类型的问题  :  

                        1*结果数据类型和运算元素中大类型保持一致

                                例  :  double a = b(int)+c(double)

                         2*byte  short  char  参与运算时,会自动提升为int类型

                                

byte b1 = 3;
byte b2 = 4;
byte sum = b1+b2;
        

                        编译会报错,如何改错?

                                1*强制类型转换

                                        byte sum = (byte)(b1+b2);

                                2*修改结果数据类型

                                        int sum = b1 + b2 ;               

                               但是:

                                byte  sum2 = 3+4;编译不会报错

                                原因 :  

                                        1*编译期间只校验变量类型,不确定变量的值

                                        2*编译期间进行优化,对于字面值会在编译期由虚拟机进行运算,所以以上程序编译之后

                                                byte  sum1  =  7;并检查7在不在byte的范围之内,如果超出范围,编译报错

                       

                        

                          /(求商运算) 

        System.out.println(6/4);//1

                          1*int/int结果必然为int类型  只取整数部分

                          2*除数为0的情况  :  被除数为整型,编译不会报错,运行会抛出异常

                             被除数为正浮点数  :  

                                        System.out.println(2.0/0);//Infinity无穷大

                                        System.out.println(0/0); //NaN--not a number 非数字

                                        System.out.println(-2.0/0);//-Infinity无穷小                             

                        %(取余) 

                                应用场景

                                        整数--余数为0

                                        奇偶数--对2进行取余运算 判断余数是否为0

                                        1   2   3...10    hash随机散列

                                        分成3组  每组的个数尽量均衡

                                        num%3  结果  0  1  2  

               ++ (自增运算符)           --(自减运算符)

                                int  x = 2;

                                让x变量的值+1

                                        x = ++x;

                        应用场景 : 作用于变量,不能应用字面值或者常量

                        常量 : x++;<=>(type)(x+1)

                        考虑++可能会超出范围从而得到错误的数据值

                        ++可以在变量前也可以在变量后

                               变量在前,++在后,则先使用变量的值参加运行  再让变量+1

                                ++在前,变量在后,则先让变量的值自加1,再参与运算

                         注意 : 实际开发中最好不要写太复杂的表达式,会降低程序的可读性
               

                                               

                 赋值运算符  :  

                        =  :  最基本的赋值运算符,优先级最低;不表示相等或不相等,只用来赋值

                        += : a+=b<=>a=(type)(a+b)

                                a只能是变量,不能是常量或字面值

                        

               关系运算符  : 

                                <  >   >=   <=   !=  ==  

                        执行结果必然是boolean    true 或false

                逻辑运算符  : 

                                       &(且)          |(或)       ^(异或)     !(非   取反)   

                                       &&(双与   短路与)    ||(双或    短路或)

                                针对boolean类型的值来做运算的,结果也还是boolean类型的值

                        &  :      要求两个条件同时成立,结果才成立

                                x&y:  x的取值要么为true  要么为false

                                true&false=  false

                                true&true=  true

                                false&true=    false 

                                false&fasle=      false

                          总结  :   全true为true    有一个false,结果就为false

                        |   :   

                                x|y:  x的取值要么为true  要么为false

                                true|false=  true

                                true|true=  true

                                false|true=    true

                                false|fasle=      false

                          总结  :   全false为false    有一个true,结果就为true

                        !  :                  

                                x=true     !x=false

                                y=false    !y=true

                        ^  :  

                                x^y:  x的取值要么为true  要么为false

                                true^false=  true

                                true^true= false

                                false^true=    true

                                false^fasle=      true

                          总结  :   俩元素相同为false,不同则为true

                        &&  : 

                                false&&(1+2+...+100000000>164686516)=false

                                总结  : 

                                        &&左边为false时,右边不再执行,结果必然为false

                                        &&左边如果为true,则效果等同于&

                        ||  : 

                                总结  : 

                                        ||左边为true时,右边不再执行,结果必然为true

                                        ||左边如果为false,效果同|

                                        

                三目运算符(三元表达式)  : 

                                单目  :  一元  x++   !x

                                双目  :  二元  x+y  x&y

                                格式  :  表达式或值?     表达式1或值1   :    表达式2或值2

                                要求  :  ?前表达式或值必须为boolean类型

                                执行流程:  

                                        1*执行表达式或值

                                                true   :  表达式1或值1

                                                false  :  表达式2或值2

                                案例  : 

                                        判断num的奇偶性

                                         

        int a = 5;
        int b = 10;
        int c = 15;
        System.out.println(a % 2 == 0 ? "偶数" : "奇数");
        System.out.println(a % 5 == 0 ? "ok" : "不ok");
        System.out.println(a >b ? "a" : "b");
        System.out.println(a >b ? a>c?a:c : b>c?b:c);

       

                位运算符  :  

                        了解即可, 为了在源代码中能看懂  实际开发使用较少

                        整型来做运算 : 基于整数的二进制形式做运算

                        &(按位与)     |(按位或)     ~(按位取反)     ^(按位取反)

                        <<(按位左移)    >>(按位右移)    >>>(按位无符号右移)

                x&y    例如   

                                 1&2=0

                                  按位与

                                  转为2进制  :  整数字面默认为int  int占四个字节  32位二进制

                                  最高位  :  最右边位   符号位

                                

                                1|2=3

                                按位或

                                1|1或1|0或0|1=1  0|0=0

                                

                                ~(按位取反)

                                ~x  例如  ~1=-2

                                ~1=0   ~0=1

                                ~i = -(i+1)

                                

                        <<(按位左移)

                                x<<y  将x的二进制整体左移y位,左侧多出来的直接舍弃  右侧空出来的补0

                                x<<y   <==>  x*2^y

                        >>(按位右移) 

                                x>>y 将x的二进制整体右移y位 右侧多出来的直接舍弃 左侧空出来的补和符号一致的数字

                                x>>y   <==>  x/2^y

                        x>>>y(按位无符号右移)

                                将x的二进制整体右移y位  右侧多出来的直接舍弃  左侧空出来的补0

总结: 

        运算符

                算术运算符

                        +-*/ % ++ -- 

                赋值运算符

                        =  +=  -=  &=  |=

                关系运算符

                        <  >   <=  >=   ==   !=

                逻辑运算符

                        &  |  !  ^  &&  ||

                三目运算符

                        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java语法基础练习题包括九九乘法表、数组小代码练习、运算符练习和分支结构练习。以下是这些练习题的示例代码: 九九乘法表: ``` package day05; public class MultiTable { public static void main(String[] args) { for(int num=1;num<=9;num++) { //控制行 for(int i=1;i<=num;i++) { //控制列 System.out.print(i + "*" + num + "=" + i*num + "\t"); } System.out.println(); //换行 } } } ``` 数组小代码练习: ``` int[] array1 = {1, 2, 3, 4, 5};int[] array2 = new int = 6; array2 = 7; array2 = 8; ``` 运算符练习: ``` int a = 5, b = 10, c = 5; boolean b1 = b > a; System.out.println(b1); //true System.out.println(c < b); //true System.out.println(a >= c); //true System.out.println(b <= a); //false System.out.println(b == c); //false System.out.println(a != c); //false System.out.println(a > 10); //false System.out.println(b % 2 == 0); //true System.out.println(c++ > 5); //false------c自增1变为6 System.out.println(c++ > 5); //true-------c自增1变为7 ``` 分支结构练习: ``` int num = 5; int flag = num > 0 ? 1 : -1; System.out.println(flag); //1 int a = 8, b = 5; int max = a > b ? a : b; System.out.println("max=" + max); int number = 10; if(number % 2 == 0) { System.out.println(number + "是偶数"); } else { System.out.println(number + "是奇数"); } double price = 600; if(price >= 500) { double discount = price * 0.8; System.out.println("满500打8折,优惠后价格为" + discount); } else { System.out.println("未满500,无优惠"); } ``` 希望以上代码可以帮助到您进行Java语法基础练习。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [java基础练习题(含答案共39道)-语言基础篇](https://blog.csdn.net/u013488276/article/details/124110443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小乔同学Online

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值