java 03_Java基础03—流程控制

流程控制

参考资料:《Java从入门到精通》/明日科技编著. 4版. 北京:清华大学出版社,2016

一、复合语句

Java的复合语句由“{”开始,“}”结束,又称为块语句。

复合语句都是由上至下被执行;

复合语句中可以嵌套复合语句。

public class Compound {

public static void main(String[] args) {

int x = 20;

{

int y = 35;

System.out.println(y);

{

boolean c = true;

System.out.println(c);

}

}

String string = "hello";

System.out.println(string);

//System.out.println(y); //错误代码,在作用域之外使用变量y

}

}

复合语句为局部变量创造了一个作用域,在作用域中定义的变量只能在作用域中被使用。如果在某个变量的作用域之外使用该变量,则会发生错误。

二、条件语句

1、if条件语句

if条件语句是一个重要的编程语句,用于告诉程序在某个条件成立的情况下执行某段语句,而在另一个情况下执行另外的语句。if条件语句分为三种,如下所示:

(1)简单的if条件语句

if(布尔表达式){

语句序列

}

布尔表达式:必要参数,表达式必须返回一个boolean值。

语句序列:非必要参数,可以是一条或者多条,甚至0条都可以。当布尔表达式的值为true时,执行这些语句。

public class Getif {

public static void main(String[] args) {

int a = 10;

if(a == 10){

System.out.println(a);

}

}

}

注意:当语句序列只有一条时,可以省略“{}”。

int a = 10;

if(a == 10)

System.out.println(a);

(2)if...else语句

if(布尔表达式){

语句序列1

}

else{

语句序列2

}

if后面的布尔表达式的值为true,则执行语句序列1;

if后面的布尔表达式的值为false,则执行语句序列2。

public class Getif {

public static void main(String[] args) {

int a = 80;

if(a > 60){

System.out.println("Pass");

}

else {

System.out.println("Fail");

}

}

}

(3)if...else if多分支语句

if(布尔表达式1){

语句序列1

}

else if(布尔表达式2){

语句序列2

}

...

else if(布尔表达式n){

语句序列n

}

else{

语句序列n+1

}

可以对多种情况进行处理,甚至任意种情况。

只执行其中表达式为true的语句,其他语句不执行。

所有表达式都为false,则输出else后面的语句。

public class GetSource {

public static void main(String[] args) {

int a = 55;

if(a > 90){

System.out.println("优秀");

}

else if(a > 80){

System.out.println("良好");

}

else if(a > 70){

System.out.println("中等");

}

else if(a > 60){

System.out.println("及格");

}

else {

System.out.println("不及格"); //输出不及格

}

}

}

2、switch多分支语句

在java语言中,可以使用switch语句将所有情况组织起来,以一个简单明了的方式来实现“多选一”的选择。

swicth(表达式){

case 常量1 :

语句块1

break;

case 常量2 :

语句块2

break;

...

case 常量n :

语句块n

break;

defaults:

语句块n+1

break;

}

其中,表达式必须是整型、字符型或字符串类型。对应的,常量也必须是整型、字符型或字符串类型。

如果表达式的值和某个case后面的常量值相同,则执行该case语句后面的若干语句,直到遇到break语句为止。

如果表达式没有匹配到常量,则执行defaults后面的语句。

可以没有defaults,没有匹配到的话,switch则不作处理。

public class Demo1 {

public static void main(String[] args) {

String a = "hello";

switch (a){

case "hello1" :

System.out.println("hi");

break;

case "nihao" :

System.out.println("nihao");

break;

case "hello" :

System.out.println("yes,you are right");

break;

default:

System.out.println("sorry");

break;

}

}

}

注意:

在同一个switch语句,case的常量值必须互不相同。

case语句后面的常量表达式的值可以为整数,但绝不可为实数。例如,下面的代码不合法的:

case 2.1 //代码错误

三、循环语句

循环语句就是在满足一定的条件下,反复执行某一个操作。在Java中提供了三种常用的循环语句,分别是while循环语句、do...while循环语句和for循环语句。

1、while循环语句

while语句也称条件判断语句,它的循环方式为利用一个条件来控制是否要继续执行这个语句。

while(表达式){

执行语句

}

当表达式的返回值为true时,执行{}中的语句;

执行完{}中的语句后,重新判断表达式的返回值;

当表达式的返回值为false时,退出循环。

public class Demo2 {

public static void main(String[] args) {

int x = 1;

int sum = 0;

while (x <= 10){

sum = sum + x;

x++;

}

System.out.println(sum);

}

}

2、do...while循环

while循环先判表达式是否成立,然后执行循环体,而do...while循环先执行一次循环后,再判断表达式是否成立。也就是说do...while循环的循环体语句至少被执行一次。

