Java语言的程序流由若干条语句组成。在此之前所编写的程序都是一行一行的,由上而下,从左至右执行的。如果程序只能这样执行,那么程序能做的工作将会受到限制。有时可能需要控制程序执行的过程,例如,重复执行某一程序片段或当一个条件出现时才执行某一程序段,而这些变化可以通过流程控制结构的相应语句来完成。
三种基本的程序结构分别为顺序结构、分支结构、循环结构。顺序结构是每条代码都按照先后顺序被执行一次;分支结构是仅有部分代码被执行一次;循环结构是部分代码在某种条件下被反复执行。Java中还有一种特殊的程序结构称为跳转,可以用break或continue来改变程序的执行,实现跳转。这些基本的程序结构语句,看起来很简单,但其各种组合,一期构成了千变万化的算法,所以,学习算法之外,还要掌握一种实现算法的程序语言的基本语句。
1.类是一个基本单元
编写程序,特别是阅读程序之前,首先需要了解程序的基本结构和组成单元,以方便剖析代码的组成。Java是面向对象的编程语言,不同于Pascal、C等面向过程的编程语言。面向对象编程用不同的方法分析和解决问题。熟悉C语言的读者在用Java编程时不能照搬传统的面向过程的求解问题的方法,而必须将自己的思想转入一个面向对象的世界。但这种转变比较难,我们首先需要熟悉面向对象设计和编程的基本思想和基本概念。
面向对象编程(Object Oriented Programming,简称OOP)用于现实世界更一致,于人的思维模式更一致的方法来分析解决问题。面向对象编程的核心是“对象”。在现实世界中,人们无时无刻不与对象打交道。例如,磁盘,电视机,汽车等,这一切都是对象。对象有两个基本特点:状态和行为。例如,汽车有质量、颜色和速度等状态,也有启动,转弯、加速等操作。软件对象根据现实世界的对象建立,既可以表示现实世界中的事物,也可以表示事件。
在面向对象编程中,有很多对象共享某些属性和方法。可以利用同一类的对象共享一些属性和方法的特点,创造一个创建对象的母体。这种软件母体称为类。也就是说,类是定义同一类对象的属性和方法的蓝图或原形,对象是类的一个实例。
Java提供了几千种类,有的用于图形界面设计,有的用于数据库操作,有的用于网络编程。另外,应用开发人员为解决实际问题也创建了用户自定义类。
类是面向对象程序的基本要素。他包含两个部分:类说明和类主体
类的定义格式如下:
[修饰符] class 类名 { 类的主体... }
与C++不同,Java即使是一个最简单的程序也必须写成类。而C++中,简单的程序中完全可以不出现类,写一个main函数就可以了。要注意Java和C++在这一点上的区别。
(1)修饰符:是影响类生存空间和可访问性的关键字。常用的一种修饰符是public。他表示允许其他任何类访问。修饰符缺省时,这个类称为友好类。
(2)类名:紧跟在关键字class之后,类名的命名要符合Java标识符的命名规则,类体由两部分构成:变量定义和方法定义。变量用来描述属性,方法用来描述行为。类实体跟在类的声明之后,用一对花括号{}界定。
2.main方法
在C++程序中,main方法的声明可以是int main()或void main(),相对比较灵活。在Java中,main方法作为Java应用程序的入口,写法基本是固定的,例如:
public static void main(String args[])
唯一可以做修改的是main方法中传递的字符数组的名称,可以不用args的名称。还有按照Java语言的约定,声明数组时方括号也可以紧跟类型。main方法还可以写成:
public static void main(String[] yourName)
实际上不管上面的哪种写法,可以看到:
(1)main方法必须定义成public,即公有的。
(2)main方法必须定义成static,即静态方法。
(3)main方法的返回类型固定为void
(4)main方法接收一个字符串数组作为参数
3.自定义方法
软件对象是变量和方法的集合。根据现实世界的对象建立,软件对象与客观世界的对象存在着一一对应的映射关系。面向对象语言用变量描述对象的状态,用方法描述对象的行为。
方法声明的基本格式如下:
[修饰符] 返回值类型 方法名(参数1,参数2…参数N) { //变量声明 //语句 }
方法声明的第一行是方法头。
(1)方法名是一个标识符,参数列表用圆括号界定,参数之间用逗号分隔。每个参数由参数类型和参数名组成。参数类型可以是基本数据类型,也可以是类。
(2)方法名前必须指明方法返回值的类型。返回值类型可以是基本类型或引用类型。若方法无返回值,则返回值类型是void。一个方法最多返回一个值。若方法需要返回计算结果,可用带表达式的return语句。若无返回值,可以不用return语句,或者使用不带表达式的return语句,即:
return;
(3)参数表由0个或多个参数构成。每个参数包括参数类型和参数名。参数类型可以是括号界定方法体,包括变量声明和语句。
(4)修饰符是可选项,public和private是常用的修饰符。在方法头后面是方法体,由花括号界定方法体,包括变量声明和语句。
方法体中声明的变量是局部变量,只有在该方法内才有效。如果布局变量与类的成员变量同名,则局部变量屏蔽类的成员变量。局部变量和成员变量的另一个区别是,成员变量有默认值,而局部变量却没有。
4.System.out.println的使用
System是位于java.lang包下的一个常用类。java.lang包称为Java核心包,在这个包下的类可以直接使用,无须使用import语句导入。System类提供了很多的常用方法,如currentTimeMillis方法可以得到时间信息,getProperties方法可以得到当前计算机系统的相关信息。System类中有一个静态的对象out,out是printStream的对象,提供了print和println这样的常用方法,用于在控制台上输出信息。具体要在控制台输出信息时,使用System.put.pringln(参数)的语法形式即可。
此外,为了在控制台得到输出结果,也可以使用System.out.print(参数)的语法形式。这里使用的print方法与println方法的区别是:print在显示参数后,并不将光标移动到下一行的开头,而println()在显示参数后,自动将光标位置移到下一行。此外Java也可以使用System.out.printf()完成数据输出,该用法完全类似于C语句的printf函数。
5.一个简单而完整的程序
public class test { public void displayAscii(char ch) { int iTmp = (int)ch; System.out.println(ch+"的ASCII码是:"+iTmp); } public static void main(String[] args) { test obj = new test(); obj.displayAscii('0'); obj.displayAscii('a'); obj.displayAscii('v'); obj.displayAscii('d'); } }
输出:
0的ASCII码是:48 a的ASCII码是:97 v的ASCII码是:118 d的ASCII码是:100