一:

    块作用域

块(即复合语句):是指由一对花括号括起来的若干条简单的java语句。块决定了变量的作用域,一个块可以嵌套在另一个块中,如下:

 public class print_In {
public static void main(String[] args){
int a=2;
{
int a=3;
int b=3;
}
}
}

需要注意:在一个块里,定义个变量,不能再嵌套的块里在定义相同的变量,如果定义会报错。

二:if语句

语法形式和js是一样:if(){}else if (){} ......else{}

java里的if语句不同于python里的if语句,python里可以直接用数组、字符串、字典等来充当条件,但是在java里只能使用表达式直接可以判断布尔值,才可以做判断,否则会报错。

 public class print_In {
public static void main(String[] args){
int a=2;
int v=4;
if (a<4){
System.out.println("OK");
}else {
System.out.println("bad");
}
}
}

错误的写法:

 public class print_In {
public static void main(String[] args){
int a=2;
int v=4;
if (a){
System.out.println("OK");
}else {
System.out.println("bad");
}
}
}

for循环:

语法:for (){} 通过计数器或者变量的值修改。来结束for循环,()表达式里包含三部分,初始化一个变量并赋值,变量的布尔比较,变量的自增。目的是循环的跳出。变量的作用域,作用域循环体。

如下:

 public class print_In {
public static void main(String[] args) {
int i;
for(i=2;i<4;i++){
System.out.println(i);
}
System.out.printf("i value is %s ",i);
}
}

如果main方法想使用for循环之后的变量值,需要在for循环外定义这个变量。才可以被外部调用!

 while 语句:

形式:while(condition){statement} 这种形式,当condition 成立的时候,才运行块代码,如果不成立将不会运行。

 public class  print_In{
public static void main(String[] args){
int i=3;
while (i<6){
System.out.println(i);
i+=1;
}
}
}

while 循环另一个形式: do  {statement}while(condition)会运行一次块代码,在做判断。

 public class  print_In{
public static void main(String[] args){
int i=3;
do { System.out.println(i); }while (i<3);
}
}

这种场景比较多见的是:交互的时候,需要输出一定条件,然用户去做判断。

switch 多个选项:(比较少用)

当我们做多个判断的时候,使用if/else的时候显得很臃肿,可以使用switch case语句来判断。结构:

switch(var){case var:statement break;case var:statement break。。。。。。}注意加break 避免执行多个case分支。

 import java.util.Scanner;

 public class  print_In{
public static void main(String[] args){
Scanner scan= new Scanner(System.in);
System.out.println("Please entre your choice?");
int chocie=scan.nextInt();
switch (chocie){
case 1:
System.out.printf("you have entre %d",chocie);
break
case 2:
System.out.printf("you have entre %d",chocie);
break
case 3:
System.out.printf("you have entre %d",chocie);
break
}
}
}

需要注意的是case后面跟的choice的值!!!

如果用户没有输入没有匹配的值,在if语句中我们使用else,在switch里用default子语句来判断未匹配到选项值的处理。default子句也需要break。

 import java.util.Scanner;

 public class  print_In{
public static void main(String[] args){
Scanner scan= new Scanner(System.in);
System.out.println("Please entre your choice?");
int chocie=scan.nextInt();
switch (chocie){
case 1:
System.out.printf("you have entre %d",chocie)
break;
case 2:
System.out.printf("you have entre %d",chocie)
break;
case 3:
System.out.printf("you have entre %d",chocie)
break;
default:
System.out.printf("bad input");
break
}
}
}

四:中断流程

在java中,和python一样也有break和continue,但是java中的break 可以带标签进行退出。而python 不可以。

 public class loop {
public static void main(String[] args){
int i=2;
while (i<5){
System.out.printf("i is %d \n",i);
if (i==4) break;
i+=1;
}
}
}

其中if(condition) break;为缩写,也可以写下面这样:

 public class loop {
public static void main(String[] args){
int i=2;
while (i<5){
System.out.printf("i is %d \n",i);
if (i==4){
break;
}
i+=1;
}
}
}

带标签的break tag  ,其中tag需要用冒号,声明。指定跳到那个标签。如下:

 public class loop {
public static void main(String[] args){
int i=3;
break_tag:
while ( i<6){
System.out.printf("i is %d\n" ,i);
for (int a=2;a<6;a++){
if (a==4){
break break_tag;
}
System.out.printf("a is %d\n",a);
}
i++;
}
}
}

注意语法:tag后面是冒号: ,紧随循环体,否则报没有块!

跳到tag之后,不会再次执行跳出的块代码(循环或者块的代码),执行后面的语句。

 public class loop {
public static void main(String[] args){
int i=3;
break_tag:
while ( i<6){
System.out.printf("i is %d\n" ,i);
for (int a=2;a<6;a++){
if (a==4){
break break_tag;
}
System.out.printf("a is %d\n",a);
}
i++;
}
System.out.printf("OK");
}
}

