java的循环有哪些?作用是什么

1、while循环
2、do while循环
3、for循环

循环的作用就是解决一些重复又有规律的问题。例如:


public class Java{ public static void main(String[] args){ for(int i = 0; i < 5; i++){ System.out.println("HELLO JAVA"); } } }

上面的程序使用了for循环来输出内容,while 和 do while循环也可以输出上面的内容,只是语法不太一样。

while循环和do while循环语法相差不大,都是把变量放在循环体体外定义并赋上初值,然后变量更新放在循环体体内,唯一不同的地方就是执行的顺序不一样,while循环的特点是先判断,再执行,如果不符合判断条件,那循环体的内容是一次都不会执行的,而do while就不一样,它把判断条件放到最后面,先把循环体体内的内容执行完了再做判断,如果条件为真,就再执行一遍,为假就退出。不管怎么样,在do while这里程序至少会执行一次
如:

左边是while循环的执行顺序,右边是do while循环的执行顺序,do while循环适用于需要先输入一次再做判断的问题,while循环适用于目的比较明确的问题。
for循环是while循环的加强版,也是使用率最多的循环。for循环把变量、判断条件还有更新都放在了前面,这样就能保证不会漏掉哪一个表达式。for循环的执行顺序是:

循环操作执行完之后就会跳到循环更新那里,然后又再次进行判断,条件为真了再继续执行循环操作内容,只有表达式1只执行了一次。
要注意的是,在for循环里每个表达式后面都是有分号的,这代表着一个语句的结束,和在代码块里的定义变量是一个意思。
虽然for循环可以把表达式省略不写,以分号代替,单并不建议这么写,因为有时候代码多了之后万一有错了也找不到错误的地方。

循环的四个要素

1、循环变量的初值
2、循环变量的判断
3、循环变量的操作
4、循环变量的更新
这四个要素不管是在哪个循环里缺少一个都不行,容易造成死循环,就是一直重复的循环输出内容,停不下来,非常消耗资源。


break语句和continue语句

break意思是中断,跳楼;常用于switch和循环中,当满足了某个条件之后,就会立即跳出循环,执行下个语句。如:

public class Java{
    public static void main(String[] args){
        //输入成绩,如果错误就跳出
        Scanner input = new Scanner(System.in);
        int score = 0; //记录输入的成绩
        for(int i = 0; i < 5; i++){
        System.out.println("请输入成绩: ");
        score = input.nextInt();
            if(score < 0){ //输入的成绩为负数,就跳出
                break;
            }
        }
        System.out.println("输入的成绩是: "+score);
        }
    }
}

continue意思是继续,只能用于循环中,作用是跳出当前的循环,执行下一个循环或者语句,如:

public class Java{
    public static void main(String[] args){
     Scanner input = new Scanner(System.in);
        //输入成绩,输入错误重新输
        int score = 0;
        for(int i = 0; i < 5; i++){
            System.out.println("请输入成绩: ");
            score = input.nextInt();
        if(score < 0){  //输入错误了继续输入
            System.out.println("输入错误,请重新输入:");
            score = input.nextInt();
            continue;
        }   
    }
    }
}

输入错误后,跳出当前循环又再次进入到下一个循环执行语句。

1、Python简介

1.1 Python是什么

Python是近年来编程界最火的热点,没有之一。从性质讲它与我们熟悉的C/C++、Java、PHP等没有什么本质的区别,也是一种开发语言,而且已经进入主流的二十种开发语言中的Top5。

1.2 Python的由来和发展趋势

1989年,吉多·范罗苏姆(Guido van Rossum)在阿姆斯特丹为了打发无聊的圣诞节,决心开发一个新的脚本解释程序,他希望这个新的叫做Python的余元能够符合他的理想:创造一种C和shell之间功能全面、易学易用、可以扩展的语言。

1991年,第一个Python编译器诞生,基于C语言实现,并能够调用C语言的库文件。后面经历版本的不断革新换代,2004年的2.4版本诞生了目前最流行的WEB框架Django,六年后Python发展到2.7版本,这是目前为止2.x版本中最新且较为广泛使用的版本。

