当前位置: 首页 > news >正文

java简单循环结构

while循环结构

Java提供的while条件循环。它的基本用法是:

while (条件表达式) {循环语句
}
// 继续执行后续代码

while循环在每次循环开始前,首先判断条件是否成立。如果计算结果为true,就把循环体内的语句执行一遍,如果计算结果为false,那就直接跳到while循环的末尾,继续往下执行。

public class Main{public static void main(String[] args){int sum = 0;int n = 1;while(n<=100){sum = sum + n;n++;}System.out.println(sum);}
}

注意到while循环是先判断循环条件,再循环,因此,有可能一次循环都不做。

如果循环条件永远满足,那这个循环就变成了死循环。死循环将导致100%的CPU占用,用户会感觉电脑运行缓慢,所以要避免编写死循环代码。

do while循环

在Java中,while循环是先判断循环条件,再执行循环。而另一种do while循环则是先执行循环,再判断条件,条件满足时继续循环,条件不满足时退出。它的用法是:

do {执行循环语句
} while (条件表达式);

可见,do while循环会至少循环一次.

public class Main{public static void main(String[] args){int sum = 0;int n = 1;do{sum = sum + n;n++;}while(n<=100);System.out.println(sum);}
}

使用do while循环时,同样要注意循环条件的判断。

for循环

除了while和do while循环,Java使用最广泛的是for循环。

for循环的功能非常强大,它使用计数器实现循环。for循环会先初始化计数器,然后,在每次循环前检测循环条件,在每次循环后更新计数器。计数器变量通常命名为i。

在for循环执行前,会先执行初始化语句int i=1,它定义了计数器变量i并赋初始值为1,然后,循环前先检查循环条件i<=100,循环后自动执行i++,因此,和while循环相比,for循环把更新计数器的代码统一放到了一起。在for循环的循环体内部,不需要去更新变量i。

因此,for循环的用法是:

for (初始条件; 循环检测条件; 循环后更新计数器) {// 执行语句
}

注意for循环的初始化计数器总是会被执行,并且for循环也可能循环0次。

public class Main{public static void main(String[] args){int sum = 0;for(int i=1;i<=100;i++){sum = sum + i;}System.out.println(sum);}
}

使用for循环时,计数器变量i要尽量定义在for循环中

int[] ns = { 1, 4, 9, 16, 25 };
for (int i=0; i<ns.length; i++) {System.out.println(ns[i]);
}
// 无法访问i
int n = i; // compile error!

如果变量i定义在for循环外:

int[] ns = { 1, 4, 9, 16, 25 };
int i;
for (i=0; i<ns.length; i++) {System.out.println(ns[i]);
}
// 仍然可以使用i
int n = i;

那么,退出for循环后,变量i仍然可以被访问,这就破坏了变量应该把访问范围缩到最小的原则。

for循环还可以缺少初始化语句、循环条件和每次循环更新语句,例如:

// 不设置结束条件:
for (int i=0; ; i++) {...
}
// 不设置结束条件和更新语句:
for (int i=0; ;) {...
}
// 什么都不设置:
for (;;) {...
}

for each循环

int[] ns = { 1, 4, 9, 16, 25 };
for (int i=0; i<ns.length; i++) {System.out.println(ns[i]);
}
public class Main{public static void main(String[] args){int[] ns= {1,2,3,4,5,9,16,25};for(int n : ns){System.out.println(n);}}
}

和for循环相比,for each循环的变量n不再是计数器,而是直接对应到数组的每个元素。for each循环的写法也更简洁。但是,for each循环无法指定遍历顺序,也无法获取数组的索引。

除了数组外,for each循环能够遍历所有“可迭代”的数据类型,包括后面会介绍的List、Map等。

if判断

在Java程序中,如果要根据条件来决定是否执行某一段代码,就需要if语句。

if (条件) {// 条件满足时执行
}

根据if的计算结果(true还是false),JVM决定是否执行if语句块(即花括号{}包含的所有语句)。

else

if语句还可以编写一个else { … },当条件判断为false时,将执行else的语句块:

n = 70;
if(n >= 60){System.out.println("xxx");
}else{System.out.println("ccc");
}
System.out.println("end");

注意,else不是必须的。

还可以用多个if … else if …串联。例如:

if (n >= 90) {// n >= 90为true:System.out.println("优秀");
} else {// n >= 90为false:if (n >= 60) {// n >= 60为true:System.out.println("及格了");} else {// n >= 60为false:System.out.println("挂科了");}
}

执行发现,n = 100时,满足条件n >= 90,但输出的不是"优秀",而是"及格了",原因是if语句从上到下执行时,先判断n >= 60成功后,后续else不再执行,因此,if (n >= 90)没有机会执行了

// 从大到小依次判断:
if (n >= 90) {// ...
} else if (n >= 60) {// ...
} else {// ...
}

或者改写成从小到大依次判断:

// 从小到大依次判断:
if (n < 60) {// ...
} else if (n < 90) {// ...
} else {// ...
}

判断引用类型相等

在Java中,判断值类型的变量是否相等,可以使用==运算符。但是,判断引用类型的变量是否相等,表示“引用是否相等”,或者说,是否指向同一个对象。例如,下面的两个String类型,它们的内容是相同的,但是,分别指向不同的对象,用判断,结果为false

switch多重选择

switch语句根据switch (表达式)计算的结果,跳转到匹配的case结果,然后继续执行后续语句,直到遇到break结束执行。

使用switch语句时,只要保证有break,case的顺序不影响程序逻辑:

switch (option) {
case 3:...break;
case 2:...break;
case 1:...break;
}

但是仍然建议按照自然顺序排列,便于阅读。

switch语句还可以匹配字符串。字符串匹配时,是比较“内容相等”。

使用switch时,如果遗漏了break,就会造成严重的逻辑错误,而且不易在源代码中发现错误。从Java 12开始,switch语句升级为更简洁的表达式语法,使用类似模式匹配(Pattern Matching)的方法,保证只有一种路径会被执行,并且不需要break语句

yield

大多数时候,在switch表达式内部,我们会返回简单的值。

但是,如果需要复杂的语句,我们也可以写很多语句,放到{…}里,然后,用yield返回一个值作为switch语句的返回值

http://www.lryc.cn/news/9262.html

相关文章:

  • 【Servlet+Jsp+Mybatis+Maven】WEB图书馆管理系统
  • 【WPF】WindowChrome 自定义窗口完美实现
  • Python客户端使用SASL_SSL连接Kafka需要将jks密钥转换为pem密钥,需要转化成p12格式再转换pem才能适配confluent_kafka包
  • JDK8 ConcurrentHashMap源码分析
  • 前置知识-初值问题、欧拉法、改进欧拉法
  • 睡眠影响寿命,这几个睡眠习惯赶紧改掉!
  • Linux逻辑卷管理器(PV、VG、LV、PE)
  • Centos7 内核升级
  • SpringBoot 启动配置文件加载和参数配置修改问题
  • 布隆过滤器和布谷鸟过滤器详解
  • WebGIS前端框架(openlayers,mapbox,leaflet)图形图像底层渲染原理分析
  • AcWing语法基础课笔记 第五章 C++中的字符串
  • 抓包工具Charles(一)-下载安装与设置
  • SpringBoot09:Swagger
  • Git 常用命令
  • 查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决
  • 链表数据结构
  • 汽车DTC故障内码与标准故障码的解析与转换
  • 零基础学习测试还是开发?
  • 如何加入new bing候补名单
  • 中国天气——西风带环流和寒潮
  • 2022黑马Redis跟学笔记.实战篇(四)
  • Allegro中如何删除多余D码操作指导
  • 学生投票系统-课后程序(JAVA基础案例教程-黑马程序员编著-第三章-课后作业)
  • 初始化一个列表python
  • 【electron】webview嵌入页面发送消息给父级页面
  • Whids:一款针对Windows操作系统的开源EDR
  • 初级调色转档CameraRaw
  • Mybatis源码(3) - Executor执行过程 | 一级缓存 | 二级缓存
  • 成为 Seatunnel 源码贡献者保姆级教程