do{

执行语句

}

while(表达式); //这里有个分号,千万别忘了

do...while循环和while循环还有一个明显的差别,就是do...while循环在结尾多了一个分号。

public class Gess {

public static void main(String[] args) {

int a = 10;

do {

System.out.println("hello world");

a--;

} while(a > 6); //输出4次hello world

}

}

3、for循环语句

for循环用来重复执行循环体,直到某个条件得到满足后中止循环。

(1)for循环语句

for(表达式1;表达式2;表达式3){

语句序列

}

表达式1:初始化表达式,负责完成变量的初始化。

表达式2:条件表达式,返回值为boolean型的表达式,指定循环条件。

表达式3:循环的操作表达式,负责修整变量,改变循环条件。

public class Demo2 {

public static void main(String[] args) {

int sum = 0;

for (int i=2;i<=100;i+=2){

sum = sum + i;

System.out.println(sum); //计算2~100之间所有偶数之和

}

}

}

(2)foreach语句

foreach语句是for语句的特殊简化版,不能完全取代for语句,但是任何foreach语句都能改写成佛如语句版本。foreach不是一个关键字。

for(元素变量x : 遍历对象obj){

引用了x变量的Java语句;

}

foreach语句中的元素变量x,不必对其进行初化。

public class Demo2 {

public static void main(String[] args) {

int arr[] = {2,4,6};

for(int x : arr){ //遍历数组

System.out.println(x);

}

}

}

四、循环控制

循环控制包含两个方面的内容,一方面是控制循环变量的变化方式,另一方面是控制循环的跳转。控制循环的跳转需要用到break和continue两个关键词,break是中断循环,continue是执行下一次循环。

1、break语句

使用break语句可以跳出switch结构,在循环中,同样可以使用break语句跳出当前循环体,从而中断当前循环。

public class BreakTest {

public static void main(String[] args) {

for(int i=0;i<=100;i++){

System.out.println(i);

if(i == 10){

System.out.println("循环终止");

break; //中断循环

}

}

}

}

注意:如果遇到循环嵌套的情况,break只会跳出包含它的最内层循环,也就是说只跳出一层循环。

public class BreakNest {

public static void main(String[] args) {

for(int i=0;i<3;i++){

for(int j=0;j<10;j++){

System.out.println("i=" + i + " j=" + j);

if(j == 4){

break;

}

}

}

}

}

//break语句中断了内层循环,但是并没有影响外层循环。

输出结果:

i=0 j=0

i=0 j=1

i=0 j=2

i=0 j=3

i=0 j=4

i=1 j=0

i=1 j=1

i=1 j=2

i=1 j=3

i=1 j=4

i=2 j=0

i=2 j=1

i=2 j=2

i=2 j=3

i=2 j=4

如果想让break跳出外层循环,Java提供了“标签”功能,如下:

标签名:循环体{

break 标签名;

}

public class BreakNest {

public static void main(String[] args) {

Loop:for(int i=0;i<3;i++){ //给外层循环添加标签

for(int j=0;j<10;j++){

System.out.println("i=" + i + " j=" + j);

if(j == 4){

break Loop;

}

}

}

}

}

//用带有标签的break跳出外层循环

输出结果:

i=0 j=0

i=0 j=1

i=0 j=2

i=0 j=3

i=0 j=4 //当j变量的值等于4时,i的值没有增加,直接结束外层循环。

2、continue语句

continue语句是针对break语句的补充,contiune语句不是立即中止循环体,而是结束本次循环,回到循环的条件判断语句,重新开始执行循环。

在for循环语句中,循环体中遇到continue语句后,先执行循环的增量部分,然后进行条件判断。

在while和do...while循环语句中,遇到continue语句则直接回到条件判断部分。

public class ContinueTest {

public static void main(String[] args) {

for(int i=1;i<=20;i++){

if(i%2 == 0 ){ //判断i是否为偶数

continue; //先执行i++,然后跳到下一次循环

}

System.out.println(i); //输出1~20之间的奇数

}

}

}

与break一样,continue也支持标签的功能,使得可以指定continue语句跳出指定的循环体。如下所示:

标签名:循环体{

continue 标签名;

}

五、课后实践

1、编写Java程序,使用for循环打印菱形。

public class Out{

public static void main(String[] args) {

//设置菱形的大小

int size = 5;

//菱形的上半部分

for(int i = 1;i <= size; i++) {

for (int j = 1; j <= size - i; j++) {

System.out.print(" ");

}

for (int k = 1; k <= i * 2 - 1; k++) {

System.out.print("*");

}

System.out.println(); //起换行作用

}

//菱形的下半部分

for(int i = 1; i <= size -1; i++){

for(int j = 1; j <= i; j++){

System.out.print(" ");

}

for(int k=1; k <= 2 * (size -i) -1; k++){

System.out.print("*");

}

System.out.println(); //起换行作用

}

}

}