2.7版本的诞生不同于以往2.x版本的垂直换代逻辑,它是2.x版本和3.x版本之间过渡的一个桥梁,以便最大程度上继承3.x版本的新特性,同时尽量保持对2.x版本的兼容性。
此3.x在2.7版本之前就已问世,从2008年的3.0版本开始,Pythone3.x系呈迅猛发展之势,版本更新活跃,一直发展到现在最新的3.7版本。

Python2 VS Python3

许多初学者会纠结于从2.x版本还是从3.x版本开始Python的学习。这里简要对比下两者的差异:
1、3.x库中print是函数,使用起来更加方便(PRINT IS FUNCTION)
2、3.x版本默认使用UNICODE编码,解决了从前常见的中文乱码问题
3、3.x版本中某些库被改了名,具体的在后续学习中深入展开
4、目前3.x版本还不能完全支持Twisted module(网络框架),这恐怕是3.x版本中最大的遗憾。
官方宣布2020年之后不再支持2.x系列中使用最多的2.7版本,所以初学者建议从3.x开始学习。

1.4 Python的优缺点

优点
1、优雅、明确、简单:这是Python的定位,使得Python程序看上去简单易懂,初学者容易入门,学习成本更低。但随着学习的不断深入,Python一样可以胜任复杂场景的开发需求。引用一个说法:Python的哲学就是简单优雅,尽量写容易看明白的代码,尽量少些代码。
2、开发效率高:Python作为一门高级语言,具有丰富的第三方库,官方库中也有相应的功能模块支持,覆盖了网络、文件、GUI、数据库、文本等大量内容。因此开发者无需事必躬亲,遇到主流的功能需求时可以直接调用,在基础库的基础上施展拳脚,可以节省很多功夫和时间成本,大大降低开发周期。
3、无需关注细节:Python作为一种高级语言,在编程时无需关注底层细节(如内存管理等)
4、功能强大:Python是一种前端后端通吃的综合性语言,功能强大,PHP能胜任的角色它都能做。至于后端如何胜任,需要在后续的学习中逐步领悟。
5、可移植性:Python可以在多种主流的平台上运行,开发程序时只要绕开对系统瓶体的依赖性,就可以在无需修改的前提下运行在多种系统平台上。其他优点有待继续发掘。
缺点:
1、代码运行速度慢:因为Python是一种高级语言,不像C语言一样可以深入底层硬件最大程度上榨取硬件的性能,因此它的运行速度要远远慢于C语言。另外一个原因是,Python是解释型语言,我们的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程比较耗时,所以很慢。而C程序时运行前直接编译成CPU能够执行的机器码,所以非常快。
需要注意的是,这种慢对于不需要追求硬件高性能的应用场合来说,根本不是问题。因为他们比较的数量级并不是用户能够直观感受到的(比如开发一个网络下载器,C程序的运行时间需要0.001秒,而Python程序的运行时间需要0.1秒,慢了100倍,但由于网络的延时更慢,需要等待1秒,用户的体验几乎没有差别,除非使用精确的计时器来计时)。
2、发布程序时必须公开源码:还是因为Python是一门解释型语言,没有编译打包的过程(据说最新的Python可以打包,但本质上还是把源代码和解释器打在一起,没有太大的实际意义)。这个缺点仅限于我们想单纯靠卖开发出来的软件产品挣钱的时候。但在当前这个互联网时代,不靠卖产品本身来赚钱的商业模式越来越主流了,所以这已经不是什么大问题了。

1.5 Python的适用领域

