第5课 Java的基本结构和控制语句
在程序设计中,基本结构和控制语句都是十分重要的元素,它控制着程序如何执行;初学者在学习的时候,一定要对本课知识加以领会,达到贯通前后的效果。本课将讲解注释语句、顺序语句和条件分支语句。
5.1 本课学习目标
在本课的内容中,将详细讲解注释语句、顺序语句、条件语句,本课的具体学习目标如下:
● 注释语句。
● 顺序语句。
● 条件语句。
5.2 基本结构
在前面的过程,用户编写了许多Java程序,也见识了一个Java程序,但是一个Java程序到底有哪些部分构成,它是由类组成的,类中有属性和方法,如图5-1所示。
图5-1 Java程序结构图
从上面的结构中,一个Java源程序包括下面几个方面。
● 类:一个源程序中一定有类(也就是关键字class),至少一个类,允许有多个类,一个类将编译一个class文件。在编译形成class文件后,用户可以删除*.java文件,程序也可以正常运行。
● 属性:在Java程序中,属性至关重要,它可以定义变量,在Java程序中,属性就是用来描述对象的特征,比如一个人,描述的特征为黄眼睛、大耳朵、高鼻子、身材苗条等,这些都是对象的属性。
● 方法:在Java程序中,方法是在属性的基础上,用来实现一些功能,如读取数据库的记录、添加字符串等,这些都是方法。
5.3 注释语句
在任何程序设计的语言中,注释语句在程序中是不执行的,对程序本身不产生任何影响,Java也不例外。在程序中,注释语句只是起到注释作用的效果,但是在程序中,注释依然不可少,如在一个大的项目中,多人协作,需要将一些程序注释,让人理解易懂,很快明白其中的意思,这时就需要注释语句。在Java中,注释语句分为单行注释与多行注释,下面来看一段程序代码,用户不必明白语句的意思,但是用户也可以通过注释语句明白这个程序的意思,其程序如下:
public class flowertest { public static void main(String[] args) { flower1 f1=new flower1(); flower1 f2=new flower1(); f1.setcolor("红色"); f1.setname("牡丹"); f1.setcountry("中国"); f1.setcity("沈阳"); f2.setcolor("黄色"); f2.setname("玫瑰"); f2.setcountry("美国"); f2.setcity("拉斯维加斯"); System.out.println(f1.tostring()); System.out.println(f2.tostring()); } } //这是一个花的接口 //其中的方法没有被实现 interface flower { void setcolor(String color1); void setname(String name); String getcolor(); String getname(); } //这是一个花的类,实现了上面的那个接口 //通过设置器来设置对象的参数 //通过访问器来获得对象的参数 //通过toString方法来让对象以字符串的形式输出 class flowers implements flower { private String color1; private String name; public void setcolor(String color1) { this.color1=color1; } public void setname(String name) { this.name=name; } public String getcolor() { return color1; } public String getname() { return name; } public String tostring() { String information="花的名称是:"+name+";"+" "+"花的颜色是:"+color1; return information; } } /*这是一个花的类,继承了上面的那个类 *通过设置器来设置对象的参数 *通过访问器来获得对象的参数 *通过toString方法来让对象以字符串的形式输出**/ class flower1 extends flowers { private String country; private String city; public void setcountry(String country) { this.country=country; } public void setcity(String city) { this.city=city; } public String getcountry() { return country; } public String getcity() { return city; } public String tostring() { String information=super.tostring()+" "+"这种花出自的国家:"+country+";"+" "+"出自的城市:"+city; return information; } }
在上面这个程序中,“//”的内容都是注释语句,读者每读到这些注释语句,就会明白程序的意思,通过这些注释语句,读者很快就会明白其中的意思。
1.单行注释语句
单行注释语句,只能在一行内生效,其格式如下:
//注释内容
2.多行注释语句
多行注释语句可以注释多行,其注释格式如下:
/*注释内容 *注释内容 **/
5.4 顺序语句
在默认情况下,程序都是从第一行,逐渐执行到最后一行的,这种语句叫做顺序语句。顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句即可,它的执行顺序是自上而下,依次执行的,例如下面的代码:
public class ShunXu { public static void main(String args[]) { int a=5; int b=3; int c; c = a; a = b; b = c; System.out.println(a); System.out.println(b); System.out.println(c); } }
上面就是一个典型的顺序语句,这个语句在以后的编程过程中会常常用来进行交换数值,在开始的时候a=5、b=3,当执行完最后的值的时候,a和b交换了数值,执行结果如图5-2所示。
图5-2 顺序语句
5.5 条件语句
在程序中,选择控制语句通常有两种,分别是if语句和switch语句。当在程序中使用选择控制语句时,要求程序根据一个表达式的结果来判断执行哪条语句。
5.5.1 if控制语句
if控制语句有很多种,有单if语句、if…else语句和if…else…if语句,它们在日常开发中都有相应的应用,在本节将会一一为大家进行讲解。
1.if语句
if语句控制由保留字符if、条件语句及位于后面的语句组成。条件语句通常是一个布尔表达式,结果为true或flase。若条件为true,则执行语句并继续处理其后的下一条语句;若条件为false,则跳过该语句并继续处理经跟着的整个if语句的下一条语句,其形式如下:
if(condition)statement1; statement2;
当条件为true时,则执行statement1、statement2语句;当条件为false时,则只执行statement2,if语句的执行流程图如图5-3所示。
图5-3 if语句流程图
下面将通过一个实例来讲解这个if语句。
实例13:下面将通过一段实例代码认识if结构,其代码如下:
public class TiaoIF { public static void main(String args[]) { int chengji = 92; if(chengji>90){System.out.println("优秀"); } System.out.println("考查完毕"); } }
运行程序,执行结果如图5-4所示。
图5-4 条件语句
实例探索和读者练习:
在上面的一个实例中,进行条件语句的判断,对条件if语句进行了理解;下面将给出一段代码,读者看完代码后,给出运行结果,然后再将程序输入到计算机中进行编译,看结果是不是与自己给出的相同,程序如下:
public class TiaoIfOne { public static void main(String args[]) { int zhou =45; if(zhou>60){System.out.println("已经及格"); } System.out.println("检查完毕"); } }
2.If…else语句
上面的条件语句使用非常有限,只能对单一的条件进行判断处理,对条件不满足的答案不进行处理,这在某些情况是不能满足用户设计程序的需求,if…else语句的基本形式为:
If(condition)statement1; else statement2;
当条件condition为true时,执行statement1;当condition为false时,执行statement2语句,其流程图如图5-5所示。
图5-5 if…else语句流程图
通过上面的流程图,不管用户给你的是什么值,经过if…else语句的执行,它都将会给出一个结果。下面通过一段代码来认识这个控制语句,其代码如下:
public class TiaoIFTWO { public static void main(String args[]) { int year = 2005; if(year>2008) { System.out.println("我的值大于2008"); } else { System.out.println("我的值小于等于2008"); } } }
运行结果如图5-6所示。
图5-6 if…else执行效果
实例探索和读者练习:
在上面的一段代码中,进行条件语句的判断,对条件if…else语句进行了理解,下面将给出一段代码,读者看完代码后,给出运行结果,然后再将程序输入到计算机中进行编译,看结果是不是与自己给出的相同,程序如下:
public class TiaoIFThree { public static void main(String args[]) { int year = 2046; if(year<2046) { System.out.println("我绝对相信我的值小于2046");} else { System.out.println("我的值大于等于2046");} } }
3.If…else…if语句
if…else…if语句是一种嵌套的if语句,它能判断多种情况,其格式如下:
if(condition1) statement1; else if(condition2) statement2; else statement3
首先它会判断第一个条件condition1为true时,执行statement1;当执行为flase时,则继续执行下面的代码;当condition2为true时,执行statement2;当condition2为flase时,则执行statement3,其流程图如图5-7所示。
图5-7 if…else…if语句流程图
if…eles…if可以嵌套无限次,可以说只要遇到正确的condition,就执行相关的语句,然后结束程序,下面通过一个实例来认识这个控制语句。
实例14:下面将通过一段实例代码认识if…eles…if结构,其代码如下:
public class ChengJiIf { public static void main(String args[]) { int chengji = 45; if(chengji>90) System.out.println("优秀"); else if(chengji>70) System.out.println("一般"); else if(chengji>60) System.out.println("合格"); else System.out.println("不及格,重修"); } }
执行结果,它将会出现一个“不及格,重修”,如图5-8所示。
图5-8 if…else…if语句执行结果
实例探索和读者练习:
在上面的一段代码中,进行条件的语句的判断,对条件if…else…if语句进行了理解,下面将给出一段代码,用户看完代码后,给出运行结果,然后再将程序输入到计算机中进行编译,看结果是不是与自己给出的相同,程序如下:
public class ChengJiIfOne { public static void main(String args[]) { int yonth = 44; if(yonth<20) System.out.println("十分年轻"); else if(yonth<30) System.out.println("正当壮年"); else if(yonth<45) System.out.println("而立之年"); else if(yonth<60) System.out.println("已经老了"); else System.out.println("垂垂老去"); } }
5.5.2 switch控制语句
switch语句和if…else…if语句十分类似,但在一些特定的场合中,switch语句要比if…else…if优越,switch语句的格式如下:
switch(experssion) { Case value1:statement1; break; case value2:statement2; break; case value3:statement3; break; default:statement4; }
switch控制语句流程图如图5-9所示。
图5-9 switch控制语句流程图
在流程图中,表达式expression必须是byte、short、int和char类型,每个value必须是与expression类型兼容的一个常量,而且不能重复。看一个十分简单的代码,了解一下switch的基本结构,其代码如下:
public class SwitchOne { public static void main(String args[]) { int a=2009; switch(a) { case 2007: System.out.println("a=2007"); break; case 2008: System.out.println("a=2008"); break; case 2009: System.out.println("a=2009"); break; default: System.out.println("no"); } } }
这段代码执行结果应该是程序找到a=2009后,输出a=2009,其结果执行后如图5-10所示。
图5-10 运行结果
实例探索和读者练习:
在上面的一段代码中,进行条件语句的判断,对条件swtich语句进行了理解。下面将给出一段代码,读者看完代码后,给出运行结果,然后再将程序输入到计算机中进行编译,看结果是不是与自己给出的相同,程序如下:
public class SwitchTwo { public static void main(String args[]) { int c=66; switch(c) { case 1: System.out.println("c=1"); break; case 2: System.out.println("c=2"); break; case 9: System.out.println("c=9"); break; default: System.out.println("没有"); } } }
在这里switch语句并没有完全学完,switch遇到一些关键字“break”时,程序会自动switch语句,如果把switch语句中的break关键字去掉,程序将自动运行,直到程序结束,下面将讲解两段代码,让读者理解关键字break在switch语句中的作用。
第一段代码在swtich语句中有break关键字,代码如下:
public class Switch1 { public static void main(String args[]) { int a=33; switch(a) { case 11: System.out.println("a=11"); case 22: System.out.println("a=22"); case 33: System.out.println("a=33"); break; default: System.out.println("no"); } } }
这一段代码有break关键字,所以程序被阻止,不能从第一行执行也不能执行最后一行,执行结果如图5-11所示。
图5-11 执行结果
还有一种与之类似的switch语句,case后没有任何执行的语句,如下面代码:
public class Switch2 { public static void main(String args[]) { int a=111; switch(a) { case 111: case 222: case 333: System.out.println("a=111|a=222|a=333"); default: System.out.println("no"); } }
这种程序只要满足条件中的一个条件,将会输出“a=111|a=222|a=333”,执行结果如图5-12所示。
图5-12 执行结果
这种程序看上去毫无道理,实际上却意味深长,例如下面一段代码,你会觉得这些程序也有必要,而且简单,达到了功能。下面将用它判断月份是属于哪一季度的,其程序代码如下:
public static void main(String args[]) { int month = 12; switch(month) { case 12: case 1: case 2: System.out.println("冬季"); break; case 3: case 4: case 5: System.out.println("春季"); break; case 6: case 7: case 8: System.out.println("夏季"); break; case 9: case 10: case 11: System.out.println("秋季"); break; default: System.out.println("输入错误"); } } }
执行结果如图5-13所示。
图5-13 执行结果
在程序中,12、1、2月份属于冬季,a=12输出的文字应该是冬季,当输入是这个数字的时候,则会输出“输出错误”的显示。
许多初学者可能会误认为default一定位于switch的结尾,其实不然,它可以位于switch的任意位置,请看下面一段代码:
public class Switch4 { public static void main(String args[]) { int a=1997; switch(a) { case 1992: System.out.println("a=1992"); default: System.out.println("no"); case 1997: System.out.println("a=1997"); case 2008: System.out.println("a=2008"); }
这段代码很好理解,就是a对应着哪一个,则从那一句语句向下执行,直到程序结束,如果下面没有相对应的程序,则从default开始执行,直到程序结束,执行程序结果如图5-14所示。
图5-14 执行结果
实例探索和读者练习:
在上面的几段代码中,对各个条件switch语句进行了学习,对条件swtich语句进行了深刻理解。下面将给出一段代码,读者看完代码后,给出运行结果,然后再将程序输入到计算机中进行编译,看结果是不是与自己给出的相同,程序如下:
public static void main(String args[]) { int month = 6; switch(month) { case 12: case 1: case 2: System.out.println("冬季看雪"); break; case 3: case 4: case 5: System.out.println("春季赏花"); break; case 6: case 7: case 8: System.out.println("夏季观潮"); break; case 9: case 10: case 11: System.out.println("秋季,落叶纷飞"); break; default: System.out.println("输入错误"); } } }
5.6 本课回顾和网络关键词
在本课的内容中,首先,简要介绍了Java程序的基本结构、注释语句、顺序语句和条件分支语句。在本节的内容中,将对本课中的主要知识点进行简要回顾,并总结出本课知识点的网络关键词。
1.本课回顾
在本课的内容中,主要讲解了Java程序的基本结构、注释语句、顺序语句和条件语句。回顾本课内容,主要的知识点概括如下。
(1)Java的基本结构。
讲解了一个普通Java程序具备哪些元素。
(2)注释语句。
注释语句对程序没有任何影响,它是帮助程序工作者很快地理解其中的意思,主要知识点如下。
● 单行注释。
● 多行注释。
(3)顺序语句。
顺序语句是逐一执行的,直到最后一行。
(4)条件语句。
条件语句是满足条件再执行的语句,条件语句主要知识点如下。
● if控制语句。
● switch控制语句。
2.本课网络关键词
在下面的内容中,将对本课中的主要知识点进行收集整理,总结出本课知识点的网络关键词。
本课知识点的网络关键词有:“单行注释”、“多行注释”、“顺序语句”、“条件语句”、“switch语句”、“if语句”。
通过整理上述网络关键词,读者可以在百度、Google或Yahoo中获取上述关键词的基本知识。有的关键词还可以继续细分并且可以获取每个知识点的对应使用实例,读者可以通过获取的实例来加深对知识的理解。
希望通过本课内容的学习,读者不但能够掌握Java的基本结构和控制语句的基本知识,对其有一个初步的认识,为进入本书后面知识的学习打下坚实的基础。