作为一名对技术充满热情的学习者,我一直以来都深刻地体会到知识的广度和深度。在这个不断演变的数字时代,我远非专家,而是一位不断追求进步的旅行者。通过这篇博客,我想分享我在某个领域的学习经验,与大家共同探讨、共同成长。请大家以开放的心态阅读,相信你们也会在这段知识之旅中找到启示。
同学们,在学习Java中,理解和掌握运算符的使用是非常重要的,因为它们是编写有效和功能丰富的代码的基础。不同类型的运算符支持不同的操作,例如进行数学运算、比较值、执行逻辑操作等。透彻理解运算符的使用方式和规则,有助于编写更高效和可读性更强的代码。
下面我将带大家学习,在Java中我们需要掌握那些基本的运算符,就从底层的角度探究每种运算符是怎么使用的.
运算符是编程语言中用于执行各种操作的符号或关键字。在Java中,运算符用于执行算术、关系、逻辑、位、赋值等各种操作。它们是构建表达式的基本组成部分,允许程序对变量和值执行各种计算和比较。
+(加法):执行两个操作数的加法。
-(减法):从左操作数减去右操作数。
*(乘法):将两个操作数相乘。
/(除法):用左操作数除以右操作数。
%(取模):返回左操作数除以右操作数的余数。
int a = 10;
int b = 5;
int sum = a + b; // 15
int difference = a - b; // 5
int product = a * b; // 50
int quotient = a / b; // 2
int remainder = a % b; // 0
==(等于):检查左右两个操作数是否相等。
!=(不等于):检查左右两个操作数是否不相等。
>(大于):检查左操作数是否大于右操作数。
<(小于):检查左操作数是否小于右操作数。
>=(大于等于):检查左操作数是否大于或等于右操作数。
<=(小于等于):检查左操作数是否小于或等于右操作数。
int x = 7;
int y = 10;
boolean isEqual = x == y; // false
boolean notEqual = x != y; // true
boolean greaterThan = x > y; // false
boolean lessThan = x < y; // true
boolean greaterOrEqual = x >= y; // false
boolean lessOrEqual = x <= y; // true
&&(逻辑与):当且仅当两个操作数都为真时,结果为真。
||(逻辑或):当至少一个操作数为真时,结果为真。
!(逻辑非):将操作数的值取反。
boolean p = true;
boolean q = false;
boolean logicalAnd = p && q; // false
boolean logicalOr = p || q; // true
boolean logicalNotP = !p; // false
&(按位与):对每一位执行与操作。
|(按位或):对每一位执行或操作。
^(按位异或):对每一位执行异或操作(相同为0,不同为1)。
~(按位取反):对操作数的每一位取反。
<<(左移):将操作数的位向左移动指定的位数,右侧用0填充。
>>(右移):将操作数的位向右移动指定的位数,左侧用符号位填充。
>>>(无符号右移):将操作数的位向右移动指定的位数,左侧用0填充。
int num1 = 5; // 0101 in binary
int num2 = 3; // 0011 in binary
int bitwiseAnd = num1 & num2; // 0001 (1 in decimal)
int bitwiseOr = num1 | num2; // 0111 (7 in decimal)
int bitwiseXor = num1 ^ num2; // 0110 (6 in decimal)
int bitwiseComplement = ~num1; // 11111111111111111111111111111010 (-6 in decimal)
int leftShift = num1 << 1; // 1010 (10 in decimal)
int rightShift = num1 >> 1; // 0010 (2 in decimal)
int unsignedRightShift = num1 >>> 1; // 0000 0000 0000 0000 0000 0000 0000 0101 (2,147,483,653 in decimal)
=(赋值):将右操作数的值赋给左操作数。
+=、-=、*=、/=、%=等:执行相应的算术运算,并将结果赋给左操作数。
&=、|=、^=、<<=、>>=、>>>=等:执行相应的位运算,并将结果赋给左操作数。
int x = 5;
int y = 3;
x += y; // Equivalent to x = x + y; // x is now 8
x -= y; // Equivalent to x = x - y; // x is now 5 again
x *= y; // Equivalent to x = x * y; // x is now 15
x /= y; // Equivalent to x = x / y; // x is now 5
x %= y; // Equivalent to x = x % y; // x is now 2
++(自增):将操作数的值增加1。
–(自减):将操作数的值减少1。
int count = 10;
count++; // Equivalent to count = count + 1; // count is now 11
count--; // Equivalent to count = count - 1; // count is now 10 again
1. 算术运算符:
int a = 10;
int b = 3;
int sum = a + b; // 13
a += b; // a 现在为 13
int remainder = a % b; // 1 (13 除以 3 的余数)
2. 关系和逻辑运算符:
String str1 = "Hello";
String str2 = new String("Hello");
// 内容比较
boolean contentEquals = str1.equals(str2); // true
// 引用比较
boolean referenceEquals = str1 == str2; // false
3. 位运算符:
int a = 5;
int b = 7;
// 交换值,不使用临时变量
a = a ^ b;
b = a ^ b;
a = a ^ b;
// 按位与和按位或
int bitwiseAnd = a & b; // 5 (0101 & 0111)
int bitwiseOr = a | b; // 7 (0101 | 0111)
4. 赋值运算符:
int x = 5;
int y = 3;
// 复合赋值和递增
x += y; // 等效于 x = x + y; // x 现在为 8
x++; // 等效于 x = x + 1; // x 现在为 9
5. 增量和减量运算符:
int count = 10;
// 前缀递增和后缀递减
int newCount1 = ++count; // 先增加1,newCount1 现在为 11
int newCount2int newCount2 = count--; // 先返回原始值(11),然后减少1,count 现在为 10
问题: 小米公司正在组织一个趣味竞赛,参赛者需要通过计算来解锁手机。假设手机上的密码是一个四位数,每位数字范围在0到9之间。参赛者需要按照以下规则解锁手机:
1.手机密码的每一位数字都必须是偶数。
2.相邻两位数字的差的绝对值不能超过2。
请写一个程序,帮助小米公司判断一组四位数密码是否符合解锁规则。如果符合规则,输出"解锁成功!“,否则输出"解锁失败!”。
提示:
使用逻辑运算符和关系运算符来判断数字的奇偶性和相邻两位的差。
尝试编写函数来检查单个数字是否满足规则。
public class UnlockChallenge {
public static void main(String[] args) {
int password = 2468; // 请更换为不同的四位数密码进行测试
if (isValidPassword(password)) {
System.out.println("解锁成功!");
} else {
System.out.println("解锁失败!");
}
}
// 检查单个数字是否是偶数
private static boolean isEven(int digit) {
return digit % 2 == 0;
}
// 检查相邻两位数字的差的绝对值是否不超过2
private static boolean isDifferenceValid(int digit1, int digit2) {
return Math.abs(digit1 - digit2) <= 2;
}
// 检查密码是否符合解锁规则
private static boolean isValidPassword(int password) {
int digit1 = password / 1000 % 10;
int digit2 = password / 100 % 10;
int digit3 = password / 10 % 10;
int digit4 = password % 10;
// 检查每一位数字是否为偶数,并且相邻两位的差的绝对值是否不超过2
return isEven(digit1) && isEven(digit2) && isEven(digit3) && isEven(digit4) &&
isDifferenceValid(digit1, digit2) && isDifferenceValid(digit2, digit3) &&
isDifferenceValid(digit3, digit4);
}
}
请替换 password 的值并运行程序,看看是否符合小米公司的解锁规则。
同学们,感谢大家阅读博主的文章,希望大家可以得到有用的帮助!希望大家在以后的学习生活中一帆风顺,多多努力!
注:后面也是基础篇的完结篇了,希望大家打牢基础,为以后的编程做好铺垫,一步一个脚印,坚持不懈,持续输入新知识,巩固更新旧知识.