1、云计算开发:云计算领域最火的语言,典型代表OpenStack
2、WEB开发:众多优秀的WEB框架、众多优秀的WEB站点(YouTube、Instagram、豆瓣等)均基于Python开发
3、系统运维:各种自动化工具的开发,CMDB、监控告警系统、堡垒机、配置管理&批量分发工具等均可以搞定
4、科学计算、人工智能:围棋大战的谷歌阿尔法狗部分功能使用了Python
5、图形GUI:暂缺大型应用
6、网络爬虫:这年头网络爬虫无处不在,很多都是基于Python开发,包括谷歌的爬虫,估计这是爬虫工程师的必备工具吧。

1.6 哪些地方在使用Python

来自几个现货的知名公司应用案例:
谷歌:Google app engine、google earth、爬虫、广告等
YouTube:世界最大的在线视频网站基于Python开发
Instagram:美国最大的图片分享网站,全部基于Python开发
Facebook:大量的基础库基于Python开发
Redhat:yum包管理工具基于Python开发
国内知名互联网公司的应用:豆瓣、知乎网站、主流互联网公司如阿里、腾讯、百度、金山、搜狐、盛大、网易。。。等通过Python来完成各种任务

2、Python基础

2.1 编程开发规范

1、代码开头:Python中代码必须顶格书写,除非被作为语句嵌套在条件判断或循环结构中
2、代码层级:代码与代码之间的逻辑层级关系通过空格来界定,第一层顶格书写,第二层开头预留4个空格(如果不考虑跨平台可使用tab)
3、对齐方式:同一个层级的代码必须严格对齐,如第一层都是顶格,第二层都是4个空格开头,第三层则是8个空格,以此类推。
4、注释:单行注释用#开头,单独一行作为注释或在代码后面通过#跟上注释均可,多行注释在首尾处用成对的三引号引用即可,可以是成对的三引号或者三个双引号
5、代码块:目前来看if逻辑判断和for循环条件后面均以冒号结尾,然后通过4个空格开始下一层级的实际执行动作语句编写。这部分在冒号后面接上的语句称为代码块
6、程序命名:编写的Python程序文件必须以.py结尾
7、项目规范:启动一个项目开发时现在开发工具中创建工程(project),然后根据需要创建目录,最后在目录下创建当前活动的py程序

2.2 变量

Python中的变量也用于存储临时值以便后续灵活调用,在定义时只能使用字母、数字、下划线的任意组合,且不能以数字开头,不能以Python内置的关键字来命名变量(如and, import, global, finally等)。对变量进行字符串类型的赋值时,字符串需要用成对的引号引起来,单双、三引号都可以。
建议使用以下两种形式来定义较为复杂的变量,便于阅读:
1、驼峰:即每个单词的首字母大写,其他小写,如HeroName
2、下划线:不同单词之间通过下划线分开:hero_name

2.3 字符编码

字符编码经历了ASCII码 -> Unicode -> UTF-8的演变过程,Python2默认使用ASCII编码,而3.x默认使用UTF-8编码。由于编码问题事关重大,因此强烈建议统一使用万能的UTF-8编码:
在程序的开头明确显式定义:

    #!/usr/bin/env python
    #-*- coding: utf-8 -*-

Windows下编程可以省略第一行,但为了保留移植性建议始终声明变量
虽然Python3.x默认使用UTF-8编码,但还是建议在程序中声明编码格式

