Java语言的学习
Java选择结构
在学习完变量的概念和一些常用的数据类型(主要是int、double、char、String、boolean等)之后,接下来就是介绍一下选择结构:if判断语句、if-else选择结构、多重if选择语句、嵌套if选择语句,它们都是用于区间的判断。
在生活中我们经常需要做判断,然后才能决定是否做某件事情,所以才产生了if选择结构。
流程图符号汇总
简单的if选择语句
if判断语句
语法
if(条件){
//代码块;
}
流程图
执行顺序:
先判断条件,当结果为true(真)时,程序先执行大括号里的代码块,再执行{}部分后面的代码;当结果为flase(假)时,直接执行if结构后面的代码。
if-else选择语句
语法
if(条件){
//代码块1;
}else{
//代码块2;
}
流程图
执行顺序:
先判断条件,当结果为true(真)时,程序先执行代码块1,;当结果为flase(假)时,程序执行代码块2,最后执行{}部分后面的代码。
复杂的if选择语句
当问题需要判断条件比较多,因此需要将多个条件连接起来,Java中可以使用逻辑运算符连接多个条件。常用的逻辑运算符如下表:
运算符 | 汉语名称 | 表达式 | 说明 | 举例 |
---|---|---|---|---|
&& | 与、并且 | 条件1 && 条件2 | 两个条件同时为真,则结果为真;两个条件有一个为假,则结果为假 | 具有选举权的条件:年满18周岁&&中国公民。两个条件都为真则具有选举权;有一个条件为假,则不具有选择权 |
|| | 或、或者 | 条件1 || 条件2 | 两个条件有一个为真,则结果为真;两个条件同时为假,则结果为假 | 从中国去美国的方式:乘飞机||乘船。两个条件有一个为真,就可以去美国;若都为假,则去不了美国 |
! | 非 | !条件 | 条件为真时,结果为假;条件为假时,结果为真 | 成为优秀软件工程师的条件:!偷懒 |
?: | 三目运算 | 条件?表达式1:表达式2 | 条件为真时,执行表达式1;条件为假时,执行表达式2 | 有没有过60分?及格:不及格 |
多重if选择语句
语句
if(条件1){
//代码块1;
}else if(条件2){
//代码块2;
}else{
//代码块3;
}
流程图
执行顺序:
首先,程序判断条件1,如果成立,则执行代码块1,然后直接跳出这个多重if选择结构,执行它后面的代码。这种情况下,代码块2和代码块3都不会被执行。如果条件1不成立,则判断条件2,如果条件2成立,执行代码块2;如果不成立,则执行代码块3,最后跳出if选择结构。
注意:(1)else if可以有多个或没有,需要几个else if块完全取决于需要。
(2)else块最多有一个或没有,else块必须放在else if块之后。
嵌套if选择语句
语法
if(条件1){
if(条件2){
//代码块1;
}else{
//代码块2;
}
}else{
//代码块3;
}
流程图
执行顺序:
程序首先判断条件1,如果条件成立,继续判断条件2,当条件2成立的时候执行代码块1,当条件2不成立时,执行代码块2,如果条件1不成立,则执行代码块3。
注意:(1)只要当满足外层if选择结构的条件时,才会判断内层if的条件。
(2)else总是与它前面最近的if配对。
if结构书写规范
(1)为了使if结构更加清晰,应该把每个if或else包含的代码块用大括号起来。
(2)相匹配的一对if和else应该左对齐。
(3)内层的if结构相对于外层的if结构要有一定的缩进。
switch选择结构
在switch选择结构中,switch、case、default、break都是Java的关键字。
在需要多重分支并且条件判断是等值判断的情况下,switch选择结构会更简单,代码结构会更清晰易读。
语法
switch(表达式){
case 常量1:
//代码块1;
break;
case 常量2:
//代码块2;
break;
......
default:
//代码块3;
break;
}
执行顺序:
先计算并获得switch后面小括号里的表达式或变量的值,然后将计算结果顺序与每一个case后面的常量比较,当二者相等时,执行这个case块中的代码;当遇到break时,就跳出switch选择结构, 执行switch选择结构之后的代码。如果没有任何一个case后的常量与switch后的小括号中的值相等,则执行switch末尾部分的default块中的代码。
注意:
在switch选择结构中的break是可以省略的,但是省略后会带来一些问题:当某个case后的常量值与switch后小括号中的值相匹配时,执行该case块的代码,后面的case就不再进行条件判断,而直接执行后面所有的case块中的代码,直到遇到break结束。所以在编写switch选择结构时不要忘记在每一个case块后加上一个"break;",用来跳出switch选择结构。
Java循环结构
使用选择结构可以解决逻辑判断的问题,但是在实际问题中,会遇到需要多次重复执行的操作,仅仅使用选择结构不容易解决,循环结构的作用就是帮助我们完成繁重的计算任务,同时它也可以使我们的代码简单化。
所有的循环结构都有这样的特点:首先,循环不是无休止进行的,满一定条件的时候循环才会继续,称为“循环条件”,循环条件不满足的时候,循环退出;其次,循环结构是反复进行相同的或类似的一系列操作,称为“循环操作”。
如下示例:
public class WhileDemo1{
public static void main(String[] args){
int i = 1;
while(i <= 100){
System.out.println("第" + i + "遍写:好好学习,天天向上!");
i++;
}
}
}
这段代码的作用:输出第1~100遍好好学习,天天向上!
退出条件是循环必不可少的,如果以上代码少了i++(迭代)的话,它会一直输出一句话:第一遍写:好好学习,天天向上!这样的话,程序就成为了死循环!
while循环
语法
while(循环条件){
//循环操作
}
流程图
执行顺序:
(1)声明并初始化循环变量
(2)判断循环条件是否满足,如果满足则执行循环操作;否则退出循环
(3)执行完循环操作后,再次判断循环条件,决定继续执行循环或退出循环
do-while循环
语法
do{
//循环条件
}while(循环条件);
流程图
执行顺序:
(1)声明并初始化循环变量
(2)执行一遍循环操作
(3)判断循环条件,如果循环条件满足,则循环继续执行,否则退出循环
for循环
语法
for(表达式1;表达式2;表达式3){
//循环体
}
执行顺序:
for(int i = 0 ; i < 100 ; i++){
System.out.println("我热爱学习!");
}
1.执行初始化部分(int i = 0 ;)
2.进行循环条件判断(i < 100 ;)
3.根据循环条件判断结果。如果为true,则执行循环体;如果为false,则退出循环,步骤4和步骤5都不执行
4.执行迭代部分,改变循环变量值(i++)
5.依次重复步骤2~步骤4,直到退出for循环结构
在此循环结构中,表达式1(int i = 0 ;)仅仅执行了一次,因为i是从0开始的,所以输出100遍"我热爱学习!"
注意:
根据for循环结构的语法,小括号中有三个表达式,在语法上,这三个表达式都可以省略,但表达式后面的分号不能省略。
在for循环中如果出现省略了表达式1的情况,则需要在for语句前给循环表量赋值;如果省略表达式2,即不判断循环条件,循环将会无终止运行,也就形成了"死循环";如果省略表达式3,即循环变量的值不会改变,也会出现"死循环"。
在编程过程中要避免"死循环"的出现,一种就是不省略表达式2,另一种方法是在循环体中使用break强制退出循环结构。
break与continue
break语句:终止某个循环,使程序跳到循环体外的下一条语句。
continue语句:跳出本次循环,进入下一次循环的语句。
continue语句可以用于for循环结构,也可以用于while和do-while循环结构。在for循环结构中,continue语句使程序先跳到迭代部分,然后判断循环条件。如果为true,则继续下一次循环;否则终止循环。在while循环结构中,continue语句执行完毕后,程序将直接判断循环条件。continue语句只能用在循环结构中。
循环结构的区别
while循环结构:先进行条件判断,再执行循环体。如果条件不成立,退出循环。
do-while循环结构:先执行循环体,再进行条件判断,循环体至少执行一次。
for循环结构:先执行初始化,再进行条件判断,然后执行循环体,最后进行迭代部分的计算。如果条件不成立,退出循环。
在解决问题时,对于循环次数确定的情况,通常选用for循环结构;对于循环次数不确定的情况,通常选用while和do-while循环结构。
Java数组操作
在Java中,数组就是一个变量,用于将相同数据类型的数据存储在内存中。数组中的每一个数据元素都属于同一数据类型。
基本要素
标识符:和变量一样,在计算机中,数组也要有一个名称,用于区分不同的数组。
数组元素:当给出了数组名称,要向数组中存放数据,这些数据就称为数组元素。
数组下标:在数组中,为了正确地得到数组的元素,需要对它们进行编号,这样计算机才能根据编号去存取,这个编号就称为数组下标。
元素类型:存储在数组中的数组元素应该是同一类型,如:int,char,String…
对上图,做如下说明:
1.数组只有一个名称,如apples。
2.数组元素在数组里顺序排列编号,该编号即为数组下标,它表明了元素在数组中地位置。数组规定第一个元素的编号为0,因此数组的下标依次是0,1,2,3。
3.数组中的每个元素都可以通过下标来访问。由于元素是按顺序存储的,每个元素固定对应一个下标,因此可以通过下标快速地访问到每个元素。例如:apple[0] 指数组中的第一个元素88。
4.数组的大小(长度)是数组可容纳的最大数量。定义一个数组的同时也定义了它的大小。如果数组已满但是还继续向数组中存储数据的话,程序就会报错,这被称为数组越界。
使用步骤
1.声明数组
声明一维数组:
数据类型[] 数组名;
数据类型 数组名[];
2.分配空间
虽然声明了数组,但并不会为数组元素分配空间,此时还不能使用数组。因此要为数组分配内存空间,这样数组的每一个元素才能对应一个存储空间。
分配空间就是告诉计算机在内存中分配一些连续的空间来存储数据。
数组名 = new 数据类型[数组长度];
数据类型[] 数组名 = new 数据类型[数组长度];
3.赋值
分配空间后就可以向数组里放数据了,数据中的每一个元素都是通过下标来访问的。
数组名[下标值];
数据类型[] 数组名 = {值1,值2,值3,......,值n};
4.调用数组进行数据处理
int[] apple = new int[]{1,2,3,4};
for(int i = 0 ; i < apple.length - 1 ; i++){
System.out.println(apple[i]);
}
这部分代码的作用是将数组中存储的值依次输出,输出结果为:1234
总结:
数组是可以在内存中连续存储多个元素的结构,数组中所有元素必须属于相同的数据类型。
数组中的元素通过数组下标进行访问,数组的下标从0开始。
据中的每一个元素都是通过下标来访问的。