Java逻辑运算符&关系运算符&条件控制

知识回顾:
1.关键字:
2.数据类型
2类:
基本数据类型:
byte --> short --> char --> int --> long --> float --> double
boolean

引用型数据类型:

接口
数组

3.数据类型转换
小转大    
小类型转化为大类型 --> 隐式转换
大类型  变量名称 = 小类型;
大转小
大类型转化小类型  --> 显式转换
小类型 变量名称 = (小类型)大类型值;
what  是什么?          如何使用?

how   如何使用?        为什么要这么用

why   为什么要这么用?  这是个什么?
4.变量:
什么是变量? 
变量语法格式?
变量定义? 如何使用它 
变量分类:
按位置分:
成员变量
局部变量
就近原则
作用域范围,也是变量的生命周期


5.常量
什么是常量?
魔鬼数字?
订单
新建           0 
支付中   1
支付完成       2 
支付失败       3 ---->-1
配送中         4
配送完成       5
订单完成       6

setOrderState(3);//魔鬼数字
1.将设置订单的值为3的代码值都需要改成-1,如果这个数字代表状态再次发生改变,那么又都需要修改
2.直接设置具体的数字,代码比较晦涩难以理解,可读性差
如果某一个地方忘记修改,那么引起程序的问题是不可估量的.

6.
运算符
算术运算符:
+ - * /  
% 求整除的余数
++
++在前
先做自身的加1运算
++在后
先参与其他运算,然后再做自身的加1运算
--
--在前
先做自身的减1运算
--在后
先参与其他运算,再做自身的减1运算

新知识:

拼接运算符: + 
当字符串与数字拼接在一起时,最终会产生一个新的字符串,注意:类型是字符串 String
如果字符串后面有多个数字拼接运算,希望数字优先运算,需要使用()提高运算的优先级
===>System.out.println("我爱"+7+2)   //我爱72,从左至右,"我爱"+7为字符串,字符串再+2
    System.out.println("我爱"+(7+2)) //我爱9,()提高运算优先级,先运算7+2

逻辑运算符:
逻辑运算符用于对boolean类型的数据进行运算,且最终产生的运算结果也为boolean类型

逻辑运算运算规则:
&   与
&&  短路与
只有所有表达式的值都为true时,最终运算结果则为true,否则为false
(自己要有一个false,则结果必为false)

|   或
||  短路或
只有所有表达式的值都为false,最终运算结果为false,否则为true
(只要有一个true,结果必为true)


!   非
取反, !true  --> false   !false --> true

^   异或
两个值相同则为false,不同则为true
===>true^true-->false

比较&和&&的,|和||的区别:
1.运算的优先级不同
& 高于 &&
| 高于 ||

2.&&的运算效率高于&,||运算高于|
&和|会运算每一个表达式,但是&&遇到第一个false时,就会停止后面表达式的运算,直接返回false
||遇到第一个true时,就会停止后面表达式的运算直接返回true
====>

public class Demo_逻辑运算符的比较{

    public static void main(String[] args){
        System.out.println(test01());
        System.out.println("=======================");
        System.out.println(test01()&test02());//false
        /***
        通过对比,发现使用|时,test02,test01都执行了,而使用||时,test02执行了,但是test01没有执行  
        |与||或运算结果虽然相同,但是||比|少运算3个表达式,运算的效率高一些.
        因为当||遇到第一个true时就会停止运算,后面的表达式将不会运算,直接返回结果为true,但是|会运算每一个表达式.
        &和&&,&&遇到一个false时,就会停止运算,后面表达式就不会运算,直接返回结果false,但是&会运算每一个表达式
        
        */
        System.out.println("=========比较| 与 ||==============");
        System.out.println(test02()|test01()|test03()|test04());       //true,先跳转到test02(),打印test02,返回true,或运算,结果定为true,但后面也会运算
        System.out.println(test02()||test01()||test03()||test04());    //true,跳转到test02(),打印test02,返回true,短路或运算,结果定为true,后面不在运算
        System.out.println("=========比较& 与 &&==============");
        System.out.println(test01()&test02());                         //false,打印test01,返回false,短路与,结果false,运算结果注定,但运算不结束
        System.out.println(test01()&&test02());                        //false,打印test01,返回false,短路与,结果false,运算结果出来,运算结束
    }

    //test01 ---> false
    public static boolean test01(){
        System.out.println("test01");
        return false;
    }
    //test02 ---> true
    public static boolean test02(){
        System.out.println("test02");
        //很耗时间的操作
        return true;
    }
    //test03 ---> false
    public static boolean test03(){
        System.out.println("test03");
        return false;
    }
    //test04 ---> true
    public static boolean test04(){
        System.out.println("test04");
        return true;
    }

}




关系运算符:
注意:关系运算符,最终运算结果是一个boolean值

==   判断2个值是否相等
!=   不等于
>    大于
< 小于
>=   大于或等于
<=   小于或等于

赋值运算符: =
语法格式:
数据类型  变量名称  = 值;
语法解释:
将=号右边的值赋给等号左边.
例如:
int m = 2; ===> 将值2赋给m

组合写法:
+= , *= ,/=, %=       

