Java运算符

一、运算符的分类

功能作用分类:算数运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,条件运算符

操作数分类:一元运算符|单目运算符 : 操作数只有一个 +正号 -负号 ++ -- ! 二元运算符|双目运算符 : 操作有2个 + - * / 三元运算符|三目运算符 : 条件运算符

二、算数运算符

+:正号,加法运算,字符连接符

当+左右两边一旦出现字符串,+就作为字符串连接符存在,将左右两边的操作数连接成为一个字符串 %取模(求余数) : 如果左边的操作数<右边的操作数,结果就为左边的操作数 ++自增: 自身+1 a++ | ++a --> a = a+1; --自减:自身-1 a-- | --a --> a = a-1; 只影响自己 : 无论++出现在操作数的前面++a还是后面a++,都是自身+1 无论--出现在操作数的前面--a还是后面a--,都是自身-1 影响别人(输出|运算|赋值) : ++|--如果在操作数的前面,先自身+1|-1,然后再运算使用 ++|--如果在操作数的后面,先再运算使用,然后自身+1|-1

三、赋值运算符

基础赋值运算符(唯一一个自右向左运算的符号)=

扩展赋值运算符(基础运算符+算数运算符)+= -= *= /= %=

优点:1、自动做强制类型转换 2、提高执行效率 (推荐使用扩展赋值运算符,且在编译期间,满足条件的代码会自动转化成扩展赋值运算符)

public class fuzhi{
    public static void main(String[] args){
        int a=0;
        int b=3;
        int c=8;
        a=a+b;
        b+=c;
        
        byte d=1;
        d=(byte)d+1;//需要强制转化类型,扩展赋值自动转化
        d+=1;
        System.out.println();
    }
}

四、比较/关系运算符

比较运算符:< > <= >= == !=

< > <= >=

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

== !=

操作数可以为基本数据类型,或者引用数据类型

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

public class gxbl{
    public static void main(String[] args){
        double d=10/3;//3.33333
        int a=10/3;//3
        System.out.println(a==d);//false
        System.out.println(a);
        System.out.println(d);
        
        
        d=10/3.0;//3.3333333
        a=10/3;//3
        System.out.println(a==d);//false
        System.out.println(a);
        System.out.println(d);
        System.out.println('d'>'c');//运算结果为boolean型
        System.out.println(a==d);//基本数据类型,引用类型都可以
        
    }
}

五、逻辑运算

&与运算:两边都为true,结果为true,一个为false就是false

|或运算:两边都为false,结果为false,一个为true就是true

!:相反

^:相同为false,相反为true

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

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

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

操作数都为值为boolean类型的表达式 建议使用短路运算符

六、条件语句(三目运算符)

条件运算符表达式: 条件表达式(要求表达式结果为boolean型)?值1:值2

如果结果为true,输出值1,反之值2

public class tjOperator{
    public static void main(String[] args){
        //判断数值是否为偶数
        int a=9;
        String s=a%2==0?"偶数":"奇数";
        System.out.println(s);
        int b=19;
        int max=a>b?a:b;
        System.out.println(max);
        //判断三个数值大小
        int d=10;
        int f=1;
        int q=7;
        int max1=a>b?a:b;
        int M=max>c?max:c;
        System.out.println(M);
    }
}

七、位运算符

位运算符(了解):

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

&:一个为0则为0,全为1才是1

|:一个为1则为1,全为0才是0

^:相同为0,不同为1

位移运算符

<<左移运算符

将第一个操作数转为二进制,向左移动第二个操作数的位数,空补为0,最终将二进制转为十进制(变大)

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

右移运算符>>

将第一个操作数转为二进制,向右移动第二个操作数的位数,移出线的位数忽略,最终将二进制转为十进制(变小)

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

public class weiyi{
    public static void main(String[] args){
        //练习题
        int a=10;
        int b=15;
        boolean x = a < b ? ++a * 2 > b || a > b : a < b;//true
        System.out.println(x);
        System.out.println(a<<b);//11*2^15
        System.out.println(a>>b);//11/2^15
        System.out.println(a|b);//15
        System.out.println(a&b);//11
        System.out.println(a^b);//4
        System.out.println(x);
    }
}

八、运算优先级

优先级:单目算数位关系,逻辑三目后赋值

public class youxianji{
    public static void main(String[] args){
        int a = 10;
        int b = 15;
        boolean x = a < b ? ++a * 2 > b || a > b : a < b;
        System.out.println(x);  //true
        
        //&&优先级高于||,先执行&&,后执行||
        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、付费专栏及课程。

余额充值