提示:Java中的基本语法和流程控制结构,包括运算符、流程控制语句等,旨在帮助初学者快速掌握Java编程的基础知识。文章中会结合代码案例进行详细解释,确保读者能够理解并应用这些知识
目录
其他运算符:&、|、^、~、<<、>>、>>>、?:(三元运算符)
while循环:是最基础的循环结构,格式为while (布尔表达式) {循环内容}。
do...while循环:即使条件不满足,也会至少执行一次循环体。
前言
在学习Java编程的过程中,掌握基本语法和流程控制是至关重要的一步。无论是简单的变量操作,还是复杂的程序逻辑实现,都离不开这些基础知识。本文将从运算符讲起,逐步深入到流程控制结构,包括条件语句和循环语句,并通过具体的代码案例进行详细解释,帮助初学者快速理解和掌握这些内容。
基本语法
运算符
-
算术运算符:
+
、-
、*
、/
、%
(取余/模运算)-
注意作用范围:如果运算中有
示例代码:long
类型数据,那么结果就是long
型;如果没有long
,则为int
型。int a = 10; long b = 20L; long result = a + b; // 结果为long型 System.out.println(result);
-
a++
与++a
的区别:a++
是后缀递增,先使用a
的值,再将a
加1;++a
是前缀递增,先将a
加1,再使用a
的值。int a = 5; int b = a++; // b 获得的是 a 原来的值,即 5;然后 a 自增变为 6 System.out.println("a: " + a); // 输出 a: 6 System.out.println("b: " + b); // 输出 b: 5
int a = 5; int b = ++a; // 先将 a 增加至 6,然后 b 被赋予增加了的 a 的值,即 6 System.out.println("a: " + a); // 输出 a: 6 System.out.println("b: " + b); // 输出 b: 6
-
幂运算需要用
Math.pow()
方法,例如计算2的3次方double powerResult = Math.pow(2, 3); System.out.println(powerResult); // 输出8.0
-
-
关系运算符:
==
、!=
、>
、<
、>=
、<=
-
返回的是布尔值(
示例代码:true
或false
)。int x = 10; int y = 20; boolean isEqual = (x == y); // false boolean isNotEqual = (x != y); // true System.out.println("isEqual: " + isEqual); System.out.println("isNotEqual: " + isNotEqual);
-
-
逻辑运算符:
&&
(与)、||
(或)、!
(非)-
与运算:只有当两个条件都为真时,结果才为真。
-
或运算:只要有一个条件为真,结果就为真。
-
非运算:对条件取反。
-
短路运算:在前一个条件已经能够确定整个表达式的结果时,后面的条件就不会再被计算。
-
示例代码:
boolean condition1 = true; boolean condition2 = false; boolean andResult = condition1 && condition2; // false boolean orResult = condition1 || condition2; // true boolean notResult = !condition1; // false System.out.println("andResult: " + andResult); System.out.println("orResult: " + orResult); System.out.println("notResult: " + notResult);
-
-
赋值运算符:
=
、+=
、-=
、*=
、/=
、%=
-
字符串连接符
示例代码:+
,当与String
类型一起使用时,会将其他类型的数据转换为字符串进行拼接。int num1 = 10; int num2 = 20; System.out.println(num1 + num2 + ""); // 先计算数字,再拼接字符串,输出"30" System.out.println("" + num1 + num2); // 直接拼接字符串,输出"1020"
-
-
位运算符:
&
、|
、^
、~
、<<
、>>
、>>>
-
这些运算符主要用于对整数的二进制位进行操作,例如按位与、按位或、按位异或、取反、左移、右移等。
示例代码:int bit1 = 5; // 二进制为0101 int bit2 = 3; // 二进制为0011 int andBitResult = bit1 & bit2; // 0001,结果为1 int orBitResult = bit1 | bit2; // 0111,结果为7 System.out.println("andBitResult: " + andBitResult); System.out.println("orBitResult: " + orBitResult);
-
-
其他运算符:
&
、|
、^
、~
、<<
、>>
、>>>
、?:
(三元运算符)-
三元运算符格式为
示例代码:x ? y : z
,如果x
为true
,则结果为y
,否则为z
。int max = (num1 > num2) ? num1 : num2; System.out.println("max: " + max); // 输出20
-
流程控制
输入输出
-
使用
Scanner
类进行输入:-
next()
:读取下一个单词(遇到空格停止)。 -
nextLine()
:读取整行输入,包括空格。 -
示例代码:
import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个单词(使用next()方法读取):"); String word = scanner.next(); // 读取输入直到遇到空格 System.out.println("你输入的单词是: " + word); System.out.println("请输入一行文本(使用nextLine()方法读取):"); String line = scanner.nextLine(); // 读取整行输入,包括空格 System.out.println("你输入的文本行是: " + line); // 注意:如果在调用next()之后直接调用nextLine(),可能需要额外的nextLine()来消耗剩余的新行字符 // 下面是一个更详细的例子说明这个问题 System.out.println("\n演示next()后跟随nextLine()时的行为:"); System.out.println("再次请输入一个单词(使用next()方法读取):"); word = scanner.next(); System.out.println("你输入的单词是: " + word); // 这里可能需要额外的nextLine()来处理换行符 scanner.nextLine(); System.out.println("请再输入一行文本(使用nextLine()方法读取):"); line = scanner.nextLine(); System.out.println("你输入的文本行是: " + line); scanner.close(); } }
-
顺序结构
-
基本结构:按照代码的顺序依次执行。
选择结构
-
单选择结构:
if
语句。-
示例代码:
int score = 85; if (score >= 60) { System.out.println("及格了!"); }
-
-
双选择结构:
if...else
语句。-
示例代码:
if (score >= 60) { System.out.println("及格了!"); } else { System.out.println("不及格!"); }
-
-
多选择结构:
if...else if...else
语句。-
示例代码:
if (score >= 90) { System.out.println("优秀"); } else if (score >= 80) { System.out.println("良好"); } else if (score >= 60) { System.out.println("及格"); } else { System.out.println("不及格"); }
-
-
嵌套语句:可以在
if
语句中嵌套另一个if
语句。-
示例代码:
if (score >= 60) { if (score >= 80) { System.out.println("成绩很好"); } else { System.out.println("成绩一般"); } } else { System.out.println("成绩较差"); }
-
-
switch...case语句:
-
JDK新特性支持字符串作为表达式结果。
-
示例代码:
char grade = 'B'; switch (grade) { case 'A': System.out.println("优秀"); break; case 'B': System.out.println("良好"); break; case 'C': System.out.println("及格"); break; default: System.out.println("不及格"); }
-
注意:
case
穿透问题,如果某个case
分支中没有break
语句,程序会继续执行下一个case
分支。
-
循环结构
-
while循环:是最基础的循环结构,格式为
while (布尔表达式) {循环内容}
。-
示例代码:
int count = 1; while (count <= 5) { System.out.println("Count: " + count); count++; }
-
注意:避免死循环,尽量让程序能够停下来。例如,
while (true)
可以用于需要一直运行的场景,如服务器等待客户端连接。
-
-
do...while循环:即使条件不满足,也会至少执行一次循环体。
-
示例代码:
int j = 0; do { System.out.println("j: " + j); j++; } while (j < 5);
无论初始条件如何,循环体至少会被执行一次。即使
j
初始化为一个不满足条件的值(比如5),循环体也会先执行一次,然后才检查条件。
-
-
for
循环- for(初始化 ;条件判断;迭代){循环体}
- 示例代码:
for (int k = 0; k < 3; k++) { System.out.println("k: " + k); } //此循环首先初始化变量k为0,然后在每次迭代前检查k是否小于3,最后在循环体结束后递增k。
- 增强for循环
- for(声明语句 :表达式){代码语句}
- 示例代码:
String[] fruits = {"Apple", "Banana", "Cherry"}; for (String fruit : fruits) { System.out.println(fruit); }
增强
for
循环用于遍历数组或集合中的元素。对于每个元素,都会执行一次循环体,这里它会依次打印出"Apple"、"Banana"和"Cherry"。
-
break
与continue
- 使用
break
跳出循环-
for (int m = 0; m < 10; m++) { if (m == 3) { break; // 当m等于3时,跳出循环 } System.out.println("m: " + m); } //一旦m的值达到3,就会执行break语句,立即退出循环,因此只会打印出m从0到2的值
-
- continue 终止某次循环过程
-
for (int n = 0; n < 5; n++) { if (n == 2) { continue; // 跳过本次循环剩余部分,继续下一次循环 } System.out.println("n: " + n); } //当n等于2时,continue语句会导致此次循环的剩余部分被跳过,直接进入下一次循环迭代,所以输出中不会有n: 2。
-
- 使用
总结
-
运算符优先级:算术 > 关系 > 逻辑 > 赋值
-
==
比较值,对于对象比较的是引用 -
switch支持byte、short、char、int、String和枚举类型
-
增强for循环适用于数组和实现了Iterable接口的集合
-
break可以配合标签使用跳出多层循环