以上是结果,下面谈谈为什么强烈建议使用urf-8编码,以及为什么utf-8编码就可以通吃。
众所周知计算机是美国人发明的,因此最早就只有包括所有字母的大小写、数字、必要的特殊符号等合计才127个字符被编码到计算机里,这个编码就是ASCII编码。由于需要进行编码的字符才有127个,因此用7个二进制位就足以搞定了,但8个二进制位才能构成一个完整的字节,因此索性用8个二进制位来进行编码,剩余的一位只好浪费掉。所以ASCCI码只占用一个字符。
随着计算机技术的推广和普及,其他不以英语为官方语言的国家也开始使用计算机了。那么现在问题来了,一个字节的8个bit位只能表示非常有限的字符(设计时只包括所有字母的大小写、数字、必要的特殊符号,其中整数还不能超过255),既有的ASCII编码表里没有包含其他国家的语言字符,但显然也没法强迫全球都使用英语,于是各个国家开始进行本土化改良,设计能满足自己国家需要的编码,如国内的GB2312。这里的改良涉及两个要点,一是原有的一个字节的编码空间要扩充为两个字节甚至更多,二是新的编码还不能与既有的ASCII编码冲突,否则老美要跟你捉急了!你可以想象,中国搞定了一套,日本也搞定了一套,接着是韩国、越南等巴拉巴拉,大家都有自己的编码标准,各自为政,遇到多语言混合使用的场景这编码表还不炸开锅,连同计算机一起傻掉!这时Unicode应运而生。Unicode把所有语言都统一到一套编码里,用两个甚至更多的字节来进行编码(通常用两个字节,搞不定时再喊人加砝码呀),这样就不会再有乱码问题了。
Unicode搞定了多国语言乱码和编码统一的问题,但你会发现如果需要处理的内容全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就不太经济划算。OK,Unicode的演进改良版utf-8就是来解决这个问题的。utf-8的优势在于它使用“可变长编码”,在继续沿用ASCII编码基础上来对1个字节不能搞定的那些语言字符进行编码设计,这样英文还是用1个字节,遇到中文就用3个或者更多的字节来处理。这样既可以保障空间和性能的最大化,还能兼顾老美的老巢和其他非英文的编码兼容问题,一举三得!所以你会发现ASCII其实是utf-8的子集,utf-8向下兼容。

2.4 Python解释器

Python是一门解释性语言,自然不能缺了解释器(类似于JVM)。官方支持Cpython、Jpython、Ironpython和pypy等,默认使用基于C语言实现的CPython。它也是使用最广泛的解释器。

CPython:是用C语言实现Pyhon,是目前应用最广泛的解释器。最新的语言特性都是在这个上面先实现,基本包含了所有第三方库支持,但是CPython有几个缺陷,一是全局锁使Python在多线程效能上表现不佳,二是CPython无法支持JIT(即时编译),导致其执行速度不及Java和Javascipt等语言。于是出现了Pypy。

Pypy:是用Python自身实现的解释器。针对CPython的缺点进行了各方面的改良,性能得到很大的提升。最重要的一点就是Pypy集成了JIT。但是,Pypy无法支持官方的C/Python API,导致无法使用例如Numpy,Scipy等重要的第三方库。这也是现在Pypy没有被广泛使用的原因吧。

而PyPy与CPython的不同在于,别的一些python实现如CPython是使用解释执行的方式,这样的实现方式在性能上是很凄惨的。而PyPy使用了JIT(即时编译)技术,在性能上得到了提升。

Python的解释器:

1、由于Python是动态编译的语言,和C/C++、Java或者Kotlin等静态语言不同,它是在运行时一句一句代码地边编译边执行的,而Java是提前将高级语言编译成了JVM字节码,运行时直接通过JVM和机器打交道,所以进行密集计算时运行速度远高于动态编译语言。

2、PyPy,它使用了JIT(即时编译)技术,混合了动态编译和静态编译的特性,仍然是一句一句编译源代码,但是会将翻译过的代码缓存起来以降低性能损耗。相对于静态编译代码,即时编译的代码可以处理延迟绑定并增强安全性。绝大部分 Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的。

2.5 构建Python的开发环境

构建好包括解释器(虚拟机)和开发工具IDE在内的Python开发环境才便于展开程序开发之旅。
解释器(虚拟机)从Python官方下载安装即可,Windows下安装后需要把Python下bin目录和script目录追加到系统环境变量path中。
真实开发建议使用pycharm工具,需要注意的是选择本地的解释器和项目的默认字符编码。

2.6 模块初识

Python内置了很多模块,同时也可以自定义编写一些好玩的模块,使用模块时需要通过关键字import导入。导入后Python会从系统变量的路径中从前往后一次性查找,首次成功查找匹配后不再进行后续查找。
因此如果需要使用自定义模块,需要特别关注自定义模块的存放位置,底线是只存放在系统变量的一个路径下,否则可能得到以外的结果

