算术运算符用在数学表达式中,它们的作用和在数学中的作用一样
操作符名称描述+加法相加运算符两侧的值–减法左操作数减去右操作数*乘法相乘操作符两侧的值/除法左操作数除以右操作数%取余左操作数除以右操作数的余数++自增操作数的值增加1–自减操作数的值减少1%取模两个数相除的余数测试
public class Demo01 { public static void main(String[] args) { int a = 10; int b = 20; int c = 30; int d = 40; long e = 5145646546L; int f = 120; short g = 32; byte h = 11; System.out.println(a+b); System.out.println(a-b); System.out.println(a*c); System.out.println(a/(double)d); System.out.println(d%c); System.out.println(a++); //先使用a,再加1 System.out.println(--b); //先减1,再使用b System.out.println("========================"); System.out.println(e+f+g+h); //long System.out.println(f+g+h); //int System.out.println(g+h); //int } }注意点:
.如果+号用于字符串的时候,那么+号就是一个连接符,并不是做加法功能了。
.连接符的作用:让任何的数据都可以与字符串进行拼接。
.任何类型的数据与字符串使用连接符连接,那么结果都是字符串类型的数据。
比较运算符的结果一定是boolean类型,也叫关系运算符
操作符名称描述>大于判断左边的数是否大于右边<小于判断右边的数是否大于左边==等于判断两边的数是否相等>=大于等于判断左边的数是否大于或者等于右边<=小于等于判断右边的数是否大于或者等于左边!=不等于判断两边的数是否不相等测试
public class Demo02 { public static void main(String[] args) { int a = 10; int b = 20; int c = 20; System.out.println(a>b); System.out.println(a<b); System.out.println(a>=b); System.out.println(c<=b); System.out.println(a==b); System.out.println(a!=b); } }测试
public class Demo03 { public static void main(String[] args) { boolean a = false; boolean b = true; //短路与,前一个表达式的值为false,不在判断下一个表达式,只判断到a System.out.println(a&&b); //短路与,前一个表达式的值为false,后面继续判断 System.out.println(a&b); //短路或,前一个表达式的值为true,不在判断下一个表达式,只判断到b System.out.println(b||a); //短路或,前一个表达式的值为true,后面继续判断 System.out.println(b|a); System.out.println(!a); } }测试
public class Demo04 { public static void main(String[] args) { int a = 0b1101; int b = -0b11001; System.out.println(a&b); System.out.println(a|b); System.out.println(a^b); /*计算机中二进制是以补码形式存在的,对于正数来说,其反码和补码和补码就是本身,所以取反后在内存中是一个负数 的补码,所以其输出的结果因为(原码)是减1再对非符号位取反,因为负数的补码是非符号位取反再加一。对于正数来说,其反码和补码和补码就是本身,所以取反后在内存中是一个负数 的补码,所以其输出的结果因为(原码)是减1再对非符号位取反,因为负数的补码是非符号位取反再加一,例如*1101(13),其取反后为10010(补码),反码为10001,源码为11110(-14). 对于负数来说,先计算其补码,再取反,就是输出结果(补码)。例如111001(-25),反码100110,补码100111,取反后011000(24)*/ System.out.println(~a); System.out .println(~b); System.out.println("==================="); System.out.println(a<<1); System.out.println(b<<1); System.out.println(a>>1); System.out.println(b>>1); } }注意点
计算机中二进制是以补码形式存在的,对于正数来说,其反码和补码和补码就是本身,所以取反后在内存中是一个负数的补码,所以其输出的结果因为(原码)是 减1再对非符号位取反,因为负数的补码是非符号位取反再加一。对于正数来说,其反码和补码和补码就是本身,所以取反后在内存中是一个负数的补码,所以 其输出的结果因为(原码)是减1再对非符号位取反,因为负数的补码是非符号位取反再加一,例如*1101(13),其取反后为10010(补码),反码为10001,源 码为11110(-14)。对于负数来说,先计算其补码,再取反,就是输出结果(补码)。例如111001(-25),反码100110,补码100111,取反011000(24)。
条件运算符也叫三目运算符,
语法:(条件) ? 结果一 : 结果二;
测试
public class Demo05 { public static void main(String[] args) { int a = 5; int b = 6; System.out.println((a>b)?true:false); } } instanceof运算符可以确定对象是否属于一个特定的类.该运算符是二目运算符,左边的操作元是一个对象,右边是一个类,当左边的对象是右边的类或子类创 建的对象时,该运算符运算的结果是true,否则是false。,使用格式:( Object reference variable ) instanceof (class/interface type)
在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错 误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。相同优先级中,按结合顺序计算.\1.
通常优先级由高到底的顺序依次是:
1.括号级别最高,逗号级别最低;
2.单目 > 算术 > 位移 > 关系 > 逻辑 > 三目 > 赋值。
3.除了单目运算符、赋值运算符和条件运算符,其他的运算符都是从左到右结合的。
文章部分参考:https://www.cnblogs.com/jpfss/p/11014790.html