上一篇文章已经介绍了Java 和 Go 这两种备受程序员关注的编程语言在选择分支语句上的异同以及相关关键字(if,else,swtich,case,fallthrough,default以及break)。而循环语句作为编程中常用的控制结构之一,在Java和Go中也有一些相似之处,但也存在一些显著的差异。本文将对Java语言和Go语言的循环语句进行比较,帮助读者更好地理解两种语言的特点。
1.for关键字
基本for循环
无论Java 还是 Go, 基本for循环都有三个部分,初始化部分、循环条件和循环迭代。语法大致相同,通常如下:
for (初始化; 循环条件; 循环迭代) { //Java的for需要加()
// 循环体
}
for 初始化语句; 循环条件; 循环迭代 { //Go语言不需要()
// 循环体
}
增强for循环
Java中的for-each循环可以方便地遍历数组和集合中的元素,语法为:
for (元素类型 元素变量 : 集合或数组) {
// 循环体
}
而Go语言的for循环同样可以辅以range关键字遍历数组、切片、映射和通道等数据结构,语法为
for index, value := range collection {
// 循环体
}
小结:
- 语法风格:Java的for循环在语法上比较严格,而Go的for循环语法更为简洁。
- 功能性:两者都可以应对各种循环需求,但Go的for循环更灵活,例如使用range关键字可以方便地遍历集合。
- 代码风格:Go语言更倾向于简洁、直接的代码风格,而Java的语法相对更为繁琐。
- 遍历集合:Go语言通过range关键字提供了更加优雅的集合遍历方式,而Java中的for-each循环在某些情况下可能更直观。
总的来说,尽管Java和Go语言的for循环在语法上有一些差异,但都是功能强大且灵活的循环结构,在实际开发中可以根据需要选择合适的语言和循环形式。
2.while关键字
Java
在Java语言中,while 和 do-while 是两种常见的循环结构,它们的用法如下:
while 循环:
while 循环在执行循环体之前会先判断循环条件是否为真,如果为真,则执行循环体,然后再次检查循环条件,直到循环条件为假时退出循环。
while (condition) {
// 循环体
}
condition 是一个布尔表达式,当该表达式的值为 true 时,循环会继续执行循环体;当表达式的值为 false 时,循环终止,程序继续执行循环后的代码。
do-while 循环:
do-while 循环与 while 循环类似,但它先执行一次循环体,然后再检查循环条件。因此,do-while 循环保证循环体至少被执行一次。
do { // 循环体 } while (condition); condition 是一个布尔表达式,循环会在每次执行完循环体后检查该表达式的值,如果为 true,则继续执行循环;如果为 false,则循环终止,程序继续执行循环后的代码。 来点代码演示 while 和 do-while 循环的用法:
// 使用 while 循环计算 1 到 10 的和
int sum = 0;
int i = 1;
while (i <= 10) {
sum += i;
i++;
}
System.out.println("Sum of 1 to 10 is: " + sum);
// 使用 do-while 循环计算 1 到 10 的阶乘
int factorial = 1;
int j = 1;
do {
factorial *= j;
j++;
} while (j <= 10);
System.out.println("Factorial of 10 is: " + factorial);
在使用循环时,请确保循环条件可以终止循环,以避免无限循环导致程序无法结束。
Go
然而Go语言Java不同,它只有for关键字用于循环,没有单独的while和do-while循环结构。但是,通过使用for关键字,可以实现类似while和do-while的循环行为。
while 循环:
在Go语言中,可以使用for循环来模拟while循环的行为。例如:
for condition {
// 循环体
}
在这个结构中,condition 是一个布尔表达式,当它的值为true时,循环会继续执行循环体;当它的值为false时,循环终止。
package main
import "fmt"
func main() {
sum := 0
i := 1
for i <= 10 {
sum += i
i++
}
fmt.Println("Sum of 1 to 10 is:", sum)
}
do-while 循环:
Go语言中没有像Java那样的do-while循环结构,但可以通过 for 循环和 break 语句来实现相似的功能。例如:
for {
// 循环体
// 条件判断
if !condition {
break
}
}
这个结构中的 for {} 创建了一个无限循环,然后在循环体内部进行条件判断,如果满足退出条件,则通过 break 语句跳出循环。例如:
package main
import "fmt"
func main() {
factorial := 1
j := 1
for {
factorial *= j
j++
if j > 10 {
break
}
}
fmt.Println("Factorial of 10 is:", factorial)
}
虽然 Go 语言中没有显式的 while 和 do-while 结构,但是通过 for 循环以及条件判断和 break 语句的配合,可以实现相同的功能。
总结
总的来说,Java和Go语言在循环语句上有很多相似之处,而这一些不同之处根本难不倒咱们Java程序员,下一篇文章我们来聊一聊跳转语句(break,return,continue以及Go特有的goto)
One more Thing
需要jetbrains全家桶的小伙伴可以关注微信公众号【AIGoland之星】回复idea领取激活工具哦。