前提——运算符概念
运算符:对常量或者变量进行操作的符号。
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。
- 举例说明:
int a = 10; int b = 20; int c = a + b; • 1 • 2 • 3
+:是运算符,并且是算术运算符。
a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式
算数运算符
符号 | 作用 | 说明 |
“+” | 加 | 参看小学一年级的加法 |
“-” | 减 | 参看小学一年级的减法 |
“*” | 乘 | 参看小学二年级,与“×”相同 |
“/” | 除 | 参看小学二年级,与“÷”相同 |
“%” | 取余 | 获取的是两个数据做除法的余数 |
注意事项:
- /和%的区别:两个数据做除法,/取结果的商,%取结果的余数。
- 整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。
算数运算符代码例子如下:
public class ArithmeticOperatorsExample { public static void main(String[] args) { int a = 10; int b = 5; // 加法 int sum = a + b; System.out.println("Sum: " + sum); // 减法 int difference = a - b; System.out.println("Difference: " + difference); // 乘法 int product = a * b; System.out.println("Product: " + product); // 除法 int quotient = a / b; System.out.println("Quotient: " + quotient); // 取模 int remainder = a % b; System.out.println("Remainder: " + remainder); } }
字符的“+”操作
拿字符在计算机底层对应的数值来进行计算的。
算术表达式中包含多个基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。
提升规则:
- byte类型,short类型和char类型将被提升到int类型
- 整个表达式的类型自动提升到表达式中最高等级操作数同样的类型
等级顺序:byte,short,char → int → long → float → double
字符串的“+”操作
当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。
例:“yangsimo”+ 666 的结果为:yangsimo666
在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。
例:1 + 99 + “年大米” 的结果为:100年大米
赋值运算符
符号 | 作用 | 说明 |
“=” | 赋值 | a=10,将10赋值给变量a |
“+=” | 加后赋值 | a+=b,将a+b的值给a |
“-=” | 减后赋值 | a-=b,将a-b的值给a |
“*=” | 乘后赋值 | a*=b,将a×b的值给a |
“/=” | 除后赋值 | a/=b,将a÷b的商给a |
“%=” | 取余后赋值 | a%=b,将a÷b的余数给a |
注意事项:
扩展的赋值运算符隐含了强制类型转换。
赋值运算符代码例子如下:
自增自减运算符
符号 | 作用 | 说明 |
“++” | 自增 | 变量的值加1 |
“–” | 自减 | 变量的值减1 |
注意事项:
- ++和-- 既可以放在变量的后边,也可以放在变量的前边。
- 单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–。
参与操作的时候,如果放在变量的前边,先拿变量做++或者–,后拿变量参与操作。
例:
int a=5; //a=5 int b=++a; //a=6 b=6 int c=a++; //a=6 c=5
关系运算符
符号 | 说明 |
“==” | a==b,判断a和b的值是否相等,成立为true,不成立为false |
“!=” | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
“>” | a>b,判断a是否大于b,成立为true,不成立为false |
“>=” | a>=b,判断a是否大于等于b,成立为true,不成立为false |
“<” | a<b,判断a是否小于b,成立为true,不成立为false |
“<=” | a<=b,判断a是否小于等于b,成立为true,不成立为false |
注意事项:
关系运算符的结果都是boolean类型,要么是true,要么是false。
千万不要把“==”误写成“=”。
逻辑运算符
符号 | 作用 | 说明 |
“&” | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
" | " | 逻辑或 | a |
“^” | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
“!” | 逻辑非 | !a,结果和a的结果正好相反 |
在数学中,一个数据x,大于3,小于6,我们可以这样来进行表示:3<x<6。在Java中,需要把上面的式子先进行拆解,再进行合并表达。
拆解为:x>3 和 x<6
合并后:x>3 && x<6
&&其实就是一个逻辑运算符。
我们可以这样说,逻辑运算符,是用来连接关系表达式的运算符。
当然,逻辑运算符也可以直接连接布尔类型的常量或者变量。
短路逻辑运算符
符号 | 作用 | 说明 |
“&&” | 短路与 | 作用和&相同,但是有短路效果 |
" || " | 短路或 | 作用和 |
注意事项:
- 逻辑与&,无论左边真假,右边都要执行。
短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。 - 逻辑或|,无论左边真假,右边都要执行。
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。
三元运算符
- 格式:关系表达式 ? 表达式1 : 表达式2;
- 范例:a > b ? a : b;
计算规则:
首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果
例子:
public class ConditionalOperator { public static void main(String[] args) { int x = 10; int y = 5; int z = x>y ? 100 : 50; System.out.println(z); // 100 } }
运算符优先级
为什么要学优先级
Java是一种广泛使用的编程语言,其中运算符是语言中的重要组成部分。Java运算符的优先级非常重要,影响着表达式的运算顺序。理解Java运算符的优先级可以帮助开发者编写更高效、更易于维护的代码。
优先级
例如以下代码,先算括号中的,后算加法:
public class Test { public static void main(String[] args) { int a = 10; int b = 20; int c = 30; System.out.println(a + (b * c)); } }
Java中的面向对象运算符包括方法调用、属性访问和继承等。面向对象运算符按照优先级从高到低的顺序执行。例如,如果调用一个对象的方法,则方法将按顺序执行,直到方法执行完毕。同样地,如果访问对象的属性,则属性的值将被更新,直到方法执行完毕。
在Java中,运算符的优先级从高到低依次为:算术运算符、逻辑运算符、位运算符和面向对象运算符。本文将深入理解Java运算符的优先级。
总结
以上是 Java 中常见的一些运算符及其用法。在实际编程中,可以根据需要选择适当的运算符来实现所需的运算和操作。大家在学习运算符过程中对任意一个运算符不理解的可以私聊博主,我会一一给大家解答!