输出结果如下所示:

*

***

*****

*******

*********

*******

*****

***

*

注意:

System.out.print()输出不换行;

System.out.println()输出自动换行。

for(int x=1; x<=5; x++){

System.out.print("*");

}

输出结果:

*****

for(int x=1; x<=5; x++){

System.out.println("*"); //自动换行

}

输出结果:

*

*

*

*

*

2、打印一个空心菱形。

public class out{

public static void main(String[] args) {

//设置菱形的大小

int size = 5;

//菱形的上半部分

for(int i = 1;i <= size; i++) {

for (int j = 1; j <= size - i; j++) {

System.out.print(" ");

}

for (int k = 1; k <= i * 2 - 1; k++) {

//if语句判断“*”号是否位于开头或结束,若不是则输出空格

if(k == 1 || k == i * 2 - 1){

System.out.print("*");

}

else {

System.out.print(" ");

}

}

System.out.println();

}

//菱形的下半部分

for(int i = 1; i <= size -1; i++){

for(int j = 1; j <= i; j++){

System.out.print(" ");

}

for(int k=1; k <= 2 * (size -i) -1; k++){

//if语句判断“*”号是否位于开头或结束,若不是则输出空格

if(k == 1 || k == 2 * (size -i) -1){

System.out.print("*");

}

else {

System.out.print(" ");

}

}

System.out.println();

}

}

}

输出结果如下:

*

* *

* *

* *

* *

* *

* *

* *

*

标签:语句,03,Java,int,流程,循环,public,表达式,out

来源: https://www.cnblogs.com/xuliang-daydayup/p/12900880.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这三种策略可以帮助女性在科技领域蓬勃发展

by Shubhi Asthana通过Shubhi Asthana 这三种策略可以帮助女性在科技领域蓬勃发展 (These 3 strategies can help women thrive in tech) As someone early on in her career, I’ve attended a few tech talks, conferences, and meetups. One thing I noticed is not many w…

手机卫士09_应用程序四种查看_ListView小标题_进程管理

手机卫士09_应用程序四种查看_ListView小标题_进程管理 1.悬浮窗体的功能实现: 1.1.应用程序的卸载: 包安装器 packageInstall,包卸载packageruninstall intent.setData(Uri.pare(“package:” 应用程序包名)) 卸载完之后记得更新list集合,更新适配器. 但是不确定用户是否点了…

pandas:根据行间差值进行数据合并

1. 问题描述 在处理用户上网数据时&#xff0c;用户的上网行为数据之间存在时间间隔&#xff0c;按照实际情况&#xff0c;若时间间隔小于阈值&#xff08;next_access_time_app&#xff09;&#xff0c;则可把这几条上网行为合并为一条行为数据&#xff1b;若时间间隔大于阈值…

Flask学习 一 基本结构

-from flask import Flaskfrom flask import Flask,render_template-from flask import request-from flask import make_response-from flask import abort-from flask import redirect-# __name__参数决定程序的根目录app Flask (__name__)-# app.route (/)-# def hello_wor…

java8的路径_什么是路径?

# 什么是路径&#xff1f;文件系统以某种形式的媒体(通常为一个或多个硬盘驱动器)存储和组织文件&#xff0c;使得它们可以容易地被检索。目前使用的大多数文件系统将文件存储在树形(或分层)结构中。在树的顶部是一个(或多个)根节点。在根节点下&#xff0c;有文件和目录(Micro…

为什么toString方法可以用来区分数组和对象?

首先大家都应该知道在javascript中只有是对象都存在toString方法&#xff0c;将调用该方法的值转换为字符串返回&#xff0c;如下&#xff1a; var arr [1, 2, 3];console.log(arr.toString()); //1,2,3 但对象的toString方法和其他优点不同&#xff0c;其返回的是类似 [objec…

平安 开源 数据库 实践_刻意的实践-成为开源

平安 开源 数据库 实践by Anthony Ng由Anthony Ng 刻意的实践-成为开源 (Deliberate Practice — Becoming an Open Sourcerer) I recently finished reading Cal Newport’s book, So Good They Can’t Ignore You. It’s a quick read, and it introduced me to the concept…

更新Composer依赖报错处理Fatal error: Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRe...

更新Composer依赖报错处理 Fatal error: Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRepository::search() must be compatible with Composer\Repository\RepositoryInterface::search($query, $mode 0, $type NULL) in C:\Users\Arthur\AppData\Ro…

