导图社区 java
java基础知识详解,Java语言具有功能强大和简单易用两个特征。一张思维导图带你初步了解Java的基本知识,更全面深入的学习并理解Java。
编辑于2024-04-29 14:31:48课程安排
编程课15节
单词背诵20个
考公听课3节
理论背记20
中心主题
行测
政治
***新时代社会主义思想
***同志对关系新时代党和国家事业发展的一系列重大理论和实践问题进行了深邃思考和科学判断,就新时代坚持和发展什么样的中国特色社会主义、怎样坚持和发展中国特色社会主义,建设什么样的社会主义现代化强国、怎样建设社会主义现代化强国经建设什么样的长期执政的马克思主义政党、怎样建设长期执政的马克思主义政党等重大时代课题,提出一系列原创性的治国理政新理念新思想新战略,是***新时代中国特色社会主义思想的主要创立者。
习思想的基本问题:新时代(历史方位)+坚持和发展中国特色社会主义
一变两不变(新时代)
一变
2017年十九大提出
社会主要矛盾
以前:物质文化需要——落后的社会生产
现在:美好生活需要——不平衡不充分的发展(不平衡在前,不充分在后)
两不变
基本国情不变
社会主义初级阶段
我国仍然处于并将长期处于社会主义 初级阶段,1987年党的十三大提出
国际地位不变
世界上最大的发展中国家
坚持和发展中国特色社会主义
习思想的核心要义
十个明确
四个意识,四个自信,两个维护
政治意识
大局意识
核心意识
看齐意识
道路自信
必由之路
理论自信
从邓小平理论开始、三个代表、科学发展观、***新时代中国特色社会主义思想
制度自信
根本的制度保障
文化自信
精神力量
以***和党中央为核心
十四条坚持
两个百年
建党
全面建成小康社会-2020
建国
建成富强、民主、文明、和谐、美丽的社会主义现代化强国
本世纪中叶
战略安排
2020年-2035年 基本实现社会主义现代化
主题
主题
java
个人规划
半年内完成基础学习
一年提升学习
一天至少2小时学习时间
不断学习不断进步
java四种能力
1. 代码能力
2. 面向对象分析能力
3. 内存底层和源码分析习惯
4. 调试和查错能力
学习
任何的程序本质有三个:变量、if语句、循环语句
不同阶段,学习的战略思路不能错!
守的阶段,天天怀疑老师,想着创出自己的路,太急躁
破的阶段,循规蹈矩,还照着做,没出息
离的阶段,自成体系,自成一家
建立知识体系为第一要务
能掌握70%的知识点就很好了。
能掌握每个知识点的最常见的用法就超很好了。
不追求每个知识点都100%掌握。
第一阶段
入门
常见编程语言介绍
C语言
C语言诞生于1972年,现代高级语言的鼻祖,由著名的贝尔实验室发明。
在底层编程,比如嵌入式、病毒开发等应用,可以替代汇编语言来开发系统程序。
在高层应用,也可以开发从操作系统(Linux/Windows都基于C语言开发)到各种应用软件。
C++语言
作为C语言的扩展,C++是贝尔实验室于80年代推出的。C++是一种混合语言,既可以实现面向对象编程,也可以开发C语言面向过程风格的程序。
C++语言在科学计算、操作系统、网络通讯、系统开发、引擎开发中仍然被大量使用。
Java语言
由美国SUN公司(被oracle公司收购)发明于1995年,是目前业界应用最广泛、使用人数最多的语言,连续多年排名世界第一,可以称之为“计算机语言界的英语”。
Java广泛应用于企业级软件开发、安卓移动开发、大数据云计算等领域,几乎涉及IT所有行业。关于Java的发展历史和特性,将在后面专门介绍。
JavaScript语言
JavaScript是一种脚本语言,已经被广泛用于Web应用开发;应用范围越来越大,重要性越来越高。目前,前端开发核心其实就是JavaScript语言。
Python语言
Python发明于1989年,语法结构简单,易学易懂;
Python广泛应用于:人工智能、科学计算、web编程等。
PHP语言
PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。
一般用于WEB开发领域;大量的中小型网站以及某些大型网站使用PHP开发。
Object-C和Swift语言
Object-C通常写作Objective-C或者Obj-C或OC,是根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言。OC主要用于苹果软件的开发。
Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与OC共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。
C#(c sharp)语言
C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。
Kotlin语言
Kotlin已正式成为Android官方支持开发语言,并且是一种可以兼容java的语言。
Go语言
Go(又称 Golang)是 Google开发的一种静态强类型、编译型语言。
Basic语言
虽然易学,但功能不够强大,应用到大程序的有效性令人怀疑。已经逐步退出历史舞台。
优势
跨平台是Java语言的核心优势,赶上最初互联网的发展,并随着互联网的发展而发展,建立了强大的生态体系,目前已经覆盖IT各行业的“第一大语言”,是计算机界的“英语”。
各版本意义
JavaSE(Java Standard Edition):标准版,定位在个人计算机上的应用
这个版本是Java平台的核心,它提供了非常丰富的API来开发一般个人计算机上的应用程序,包括用户界面接口AWT及Swing,网络功能与国际化、图像处理能力以及输入输出支持等。在上世纪90年代末互联网上大放异彩的Applet也属于这个版本。Applet后来为Flash取代,Flash即将被HTML5取代。
JavaEE(Java Enterprise Edition):企业版,定位在服务器端的应用
JavaEE是JavaSE的扩展,增加了用于服务器开发的类库。如:JDBC是让程序员能直接在Java内使用的SQL的语法来访问数据库内的数据;Servlet能够延伸服务器的功能,通过请求-响应的模式来处理客户端的请求;JSP是一种可以将Java程序代码内嵌在网页内的技术;
JavaME(Java Micro Edition):微型版,定位在消费性电子产品的应用上
JavaME是JavaSE的内伸,包含J2SE的一部分核心类,也有自己的扩展类,增加了适合微小装置的类库:javax.microedition.io.*等。该版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。
运行模式
1. Java首先利用文本编辑器编写 Java源程序,源文件的后缀名为.java;
2. 再利用编译器(javac)将源程序编译成字节码文件,字节码文件的后缀名为.class;
3. 最后利用虚拟机(解释器,java)解释执行。如上图所示。
4. 计算机高级语言的类型主要有编译型和解释型两种,而Java 语言是两种类型的结合。
JDK
JVM(运行环境)
JRE(虚拟机)
验证安装
右击我的电脑->属性->高级系统设置->环境变量
配置环境变量,一共需要配置三个
第一步
在系统变量区域新建一个JAVA_HOME。
在变量编辑框里面添加变量名JAVA_HOME以及JDK文件的安装路径。填写完之后点击确定即可。
第二步
在path变量中添加JDK和JRE下的Bin目录所在的路径
第三步
配置ClassPath变量
新建步骤跟JAVA_HOME 一样。然后输入一下代码 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
在窗口中输入命令“java -version ”。出现如下结果,则说明JDK安装成功。
编程需要注意的问题
1. 输入法切换到中文无法进行编程,汉字符号一般是两个字节,英文及英文符号一般为1个字节
2. 中文分号和英文分号一定要分清,用了IDEA后符号用错、{}少可以自动报错
3. 第一次编程
public class Welcome{ public static void main(String[] args){ System.out.println("Hello world!"); } }
4. 用java编程,首先是写好代码,然后通过jdk转换为class文件,再放到编译器里面进行运行。
5. Java对大小写敏感,用错程序跑不起来
6. 关键字class 的意思是类。Java是面向对象的语言,所有代码必须位于类里面。
7. 源文件编译后,得到相应的字节码文件,编译器为每个类生成独立的字节码文件。
8. main方法是Java应用程序的入口方法,格式固定:public static void main(String[] args) {…}
9. 一个源文件可以包含多个类。
10. 每个语句必须以分号结束,回车不是语句的结束标志,所以一个语句可以跨多行。
11. 编程时,一定要注意缩进规范;
12. 在写括号、引号时,一定是成对编写,然后再往里插入内容。
dos语言
cd 目录路径 进入一个目录
cd .. 进入父目录
dir 查看本目录下的文件和子目录列表
cls 清除屏幕命令
上下键 查找敲过的命令
Tab键 自动补齐命令
变量、数据类型、运算符
二进制
二进制,是计算技术中广泛采用的一种数制,由德国数理哲学大师莱布尼茨于1679年发明。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”。
数字计算机只能识别和处理由‘0’.‘1’符号串组成的代码。其运算模式正是二进制。
二进制对应两种状态,广泛应用于电子科学。比如:可以对应电子器件的开关状态、对应信号电压状态(+5V等价于逻辑"1",0V等价于逻辑"0")、对应卡带是否打孔状态、电磁存储(磁体状态:南为0,北为1)等等。
万物总有规律;有规律,就可量化;可量化,就能数字化;数字化,就能使用计算机化。
二进制和十进制转化
十进制转为二进制
转换网站:https://tool.lu/hexconvert/
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。
十进制数29转成二进制就是:11101
二进制转为十进制
二进制转十进制采用“权相加法”。
注释
单行注释
单行注释使 // 开头
多行注释
多行注释以/*开头以*/结尾。注意,多行注释不能嵌套使用。
文档注释
文档注释以/**开头以*/结尾,注释中包含一些说明性的文字及一些JavaDoc标签(后期写项目时,可以生成项目的API)
实例
标识符和关键字
关键字
Java关键字是Java语言保留供内部使用的,如class用于定义类。 我们不能使用关键字作为变量名或方法名。
标识符是为方法、变量或其他用户定义项所定义的名称。
标识符4大规则
1. 必须以字母、下划线_、美元符号$开头。
2. 其它部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。
3. 大小写敏感,且长度无限制。
4. 不可以是Java的关键字。
标识符的使用规范
表示类名的标识符:每个单词的首字母大写,如Man, GoodMan
表示方法和变量的标识符:第一个单词小写,从第二个单词开始首字母大写,我们称之为“驼峰原则”,如eat(), eatFood()
字符集
Java不采用ASCII字符集,而是采用Unicode字符集。因此,这里字母的含义不仅仅是英文,还包括汉字等等。但是不建议大家使用汉字来定义标识符!
变量的本质
1. 变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。
2. 可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。
3. Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。 比如,int a=3;表示a变量的空间大小为4个字节。
变量的分类和作用域
分类
局部变量
方法或语句块内部定义的变量。生命周期是从声明位置开始到到方法或语句块执行完毕为止。局部变量在使用前必须先声明、初始化(赋初值)再使用。
成员变量(又称实例变量)
方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终。如果不自行初始化,它会自动初始化成该类型的默认初始值。
静态变量(又称类变量)
使用static定义。 从属于类,生命周期伴随类始终,从类加载到卸载。 (注:讲完内存分析后我们再深入!先放一放这个概念!) 如果不自行初始化,与成员变量相同会自动初始化成该类型的默认初始值,如表 2-3所示。
常量
在Java语言中,用关键字final来定义一个常量。常量一旦被初始化后不能再更改。
为了更好的区分和表述,一般将1、2、3、’a’、’b’、true、false、helloWorld等称为字符常量,而使用final修饰的PI等称为符号常量。
变量和常量命名规范
所有变量、方法、类名:见名知义
类成员变量:首字母小写和驼峰原则:monthSalary
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线:MAX_VALUE
类名:首字母大写和驼峰原则:Man,GoodMan
方法名:首字母小写和驼峰原则:run()、runRun()
基本数据类型
Java数据类型分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。
注意事项
引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!
本章只讲解基本数据类型。引用数据类型在后续数组和面向对象章节讲解。
整型
整型常量的四种表示形式
1. 十进制整数,如:99, -500, 0
2. 八进制整数,要求以 0 开头,如:015
3. 十六进制数,要求 0x 或 0X 开头,如:0x15
4. 二进制数,要求0b或0B开头,如:0b01110011
Java语言的整型常数默认为int型,声明long型常量可以后加l或L 。
long a = 55555555; //编译成功,在int表示的范围内(21亿内)。 long b = 55555555555; //不加L编译错误,已经超过int表示的范围。
报错:The literal 55555555555 of type int is out of range,所以我们需要修改代码为:long b = 55555555555L;
浮点型
float类型又被称作单精度类型,尾数可以精确到7位有效数字。
double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。
Java浮点类型常量有两种表示形式 (1) 十进制数形式: 例: 3.14 314.0 0.314 (2) 科学记数法形式 例:3.14e0 3.14E2 3.14E-1
浮点型不精确,不要用于比较
浮点数存在舍入误差,数字不能精确表示。浮点数适合普通的科学和工程计算,精度足够;但不适合精度要求非常高的商业计算,这时候要使用BigDecimal进行运算和比较。
浮点常量默认类型是double,要改成float可以后面加F或f
float类型的数值有一个后缀F或者f,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。
运行以上两个示例,发现示例2-13的结果是false,而示例2-14的输出结果是d1==d2。这是因为由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。 浮点数一般都存在舍入误差,很多数字无法精确表示(例如0.1),其结果只能是接近, 但不等于。二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。
java.math包下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。
重要知识:不要使用浮点数进行比较!很多新人甚至很多理论不扎实的有工作经验的程序员也会犯这个错误!需要比较请使用BigDecimal类
字符型
ASCII字符集表示了英文字母、数字、特殊字符、控制符,所有字符集的老祖宗,大家都会兼容它。但是一个字节能够表示256个状态,而ASCII字符只用到128个,后面128个一直是空的。
于是有了ISO8859-1, 别名叫latin-1, 包含了256个字符。前128个字符与ASCII中完全相同。后128个包括了西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。
随着我国的计算机普及,汉字的处理也有了我们自己的方案。那就是GB2312,两个字节表示1个汉字。两个字节可以表示65536个状态,汉字再多也能全部包含。后来,又有了GBK、GB18030。
如果有一种统一的字符集,将世界上所有语言字符都纳入其中,每一个字符都给予一个全球独一无二的编码,那么乱码问题就会消失。于是,全球所有国家和民族使用的所有语言字符的统一字符集诞生了,这就是Unicode字符集。
Unicode字符集是为了给全世界所有字符一个唯一的编码,“唯一”对应的英文为Unique,而编码的英文为code。
Unicode采用了字符集和编码分开的策略。Unicode之前,Unicode诞生之前可以将字符集和字符编码混为一谈,而在Unicode中必须严格区分开。
Unicode字符集统一采用两个字节表示一个字符,包括英文字母。但是,由于英文占据互联网信息的绝大部分。真实存储和传输时,会造成极大的浪费;因此,目前主要采用UTF-8编码来实现具体的存储和传输。UTF-8是变长编码,用1-6个字节编码Unicode字符。西欧字符仍然是1个字节,汉字3个字节。
字符型在内存中占2个字节,在Java中使用单引号来表示字符常量。例如'A'是一个字符,它与"A"是不同的,"A"表示含有一个字符的字符串。
char 类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。
转义字符
以后我们学的String类,其实是字符序列(char sequence), 本质是char字符组成的数组。
布尔型(boolean)
boolean类型有两个常量值,true和false。
在内存中占一个字节或4个字节,不可以使用 0 或非 0 的整数替代true和false,这点和C语言不同。
注意点:JVM规范指出boolean当做int处理,也就是4字节,boolean数组当做byte数组处理,这样我们可以得出boolean类型占了单独使用是4个字节,在数组中是确定的1个字节。
请不要这样写:if ( flag = = true ),只有新手才那么写。关键也很容易写错成if(flag=true),这样就变成赋值flag为true而不是判断!老鸟的写法是if ( flag )或者if ( !flag)
类型演示: boolean flag ; flag = true; //或者flag=false; if(flag) { // true分支 } else { // false分支 }
运算符
算数运算符
+,-,*,/,%属于二元运算符。%是取模运算符,就是我们常说的求余数操作。
算术运算符中++(自增),--(自减)属于一元运算符。
子主题
二元运算符的运算规则:
整数运算
如果两个操作数有一个为long, 则结果也为long。
没有long时,结果为int。即使操作数全为short,byte,结果也是int。
浮点运算
如果两个操作数有一个为double,则结果为double。
只有两个操作数都是float,则结果才为float。
取模运算
其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相同,如:7%3=1,-7%3=-1,7%-3=1。
一元运算符
++与--
int a = 3; int b = a++; //执行完后,b=3。先给b赋值,再自增。 System.out.println("a="+a+"\nb="+b); a = 3; b = ++a; //执行完后,b=4。a先自增,再给b赋值 System.out.println("a="+a+"\nb="+b);
赋值及其扩展赋值运算符
案例
int a=3; int b=4; a+=b;//相当于a=a+b; System.out.println("a="+a+"\nb="+b); a=3; a*=b+3;//相当于a=a*(b+3) System.out.println("a="+a+"\nb="+b);
关系运算符
关系运算符用来进行比较运算。关系运算的结果是布尔值:true/false;
注意事项
=是赋值运算符,而真正的判断两个操作数是否相等的运算符是==。
==、!= 是所有(基本和引用)数据类型都可以使用。
> 、>=、 <、 <= 仅针对数值类型(byte/short/int/long,float/double 以及char)
逻辑运算符
短路与和短路或采用短路的方式。从左到右计算,如果只通过运算符左边的操作数就能够确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率。
案例
//1>2的结果为false,那么整个表达式的结果即为false,将不再计算2>(3/0) boolean c = 1>2 && 2>(3/0); System.out.println(c); //1>2的结果为false,那么整个表达式的结果即为false,还要计算2>(3/0),0不能做除数,//会输出异常信息 boolean d = 1>2 & 2>(3/0); System.out.println(d);
位运算符
位运算指的是进行二进制位的运算
案例
int a = 3*2*2; int b = 3<<2; //相当于:3*2*2; int c = 12/2/2; int d = 12>>2; //相当于12/2/2;
&和|既是逻辑运算符,也是位运算符。如果两侧操作数都是boolean类型,就作为逻辑运算符。如果两侧的操作数是整数类型,就是位运算符。
不要把^当做数学运算乘方,是位的异或操作。
字符串连接符
+运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
案例
条件运算符
String type = score<60?不及格:及格; x为 boolean 类型表达式,先计算 x的值,若为true,则整个运算的结果为表达式y的值,否则整个运算结果为表达式z 的值。
运算符优先级
注意事项
大家不需要去刻意的记这些优先级,表达式里面优先使用小括号来组织!!
逻辑与、逻辑或、逻辑非的优先级一定要熟悉!(逻辑非>逻辑与>逻辑或)。
如:a||b&&c的运算结果是:a||(b&&c),而不是(a||b)&&c
数据类型转换
我们讲解了八种基本数据类型,除了boolean类型之外的七种类型是可以自动转化的。
自动类型转换
自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型。如图2-6所示,黑色的实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会有精度的损失。
可以将整型常量直接赋值给byte、 short、 char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围即可。
案例
short b = 12; //合法 short b = 1234567; //非法,1234567超出了short的表数范围
强制类型转换
强制类型转换,又称为造型(cast),用于强制转换数值的类型,可能损失精度。
当将一种类型强制转换成另一种类型,而又超出了目标类型的表数范围,就会被截断成为一个完全不同的值。
int x = 300; byte bx = (byte)x; //值为44
注意事项
不能在布尔类型和任何数值类型之间做强制类型转换
基本类型转化时常见错误和问题
操作比较大的数时,要留意是否溢出,尤其是整数操作时。 L和l的问题: (1) 不要命名名字为l的变量,字母l容易和数字1混淆。 (2) long类型使用大写L,不要用小写l。
控制语句、方法、递归算法
控制语句
控制语句:把语句组合成能完成一定功能的小逻辑模块。它分为三类:顺序、选择和循环。
学会控制语句,是真正跨入编程界的“门槛”,是成为“程序猿”的“门票”。
“顺序结构”代表“先执行a,再执行b”的逻辑。比如,先找个女朋友,再给女朋友打电话;先订婚,再结婚;
“条件判断结构”代表“如果…,则…”的逻辑。比如,如果女朋友来电,则迅速接电话;如果看到红灯,则停车;
“循环结构”代表“如果…,则重复执行…”的逻辑。比如,如果没打通女朋友电话,则再继续打一次; 如果没找到喜欢的人,则再继续找。
三种流程控制语句就能表示所有的事情!不信,你可以试试拆分你遇到的各种事情。实际上,任何软件和程序,小到一个练习,大到一个操作系统,本质上都是由“变量、选择语句、循环语句”组成。
条件判断结构(选择结构)
条件判断结构有:if结构和switch结构。而if结构又可以分为if单分支结构、if-else双分支结构、if-else if-else多分支结构。
if结构
语法结构
if(布尔表达式){ 语句块 }
注意
如果if语句不写{},则只能作用于后面的第一条语句。
强烈建议,任何时候都写上{},即使里面只有一句话!
Math类的作用
Math.random()该方法用于产生0到1区间的double类型的随机数,但是不包括1。
int i = (int) (6 * Math.**random**()); //产生:[0,5]之间的随机整数
掷骰子游戏代码
public class Test1 { public static void main(String[ ] args) { //通过掷三个骰子看看今天的手气如何? int i = (int)(6 * Math.random()) + 1;//通过Math.random()产生随机数 int j = (int)(6 * Math.random()) + 1; int k = (int)(6 * Math.random()) + 1; int count = i + j + k; //如果三个骰子之和大于15,则手气不错 if(count > 15) { System.out.println("今天手气不错"); } //如果三个骰子之和在10到15之间,则手气一般 if(count >= 10 && count <= 15) { //错误写法:10<=count<=15 System.out.println("今天手气很一般"); } //如果三个骰子之和小于10,则手气不怎么样 if(count < 10) { System.out.println("今天手气不怎么样"); } System.out.println("得了" + count + "分"); } }
if-else双分支结构
if(布尔表达式){ 语句块1 }else{ 语句块2 }
当布尔表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。
if-else if-else多分支结构
子主题
语法结构
if(布尔表达式1) { 语句块1; } else if(布尔表达式2) { 语句块2; }…… else if(布尔表达式n){ 语句块n; } else { 语句块n+1; }
当布尔表达式1为真时,执行语句块1;否则,判断布尔表达式2,当布尔表达式2为真时,执行语句块2;否则,继续判断布尔表达式3······;如果1~n个布尔表达式均判定为假时,则执行语句块n+1,也就是else部分。
switch多分支结构
语法结构
switch (表达式) { case 值1: 语句块1; [break]; case 值2: 语句块2; [break]; … … … … … [default: 默认语句块;] }
switch会根据表达式的值从相匹配的case标签处开始执行,一直执行到break处或者是switch的末尾。如果表达式的值与任一case值不匹配,则进入default语句。
switch中表达式的值,是int(byte、short、char也可,long不行)、枚举,字符串。
循环结构分两大类,一类是当型,一类是直到型。
当型
当布尔表达式条件为true时,反复执行某语句,当布尔表达式的值为false时才停止循环,比如:while与for循环。
直到型
先执行某语句, 再判断布尔表达式,如果为true,再执行某语句,如此反复,直到布尔表达式条件为false时才停止循环,比如do-while循环。
while循环
案例
while (布尔表达式) { 循环体; }
在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。
语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。
子主题