tag的位置。tag可以跳出多个循环。但是break只能跳出块,不能跳入块!

当然了,不仅仅是loop情况,也可以是if等语句的块代码。

 public class loop {
public static void main(String[] args){
int i=3;
for (int a=2;a<6;a++){
break_tag:
if(i >0){ if (a==4){
break break_tag;
}
System.out.printf("a is %d\n",a);
}
i++;
}
}
}

输出结果:

 a is 2
a is 3
a is 5

continue 和python 里的continue 意思是一样。就是跳出循环的,回到循环首部。

当然continue也有标签的意思。指定跳到匹配的标签的循环首部。

java 控制流的更多相关文章

  1. java控制流

    目录 1.引用数据类型 2.流程控制语句 2.1 条件控制语句if 2.2 if语句与三元运算符的互换 2.3 循环语句 2.4 循环嵌套 2.5 跳转语句 2.6 选择结构switch 3.猜数字案 ...

  2. java控制流学习

    java流程控制学习 Scanner对象 概念 1.通过Scanner类实现程序和人的交互,通过它获取到用户的输入.java.util.Scanner是java5的特征. 我们可以通过Scanner类 ...

  3. HowToDoInJava Java 教程·翻译完成

    原文:HowToDoInJava 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 学习资源 目录 核心 Java 教程 什 ...

  4. Dart编程语言入门

    Dart基础入门语法介绍,详细说明可以查看相关视频<Dart编程语言入门>. 变量与常量 变量 1.使用 var 声明变量,默认值为 null var a;//null a = 10; 2 ...

  5. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  6. java基础-控制流语句

    浏览以下内容前,请点击并阅读 声明 一般情况下,代码的执行按照从上到下的顺序,然而通过加入一些判断,循环和跳转语句,你可以有条件地执行特定的语句. 接下来分三部分介绍Java的控制流语句,他们是判断语 ...

  7. 黑马程序员——JAVA基础之程序控制流结构之判断结构,选择结构

    ------- android培训.java培训.期待与您交流! ---------- 程序控制流结构:顺序结构:判断结构:选择结构:循环结构. 判断结构:条件表达式无论写成什么样子,只看最终的结构是 ...

  8. 《深入Java虚拟机学习笔记》- 第16章 控制流

    <深入Java虚拟机学习笔记>- 第16章 控制流

  9. Java使用条件语句和循环结构确定控制流

    与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流.本文将简单讲解条件.循环和switch. 一.块作用域 块(block),即复合语句.是指由一对大括号括起来的若干条简单的Java语句 ...

随机推荐

  1. sublime text2 注册码

    近终于找到  sublime Text2 升级到 2.0.2 build 2221 64位 的破破解 输入注册码就成了 ----- BEGIN LICENSE ----- Andrew Weber S ...

  2. springboot项目的重定向和转发

    下面是idea软件创建的项目目录,这里总结了一下转发与重定向的问题,详解如下. 首先解释一下每个文件夹的作用,如果你是用的是idea创建的springboot项目,会在项目创建的一开始resource ...

  3. 手动解除联合的ArcGIS Server

    ArcGIS Server可以通过和Portal联合,组建WebGIS系统. 假如已经联合的ArcGIS Server已经无法访问,例如服务器宕机了,或者网络断开了.需要手动解除联合的ArcGIS S ...

  4. OpenGL学习--02--绘制一个红色三角形

    The OpenGL buffer is created, bound, filled and configured with the standard functions (glGenBuffers ...

  5. Ubuntu VNC 打开spyder无法输入(检测不到键盘配置)解决方法

    在ubuntu中安装好spyder后, 打开spyder发现无法输入. 在打开spyder的终端窗口,有如下提示: QXcbConnection: Failed to initialize XRand ...

  6. Java 简化版学生管理系统(IO版)

    Student management system   学生管理系统IO版 详细知识点可参考一下几篇文章 常用API Java 之ArrayList集合及应用 Java 之IO流及应用 Compreh ...

  7. Linux sar命令工具详细介绍

    sar命令工具详细介绍 by:授客 QQ:1033553122 由于篇幅限制,采用网盘分享, 下载地址: sar命令工具详细介绍.pdf

  8. CVE-2018-10945 mongoose越界访问

    Hello , I found a vulneratility in mg_handle_cgi function The function is in mongoose.c , line 8925  ...

  9. Pwn with File结构体(四)

    前言 前面几篇文章说道,glibc 2.24 对 vtable 做了检测,导致我们不能通过伪造 vtable 来执行代码.今天逛 twitter 时看到了一篇通过绕过 对vtable 的检测 来执行代 ...

  10. linux 目录操作命令 mkdir、rmdir、cd -、cp、scp、mv、rm

    mkdir /bin/mkdir-p [目录名] 递归创建 mkdir /tmp/testmkdir /tmp/noexit/test在一个不存在的目录下创建一个目录test,要使用-p选项 可以创建 ...