解析su,su -,sudo的区别

2019独角兽企业重金招聘Python工程师标准>>> 本人以前一直习惯直接使用root&#xff0c;很少使用su&#xff0c;前几天才发现su与su -命令是有着本质区别的&#xff01; 大部分Linux发行版的默认账户是普通用户&#xff0c;而更改系统文件或者执行某些命令&#xff…

java 前置通知_spring aop中的前置通知

fixassetServicemyInterceptormyInterceptor2在上面的配置文件中 我配置了两个interceptor &#xff0c;这两个interceptor的invoke方法中的逻辑是一样的。public Object invoke(MethodInvocation invo) throws Throwable {//自己的横切逻辑log....invo.proceed()}我想请教的问…

Java并发编程艺术读书笔记

1、多线程在CPU切换过程中&#xff0c;由于需要保存线程之前状态和加载新线程状态&#xff0c;成为上下文切换&#xff0c;上下文切换会造成消耗系统内存。所以&#xff0c;可合理控制线程数量。 如何控制&#xff1a; &#xff08;1&#xff09;使用ps -ef|grep appname&#…

您可能不需要翻译您JavaScript

by Alex Ewerlf由AlexEwerlf 您可能不需要翻译您JavaScript (You might not need to transpile your JavaScript) Popular guides like YouMightNotNeedJQuery.com and You Don’t Need Lodash/Underscore have challenged common industry practices.诸如YouMightNotNeedJQue…

java maven 操作 收集的一些命令

maven打包&#xff1a; mvn clean package -Dmaven.test.skiptrue 运行jar: java -jar target/spring-boot-scheduler-1.0.0.jar 这种方式关掉控制台就不可以访问&#xff0c;现在要后台运行的方式启动 nohup java -jar target/spring-boot-scheduler-1.0.0.jar & 清理并…

手机h5 java平台_H5 手机 App 开发入门:技术篇

1、手机 App 的技术栈手机 App 的技术栈可以分成三类原生 App 技术栈原生技术栈指的是&#xff0c;只能用于特定手机平台的开发技术。比如&#xff0c;安卓平台的 Java 技术栈&#xff0c;iOS 平台的 Object-C 技术栈或 Swift 技术栈。混合 App 技术栈混合技术栈指的是开发混合…

《Java程序设计》学期总结

《Java程序设计》 学期总结 课程设计小组 -迦瓦栈队 团队博客 读书笔记汇总第一周第二周第三周第四周第五周第六周第七周第八周第九周第十周 实验报告汇总实验一实验二实验三实验四实验五 代码托管链接GitOSC 课程收获与不足 上了一学期的课&#xff0c;收获当然后很多&#xf…

012-- mysql的分区和分表

分区 分区就是把一个数据表的文件和索引分散存储在不同的物理文件中。 mysql支持的分区类型包括Range、List、Hash、Key&#xff0c;其中Range比较常用&#xff1a; RANGE分区&#xff1a;基于属于一个给定连续区间的列值&#xff0c;把多行分配给分区。 LIST分区&#xff1a;类…

中科大计算机专业少实习_为什么很少有计算机科学专业的人?

中科大计算机专业少实习Hong Kong-based technology writer Dan Wang wrote a blog post exploring why so few people get degrees in computer science. And yes — it’s far fewer people than those who study other science and engineering fields.驻香港的技术作家王丹…

java犯的小错误_[Java教程]十个JavaScript中易犯的小错误,你中了几枪?

[Java教程]十个JavaScript中易犯的小错误&#xff0c;你中了几枪&#xff1f;0 2015-06-01 12:00:19序言在今天&#xff0c;JavaScript已经成为了网页编辑的核心。尤其是过去的几年&#xff0c;互联网见证了在SPA开发、图形处理、交互等方面大量JS库的出现。如果初次打交道&…

Kali渗透测试——利用metasploit攻击靶机WinXP SP1

搭建渗透测试环境 Kali攻击机 WinXP SP1 靶机 启动metasploit 跟windows RPC相关的漏洞 内部提供的漏洞攻击 靶机winxp sp1网络配置 查看虚拟机的NAT网段 配置WinXP SP1靶机的IP地址 执行漏洞利用 后漏洞利用&#xff1a;meterpreter> 靶机的信息 进程情况 查看到explorer.e…

创建响应式布局的优秀网格工具集锦《系列五》

在这篇文章中&#xff0c;我们为您呈现了一组优秀的网格工具清单。如果网页设计和开人员采用了正确的工具集&#xff0c;并基于一个灵活的网格架构&#xff0c;以及能够把响应图像应用到到设计之中&#xff0c;那么创建一个具备响应式的网站并不一定是一项艰巨的任务。enjoy! 您…