2.7 用户输入和格式化输出

用户输入通过input来实现,示例:

hero_name = input("请输入英雄的名称:")
print("Hi,", hero_name)
注意:
1、3.x版本中input默认接收用户输入的类型为字符串,如果需要使用其他数据类型需要类型转换:
    age = int(input("请输入年龄:"))
2、print输出中可以使用转义符号反斜线\来实现更多的显示效果,如\n表示换行,\t为制表符

字符串的格式化输出
Python中对字符串的格式化输出与C语言相同,借助%来实现:%s表示字符串;%d表示整数;%f表示浮点数;如果输出的字符串中本身需要%,那么需要使用两个连续的%%来输出一个%。

#!/usr/bin/env python
#! -*- coding: utf-8 -*-
print("英雄的名称为%s" %"八神庵")
print("您的年龄是:%d" %18)
print("英雄的名称为%s, 年龄是%d" %("草薙京", 24))

从上面的示例可以看出,利用print进行格式化输出的基本格式是在需要替换输出的位置用%s,%d等占位符,然后在后面通过%来接上实际替换后需要输出的内容。如果需要替换输出的元素不止一个,则需要在%后面通过一对圆括号把实际替换后需要输出的内容包含进来,同时在每个元素之间用逗号隔开。

2.8 Python的运行逻辑

内存加载代码 -> 语法分析 -> 解释器加载 -> 生成字节码 -> 执行字节码 -> 生成机器码 -> CPU执行

3、开始我们的Python开发之旅

3.1 第一个Python程序

#!/usr/bin/env python
#! -*- coding: utf-8 -*-
print("Hello World!")

执行结果:

“C:\Program Files\Python35\python.exe” D:/python/Day1/test/HelloWorld.py
Hello world!
Process finished with exit code 0

3.2 if-else判断

3.2.1 if-else语法规范

if condition1:
    command_layer1_1
    if condition2:
        command_layer2_2
    else:
        command_layer2_2
else:
    command_layer1_2

3.2.2 示例程序

#!/usr/bin/env python
#! -*- coding:utf-8 -*-
user_input = input("请输入用户名:")
if user_input == "admin":
    pass_input = input("请输入密码:")
    if pass_input == "password":
        print("登录成功,欢迎回来:%s" %(user_input))
    else:
        print("错误的用户名或密码,登录失败!")
else:
    print("错误的用户名或密码,登录失败!")

改良版:

#!/usr/bin/env python
#! -*- coding:utf-8 -*-
username = input("请输入用户名:\n")
password = input("请输入密码:\n")
if username == "admin" and password == "password":
    print("登录成功,欢迎回来:%s" %username)
else:
    print("登录失败!")

3.2.3 if-elif-else扩展

语法结构:

if condition1:
    statement1
elif condition2:
    statement2
elif condition3:
    statement3
else condition4:
    statement4

示例程序:

#!/usr/bin/env python
#! -*- coding:utf-8 -*-
age = input("请输入年龄:")
if age >= 18:
    print("已成年!\n")
elif age >= 6:
    print("未成年!\n")
else:
    print("儿童!\n")

3.3 for循环

3.3.1 for循环语法规范

for variable in list:
    loop command

variable表示变量,一般程序中使用i, j等,list表示变化的范围,可以是list列表,一般会考虑使用range函数来表示一个整数序列,如range(5)就表示[0, 5)之间的整数序列。语法规范中同样需要for语句后面的结尾冒号,以及循环体中的4个空格左缩进。

3.3.2 猜数游戏

通过系统生成一个随机数作为预设年龄,对用户提供3次猜测的机会,前两次如果没有猜中给出数字范围大小的提示,如果第3次还没有猜中则给与鼓励提示,同时打印出这个预设的数字,三次当中没有任何一次猜中会给予用户提示。

