Java基础之运算符
我们上学的时候已经学过加减乘除等运算符,Java也提供了丰富的运算符,这些运算符按照功能可以分为以下几类:
1.算术运算符:用于执行基本的数学运算。
+(加法)| -(减法)|(乘法)| /(除法)| %(取模)| ++(自增)| --(自减)
自增和自减运算符用于将变量的值增加或减少1。
它们可以放在变量之前(前缀形式)或之后(后缀形式)。
前缀形式(++n)会先改变变量的值,然后返回改变后的值;
后缀形式(n++)会先返回变量的原始值,然后改变变量的值。
代码演示下:
int a = 10;
int b = 20;
int sum = a + b; // 加法
int diff = a - b; // 减法
int prod = a b; // 乘法
int quot = a / b; // 除法
int mod = a % b; // 取模
2.赋值运算符:用于将值赋给变量。
=(赋值)
+=(加后赋值)a+=5;//等同于a=a+5
-=(减后赋值)同理,a-=5;//等同于a=a-5
*=(乘后赋值)
/=(除后赋值)
%=(取模后赋值)
<<=(左移后赋值)
>>=(右移后赋值)
&=(按位与后赋值)
^=(按位异或后赋值)
|=(按位或后赋值)
这个左移右移位的我也不会,看着都头疼,这么多年也没用过忽略了吧,管求她呢。
3.关系运算符:用于比较两个值,并返回一个布尔结果。
==(等于)
!=(不等于)
>(大于)
<(小于)
>=(大于等于)
<=(小于等于)
boolean isEqual = (a == b); // 判断a是否等于b
4.逻辑运算符:用于组合多个条件,并返回一个布尔结果。
&&(逻辑与)
||(逻辑或)
!(逻辑非)
boolean a = true;
boolean b = false;
boolean result = a && b; // 逻辑与运算
5.条件运算符(三元运算符):根据条件返回两个值中的一个。
语法:
条件 ? 值1 : 值2
这个常用啊,经常用它来简写代码:
int max = (a > b) ? a : b;
其实这个就等同于:
// 如果a大于b,则max等于a,否则等于b
int max;
if(a > b){
max = a;
}else{
max = b;
}
System.out.println("a和b最大值:" + max);
6.类型运算符:用于检查对象是否是指定类型的实例。
instanceof 这个我们在关键字那一篇见过哈
语法:
Object obj = "Hello";
boolean isString = obj instanceof String; // 检查 obj 是否是 String 类的实例
System.out.println("obj 是否是 String 类的实例:" + isString );
7.位运算符:用于操作整数类型的二进制位。 哎呀,这玩意一直没细看过,有兴趣研究吧,我列出来不研究。
&(按位与)
|(按位或)
^(按位异或) 这个用过,可以加密图片,叫异或操作。
~(按位非)
<<(左移)前面说了,这个我不会
>>(右移)这个一样不会
>>>(无符号右移)更不会
这些运算符通常用于底层编程,如网络协议、加密算法等,我是没写过。
就是这些了,基本上和数学学过的差不多。
主要是那个自增的前后缀可能混淆:a++和++a,我们用代码再说明一次:
int num1 = 5;
int result1 = ++num1; // num1变成6,result 也是 6, 计算是 num1 = 5+1=6,result1=6,num1先变得6哦
int num2 = 5;
int result2 = num2++; // result2是6,然后num2变成6,计算是result2=num1+1,先给了result2,num2成了6哦
也就是说原始值+1的顺序不一样,想不明白就不用想了,不重要。
初级面试有时候会问这些问题:
赋值运算符 = 和 == 有什么区别?
= 是赋值运算符,用于将右侧的值赋给左侧的变量。
== 是关系运算符,用于比较两个变量的值是否相等。
那== 和 equals() 方法有什么区别?
== 运算符用于比较两个对象的引用是否相同,即它们是否指向内存中的同一个对象。
equals()方法则是用来比较两个对象的内容是否相同,这个后面面向对象的时候学。
逻辑运算符 && 和 & 有什么区别?
逻辑运算符 && 和 & 都表示逻辑与,但是它们在行为上有一个关键的区别:
&&(逻辑与):也称为短路逻辑与。如果第一个操作数为 false,那么第二个操作数将不会被评估,因为整个表达式的结果已经确定为 false。这被称为短路行为,因为它缩短了评估的路径。这种行为对于避免执行不必要的计算或可能引发异常的操作非常有用。
在处理布尔逻辑时,通常使用 && 而不是 &,因为 && 提供的短路行为可以提高代码的效率和安全性。然而,当需要对整数进行按位与操作时,只能使用 &。
其他的想不到了,就这吧,最讨厌数学了。
END