前言
这是课程的第二篇,基础篇结束,下一篇开始语句相关的内容(if,for,while,switch),所以命名为语句,以防有新读者所以我简述一下第一篇的前言。
这个Java急速学习课程适合有一定编程基础的人。它通过实际的代码例子来教Java,减少了理论讲解,使学习过程更直观,帮助你更快地掌握Java的核心技能。课程内容经过优化,力求简洁明了。同时,课程鼓励大家交流心得,提出更好的解决方案,以此来不断改进课程内容。
包含知识点
1. 自增自减运算符
++ 和 --:前置和后置自增自减运算符的使用及区别。
后置自增 (a++):先使用当前值,再加 1。
前置自增 (++a):先加 1,再使用新值。
2. 扩展赋值运算符
+=, -=, *=, /=, %=:扩展赋值运算符及其自带的强制类型转换功能。
示例:a += 5 等价于 a = a + 5。
类型转换:如 byte a1 = 10; a1 += 20; 会自动进行类型转换。
3. 强制类型转换
在扩展赋值运算符中,自动进行类型转换。
示例:byte a1 = 10; byte a2 = 20; a1 += a2; 结果为 30。
4. 三元运算符
用于条件判断并选择一个值。
示例:int max = a > b ? a : b; 找出较大值。
5. 方法重载的一个小示例(复习)
print3(int a, int b) 和 print3(int a, int b, int c)。
6. 短路逻辑运算符与非短路逻辑运算符
&& 和 ||:短路逻辑运算符,仅计算必要部分。
示例:a > 1000 && ++b > 1:左边为假则右边不执行。
& 和 |:非短路逻辑运算符,始终计算两边。
示例:a > 1000 & ++b > 1:即使左边为假,右边也执行。
7. 其他逻辑运算符
!:取反操作。 ^:异或操作,相同为 false,不同为 true。
具体代码
package basic_0;
public class BasicZc2 {
public static void main(String[] args) {
// 理解自增自减运算符
print0(10); //a=10
System.out.println("============自增自减===========");
print1(10); //a=10
System.out.println("==========强制类型转换==========");
print2();
System.out.println("===========三元运算符===========");
print3(10, 20);
print3(10, 20, 30);//方法重载
System.out.println("===========短路逻辑符号==========");
print4(); // 判断&& || 与 & |的区别
}
public static void print0(int a) { //a = 10
a++; ++a; // a = a + 1;
System.out.println(a); // 12
a--; --a; // a = a - 1;
System.out.println(a); // 10
}
public static void print1(int a) {// 自增和自减放在变量前后的区别
int b = a++; // 先用后加
System.out.println("先用后加");
System.out.println(a); // 11
System.out.println(b); // 10
int c = ++a; // 先加后用
System.out.println("先加后用");
System.out.println(a); // 12
System.out.println(c); // 12
}
// 演示其他几个扩展的赋值运算符。
public static void print2() {
//扩展赋值运算符自带强制类型转换
System.out.println("运算符自带强制类型转换示例:");
int a = 10;
a += 5; // 等价于 a = (a的类型)(a + 5);
System.out.println(a); // 15
byte a1 = 10;
byte a2 = 20;
a1 += a2; // 等价于 a1 = (byte) (a1 + a2);
System.out.println(a1); // 30
int b = 10;
b *= 5; // 等价于 b = (b的类型)(b * 5);
System.out.println(b); // 50
int c = 10;
c /= 5; // 等价于 c = (c的类型)(c / 5);
System.out.println(c); // 2
int d = 10;
d %= 5; // 等价于 d = (d的类型)(d % 5);
System.out.println(d); // 0
System.out.println("表达式的自动类型提升示例:");
//byte short char运算时会直接提升成int运算
// 表达式的最终结果类型是有最高类型决定的
}
public static void print3(int a, int b) {// 三元运算符,无返回值
int max = a > b ? a : b;
System.out.println("较大值:" + max);
}
//求三个整数的较大值返回,嵌套
public static int print3(int a, int b, int c) {//求三个整数的较大值返回,嵌套,有返回值
// 三元运算符的嵌套
int max = a > b ? (a > c ? a : c) : (b > c ? b : c);
System.out.println("较大值:" + max);
return max;
}
public static void print4() {// 判断&& ||(短路逻辑运算符) 与 & |的区别
// &且 |或
int a = 111;
int b = 2;
// System.out.println(a > 1000 && ++b > 1); // false && 发现左边条件为false右边直接不执行
System.out.println(a > 1000 & ++b > 1); // false & 即便发现左边条件为false右边依然执行
System.out.println(b); // 3
int i = 10;
int j = 20;
// System.out.println(i > 6 || ++j > 1); // true || 发现左边条件为true右边直接不执行
System.out.println(i > 6 | ++j > 1); // true & 即便发现左边条件为true右边依然执行
System.out.println(j);
// ! 非,取反
System.out.println(!true); // false
// ^ 异或,相同条件结果为false,不同为true
System.out.println(false ^ false); // false
System.out.println(true ^ true); // false
System.out.println(true ^ false); // true
System.out.println(false ^ true); // true
}
}