#!/usr/bin/env python
#! -*- coding:utf-8 -*-
import random               #导入随机数模块
age = random.randrange(10)  #随机生成[0, 9]之间的整数并赋值给变量age
for i in range(3):
    if i < 2:
        guess_num = int(input("猜一猜大黄的年龄:"))
        if guess_num > age:
            print("大了!\n")
        elif guess_num < age:
            print("小了!\n")
        else:
            print("恭喜,猜中了!\n")
            break;           #跳出循环
    else:
        guess_num = int(input("最后一次机会哦:"))
        if guess_num == age:
            print("恭喜,猜对了!\n")
        else:
            print("真是不幸运,3次机会已用完。大黄的年龄是:%d\n" %age)

注意:
1、为了便于程序调试可以为age赋一个固定数字做初值
下面进行程序的改进,当用户连续三次猜错后继续给机会,让用户选择继续猜还是直接退出,如果继续则再获得三次猜的机会:

#!/usr/bin/env python
#! -*- coding:utf-8 -*-
age = 24            #年龄初值24
count = 0           #计数器,初值为0
for i in range(10):
    if count < 3:
        guess_num = int(input("请输入猜测的数字:"))
        if guess_num == age:
            print("恭喜,猜对了!\n")
            break;
        elif guess_num > age:
            print("大了!\n")
        else:
            print("小了!\n")
        count += 1
    elif count == 3:
        continue_flag = input("是否继续玩耍(Y/N):")
        if continue_flag.lower() == "y":
            count = 0
        else:
            print("游戏结束!\n")
            break
    else:
        print("尝试次数过多,游戏强制退出!\n")

也可以使用while循环:

count = 0
while count < 10:
    # ..........
    count += 1

小结

1、Python是一门主流且发展迅猛的开发语言,目前存在2.x和3.x两个版本分支,前端后端都能胜任,功能强大,在互联网公司中应用广泛,值的托付;
2、Python开发需要安装解释器和IDE,建议使用Pycharm。2.x和3.x下的默认字符编码不同,推荐使用utf-8编码,包括程序编码和解释的编码两个层面;
3、系统自带模块和自定编写的模块均可以通过import导入使用;
4、在进行Python开发时,注意代码需要分层体现,第一层顶格编写,第二层左缩进4个空格;
5、input函数用于接收用户输入,默认输入的数据类型是字符串,可以通过int关键字转换为整数。print()函数可以进行简单输出,如果要格式化需要使用%s,%d,%f等来实现;
6、流程控制语句if-else判断和for、while循环都需要注意代码书写格式,流程控制语句关键字必须以冒号结尾,各层级之间需要使用4个空格缩进;
7、continue和break可以分别用于退出当前流程控制和整个循环。

1.排序
int i, temp;
int num[];
for(i = 0; i < n; i++){
temp = num[i];
num[i] = num[i + 1];
num[i + 1 ] = temp;
}
printf("%d",num[]);
2.短路运算
&& :左侧为假,就短路;
|| : 左侧为真,就短路;
3.dos系统常用命令
cd .. 返回上一级目录
cd 改变当前目录
dir 查看
4.快捷键
F1 显示帮助 F2重命名 F3搜索 F4显示地址栏列表
CTRL + C 复制 CTRL +V 粘贴 CTRL + X 剪切 CTRL +Y 反撤销
CTRL + Z 撤销 CTRL + S 保存 CTRL + A 全选
5.IP
IP地址是唯一标识网络上的计算机用32位,由4个8位二进制组成

1.Java SE
Java SE : 包裹 JVM 、JRE 、JDK和Java语言。
JVM :java 虚拟机。
JRE : java的运行时环境;
JDK : Java的开发工具;
Java语言: 定义了Java开发的语言法则;
Java EE : 企业级开发;
2.开发 Java程序
Java的原文件的扩展名是 .java的文件
经过编译器的编译后变为扩展名为 .class的文件。
3.Java程序开发中的注释方法:
文档注释
/**
*
*
/
单行注释
//
多行注释
/

*
*
*/

  1. 循环三要素:
    初值;判断;更新。
    5.冒泡排序:
    int i,j, temp;
    for(i = 0;i < n – 1; i++){
    for(j = 0; j < n – i – 1; j++){
    if(num[j] < num[j + 1]){
    temp = num[j];
    num[j] =num[j + 1];
    num[j + 1] = temp;
    }
    }
    }
    for(i = 0; i < n; i++){
    System.out.printf("%d",num[i]);
    }
    6.判断是否是闰年
    if(year %4 == 0 && year % 100 != 0 || year % 400 == 0)