m +=3--->m = m+3   
int m = 2; m += 3;  System.out.println(m);    //m = m+3 = 2+3=5
m *= 2;  System.out.println(m);    //m = m*2 = 5*2=10
int m = 10;
m%=3;
m = m % 3;

三目运算符(三元运算符):
语法:
x = 表达式?m:n;

语法解释:
当表达式的最终运算结果为true,则将值m赋给x,否则将值n赋给x.
====>

public class Demo_三元运算符{

    public static void main(String[] args){
        int m = true?1:2;
        System.out.println(m);
        int n = false?1:2;
        System.out.println(n);
        int x = ((2>1)||(10-9)<8&&(100%3 == 0))?1:2;    //&&优先级高于||,true&&flase为false,true||false为true,结果为1
        System.out.println(x);
    }

}



特殊符号:
\t 制表
\n 换行符
\r\n 换行
\ 转义符

public class Demo_特殊符号{

    public static void main(String[] args){
        System.out.print("张三");      //System.out.println打印结果会自动换行,会影响下面测试,print打印结果不会换行
        System.out.print("\t");   //System.out.print("\n");
        System.out.print("\r\n"); 
        System.out.print("李四");    //打印李四

        System.out.print("\\");     //打印\
        // 因为在Java中,\具有特殊的意义,将符号进行转化为普通符号,第一个\将第二个\转化为了一个普通字符\.   
        System.out.print("\"我喜欢读书\"");   //打印:  "我喜欢读书"(有双引号)
        System.out.print("我喜欢读书");       //打印 :  我喜欢读书
        System.out.print(""我喜欢读书"");    //报错,英文符号无所谓的正引号,反引号,前后分别组成两对
    }
}


流程控制语句:
程序的执行顺序
3种:
顺序结构
是指程序默认的执行顺序,而默认执行顺序是自上而下.
注意:main方法是java程序的入口   javaweb项目的程序入口 --->web.xml

条件分支结构
满足条件,则执行,不满足条件就不执行.
条件分支:
if条件分支
3种语法格式:
语法格式1:
if(表达式){
    代码块;
}
语法解释:
如果表达式的最终运算结果为true,则执行代码块.

语法格式二:
if(表达式){
      代码块1;
}else{
     代码块2;
}
语法解释:
如果表达式的最终运算结果为true,则执行代码块1,否则执行代码块2.

语法格式3:
if(表达式1){
      代码块1;
}else if(表达式2){
       代码块2;
}.....
else if(表达式n){
     代码块n;
}else{
    代码块n+1;
}

语法解释:
自上而下执行表达式,若表达式的运算结果为true,则执行相应的代码块,
且后面的表达式不会进行运算.若表达式的运算结果为false,则执行下一个表达式,
若所有的表达式运算结果都为false,则执行else中代码块.如果没有else,则结束if分支语句

比较if 与 if else if
如果商品价格大于5000,那么打印,这是奢侈品
如果商品价格大于4000 小于 5000,打印这是高端消费品
如果商品价格大于3000 小于 4000,打印中端消费品
如果商品价格大于2000 小于 3000,打印大众消费品

通过 if实现与if else if实现的对比:
if分支语句,简单,灵活,直观
if else if分支语句相对于语法复杂,但是运行的效率高于if分支语句,
而if分支语句因为每一个判断表达式都会执行,可以使用return进行优化.

return 关键字:
return关键字,可以用于返回值.return也可以用于结束所在的方法.

public class Demo_if与ifelseif比较{

    public static void main(String[] args){
        /***
        如果商品价格大于5000,那么打印,这是奢侈品
        如果商品价格大于4000 小于 5000,打印这是高端消费品
        如果商品价格大于3000 小于 4000,打印中端消费品
        如果商品价格大于2000 小于 3000,打印大众消费品
        
        1.首先定义一个变量,表示是商品的价格
        2.根据这个变量与具体数值的关系,打印对应的信息
        */
        int price = 6000;      //每个if都会检测运行,效率低,可加return关键字提高效率
        if(price > 5000){
              System.out.println("这是奢侈品");   
              //return; 
        }
        if(price>4000 && price < 5000){
               System.out.println("这是高端消费品");
        }
        if(price > 3000 && price < 4000){
               System.out.println("这是中端消费品");
        }
        if(price > 2000 && price < 3000){
                System.out.println("这是大众消费品");
        }

        System.out.println("=====================================");

        /*效率高,但是不直接,没有if一目了然,
        符合人的常规,而且不适合多层嵌套,譬如什么东西?什么牌子的东西? 
        根据它们再看价格判断是否是奢侈品等,需要多层判断嵌套*/
        if(price > 5000){ 
            System.out.println("这是奢侈品");
        }else if(price > 4000 ){
            System.out.println("高端消费品");
        }else if(price > 3000){
            System.out.println("这是中端消费品");
        }else if(price > 2000){
            System.out.println("这是大众消费品");
        }
        /***
        在这个题目中,if分支语句与if else if分支语句都实现了想要的效果.
        但是 if分支语句,会每一个判断表达式都会运算,
        但是if else if不会,遇到true后,后面表达式将不会运算.
        多层嵌套
        if(){
           if(){
             if(){}
           }
        }
        一般在编程中,嵌套最多只允许嵌套3层
        return关键字
        */
    }
}


switch条件分支:


循环结构:
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值