第三天笔记

运算符

(一).赋值运算符 :

1.基础赋值运算符 :

=是唯一一个自右向左运算的符号

2. 扩展赋值运算符 : (基础赋值运算符+算数运算符)

+= : a+=2; a=a+2;

-= : a-=2; a=a-2;

= : a=2; a=a*2;

/= : a/=2; a=a/2;

%= : a%=2; a=a%2;

优点 : 自动做强制类型转换

提高执行效率

推荐使用扩展赋值运算符

在编译期间,满足条件的代码会自动优化成为扩展赋值运算符

(二).比较|关系运算符 :

< > <= >= : 操作数只能为数值型的操作数 byte short int long float double char

== != : 操作数可以为基本数据类型或者引用数据类型

注意 : 比较运算符的运行结果为boolean结果

public class Class011_Operator{
    
    public static void main(String[] args){
        //练习
        double d=10/3; //3.0
        int a=10/3;  //3
        System.out.println(a==d);    //true
        System.out.println(a);    //3
        System.out.println(d);    //3.0
        
        d=10/3.0;  //3.333
        a=10/3;  //3
        System.out.println(a==d);    //false
        System.out.println(a);    //3
        System.out.println(d);    //3.333
​
        System.out.println("hello"!="hello");  //false
    }
    
}

(三).逻辑运算符 :

两边操作数值都为boolean类型的表达式

& (与): 两边都为true,结果为true,一个为false就为false

|(或) : 一个为true就是true,两个false才为false

!(反) : 取反

^(异或) : 相同为false,相反为true

短路运算符 : 如果第一个操作数的结果就能决定最终的结果,第二个操作数就不执行

&& : 两边都为true,结果为true,一个为false就为false

| | : 一个为true就是true,两个false才为false

建议 : 用短路运算符代替&与|

public class Class012_Operator{
    
    public static void main(String[] args){
        System.out.println("=============练习=================");
        int a=10;
        int b=9;
        System.out.println(a>b & ++b>a);  //F
        System.out.println("a="+a+",b="+b);  //10   10
        System.out.println(a<b | b<a);    //F
        System.out.println(!(a>b ^ a>9)); //F
        System.out.println(10>5 & 10/0==0);//数学异常
        System.out.println(10<5 && 10/0==0); //F
    }
    
}

(四).条件运算符 :

条件表达式?值1 : 值2;

执行流程 :

1.计算条件表达式(要求值为boolean类型的表达式),得到一个boolean结果.

2.如果结果为true,取值1;如果结果为false,取值2

public class Class013_Operator{
    public static void main(String[] args){
        int a = 8;
        
        //判断一个数是否为偶数
        String s = a%2==0?"偶数" : "奇数";
        System.out.println(s);
        int b = 9;
        int max = a>b?a:b;
        System.out.println(max);
        System.out.println(false?"哈哈":123);
        
        //定义3个变量,获取3个变量中的最大数输出
        int c = 13;
        //1)
        max = a>b?a:b;
        max = max>c?max:c;
        System.out.println(max);
        //2)
        max = a>b && a>c?a:b>c?b:c;
        System.out.println(max);
    }
}
//练习
public class Class13_Operator{
    public static void main(String[] args){
        //比较三个值的大小
        int a=3;
        int b=4;
        int c=5;
        int 
        int max=a>b?a:b>c?m:c;
        //int max=a>b?a:b;
        //int max1=max>c?max:c;
        System.out.println(max1);
    }
}

(五).位运算符(了解)

将操作数转为二进制,然后对二进制的数据进行指定规则的运算,最终将结果转为十进制

& : 一个为0就为0,两个为1才是1

| : 一个为1 就为1,两个为0才是0

^ :相同为0,不同为1

(六).位移运算符

<< 左移运算符 : 将第一个操作数转为二进制,向左移动第二个操作数的位数,空位补0,最终的二进制结果转为十进制

规律 : a>>b a*2^b

> > 右移运算符 : 将第一个操作数转为二进制,向右移动第二个操作数的位数,空位补0,最终的二进制结果转为十进制

规律 : a>>b a/2^b

//练习
public class Class14_Operator{
    public static void main(String[] args){
        int a=3;
        int b=4;
        boolean x = a < b ? ++a * 2 > b || a > b : a < b;
        System.out.println(x);//true
        x = a < b ? ++a * 2 > b || a > b : a < b;
        System.out.println(x);//F
    }
}

public class Class014_Operator{
    public static void main(String[] args){
        System.out.println(2&3);  //2
        System.out.println(2|3);  //3
        System.out.println(2^3);  //1
        System.out.println(8<<2);  //32
        System.out.println(8>>2);  //2
        System.out.println(9>>2);  //2
    }
    
}
​

(七).运算符优先级 : 单目算数位关系,逻辑三目后赋值

public class Class015_Operator{
    public static void main(String[] args){
        int a = 2;
        int b = 5;
        boolean x = a < b ? ++a * 2 > b || a > b : a < b;
        System.out.println(x);  //T
        
        //&&优先级高于||,先执行&&,后执行||
        System.out.println(false && true || true); //T
        System.out.println(true || true && false); //T
        
        //条件运算符具有自右向左的结合性
        boolean flag1 = true?true:false?false:false;
        boolean flag2 = (true?true:false)?false:false;//自左向右结合性
        boolean flag3 = true?true:(false?false:false);//自右向左的结合性
        System.out.println(flag1); 
        System.out.println(flag2); 
        System.out.println(flag3); 
    }
    
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值