机器数(真值)
1.一个数在计算机中用二进制表示。
2.机器数带符号,最高位为0表示正数;最高为1表示负数
如:
十进制数字3,字长8位 转换二进制数位:
00000011表示3.
10000011表示-3.
如果是8位二进制:
0000 0001 表示1;
1000 0001 表示-1;。
反码:
正数的反码是它本身;
负数的反码是在在原码的基础上,符号位不变,其余的各位取反。
如:
0000 0001 的反码为: 0000 0001;表示1
1000 0001 的反码为: 1111 1110;表示-1
补码:
正数的补码就是他本身;
负数的补码是在原码的基础上,符号位不变,其余各位取反,然后再加1。

程序的三大基本结构

1、顺序结构 – 按语句出现的先后顺序执行的程序结构。
2、条件结构/分支结构/选择结构 – 当程序执行到控制分支的语句时,首先判断条件,根据条件表达式的值选择执行相应的语句。
3、循环结构 – 有规律的重复执行某个代码块或者是某语句,直到条件为假后跳出循环。


java的选择结构

if选择结构是根据条件判断之后再做处理,if后面紧跟着判断条件,返回结果必须是布尔值,执行顺序如下:

首先是否满足判断条件条件,满足就执行代码块里的语句,要是条件为假,就跳出结构执行下一句。

if – else结构比if结构多了一种选择,如果if没满足条件就执行else的语句,顺序如下:

或者看代码会更加明白一些:

public class Java{
    public static void main(String[] args){
        int num = 8;
        if(num < 6){
            System.out.println("num的数值比6大");
        }else{
            System.out.println("num的数值比6小");
        }
    }
}

使用编译器运行代码知道结果后再把if里的判断条件修改一下看输出的语句是否改变。
有两种选择的时候可以使用if – else结构
还有多重的if-else if – if结构,是if -else的变种结构,适用于有多种选择时,如:

public class Java{
    public static void main(String[] agrs){
        int num = 90;   //考试成绩
        if(num >= 80){
            System.out.println("良好");
        }else if(num >= 60){
            System.out.println("中等");
        }else{
            System.out.println("差");
        }
    }
}

多重if -else if – else结构能嵌套很多个if – else结构,用的时候一定要注释好哪个结构是干什么用的,不然非常容易弄混,也会遗漏花括号。


switch结构

比if – else if – else结构使用简单,常用于实现菜单选项,只接受int,枚举,short,char,byte,在1.7版本以前是不接受字符串型的,因为String使用的频率非常高,更新1.7版本之后才添加了这个内容,使用的方法非常简单:java
import java.util.Scanner;
public class Java{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int num; //让用户输入数字
//提示用户输入数字
System.out.println("请输入数字: ");
num = input.nextInt();
switch(num){
case 1:
System.out.println("1、......");
break;
case 2:
System.out.println("2、......");
break;
case 3:
System.out.println("3、......");
break;
default :
break;
}
}
}

switch结构里有个break语句,意思是跳出循环,假如当前的变量值 == switch某个变量时,就会输出当前的结果,并且跳出循环,执行下个语句,这是使用break的好处,如果忽略掉这个语句,那么程序会一直往下执行,直到整段代码执行完毕后才会跳出循环,这样的结果就不是自己想要的并且也会浪费资源。


switch和多重if结构的区别就是switch只能处理等值条件判断的情况,而多重if结构适合处理连续调价的情况,根据条件来选择合适的条件结构是一件很重要的事情。