Java运算符、运算符优先级

一、运算符
  • 算数运算符
    (1)自增自减运算符:注意前缀和后缀,是使用之前还是使用之后
    (2)一元“+”和“-”运算符:前者的结果是数值本身,后者的结果是数值的相反数
    (3)取模运算符
 double a=14.0%3.0;//2.0
 double b=-14.0%3.0;//-2.0
 double c=-14.0%-3.0;//-2.0

(4)四则运算符“+” ,“-”, “*”, “/”

  • 关系运算符
    (1)int和boolean不能比较
    (2)a<b<c或者a==b ==c这俩种比较法都是不正确的
    (3)引用类型比较的时候看俩个引用类型变量是否指向同一个对象实例,即是否指向同一个内存
    例:
        Integer a1 = 127;
        Integer a2 = 127;
        Integer a3=new Integer(127);
        Integer a4=new Integer(127);
        Integer a5=a4;
        System.out.println(a1==a1);//true
        System.out.println(a3==a4);//false
        System.out.println(a2==a3);//false
        System.out.println(a5==a2);//false
        System.out.println(a4==a5);//true

(4)不同引用类型之间不能比较
(5)引用类型值的相等关系比较,比较俩个引用类型变量的值是否相等,使用equals(Object obj)方法,用于实现比较俩个类的值是否相等的算法,简单来说俩个类的值一样则true

Java中值传递
public class c {
    public static void main(String[] args) {
        String str = "6";
        test(str);
        System.out.println(str);
    }
    public static void test(String str) {
        str += "10";
    }
}
//6
字符串拼接

字符串拼接时,只有纯常量的拼接("+")不会转为StringBuilder,直接在常量池内寻找是否存在已有值。否则,只要存在一个字符串变量的"+",都会转为StringBuilder调用append(),”==“是false

例题一:

public class StringDemo1 {
    //  5个 
    public static void main(String[] args) {
        // 2
        String str1 = new String("abc");
        // 1
        //此时只需要开辟一个内存new一个对象,不需要,已经有str的值了
        String str2 = new String("abc");
        // 2
        String str3 = new String("abcd");
    }
}

例题二:

        String str1 = "abc";
        String str2 = "ab";
        String str3 = "c";
        // String -> StringBuilder.append()
        // toString()
        String str4 = str2 + str3;
        String str5 = str2 + str3;
        String str6 = new String("abc");
        String str7 = "ab" + "c";
        String str8 = str2 + "c";
        System.out.println(str1 == str6);//false
        System.out.println(str1 == str4);//false
        System.out.println(str4 == str5);//false
        System.out.println(str1 == str7);//true
        System.out.println(str1 == str8);//false
  • 逻辑运算符
    优先级顺序:!(逻辑非)>&(逻辑与)>^(逻辑异或)>|(逻辑或)>&&(条件与)>||(条件或)
    (1)&和&&都是同真才真
    (2)|和||都是一真则真
    (3)"^":只有一真一假为true,就是"相同为假不同为真"
    (4)需要注意条件与(&&)和条件或(||)的短路问题
    4.位运算符
    (1)~ 按位求补运算符
    (2)<<左移运算符,简单来说左边的舍去,然后右边补0,左移一位相当于乘以2
    (3)>>右移运算符 :算数移位,每移一位右边的舍去,然后左边补符号位,右移一位相当于除以2,
    (4)>>>无符号右移运算符:逻辑移位,每移一位右边的舍去,然后左边补0,无符号右移运算一般对负数计算,负数符号位是1,对于正数来说这种运算没有意义,左边始终都补0,十六进制4个一位
    例:~0xff00等于 ~0x0000ff00 ,结果是ffff00ff
    例:0xf0<<4等价于0x000000f0<<4,结果是0xf00
    例:0xf0>>4等价于0x000000f0>>4,结果是0xf;
    例:0xffffffff>>1,结果是0xffffffff
    例:0xf0>>>4,结果是0xf
    例:0xffffffff>>>1,结果是0x7fffffff
    (5)按位&、|、^运算符
    例:11110101&01000111,结果是01000101
    例:11110101 | 01000111,结果是11110111
    例:11110101 ^ 01000111,结果是 10110010
    5.赋值运算符、条件运算符
    6.字符串运算符
    (1)当其中的一个或者俩个操作数是字符串类型时 ,"+"用来拼接俩个字符串
    (2)boolean类型(true+false)不能相加
 String s="java"+"A"+2020;
 System.out.println(s);//javaA2020

7、o instanceof T测验对象o是否为T类的实例
8、x.m访问对象的实例成员或者类的静态成员
二、运算符优先级
1.基本运算符:x.m 、f(x)、a[x]、x++、x–、new、instanceof
2.一元运算符:+、-、!逻辑求反、~按位求补、++x、–x、(T)x
3.*、/、%
4.+、-
5.<<、>>、>>>
6.<、>、<=、>=、instanceof
7.==、!=
8.&>^>|>&&>||>x? y:z
9.赋值运算符

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值