Java_快速入门练习.doc
《Java_快速入门练习.doc》由会员分享,可在线阅读,更多相关《Java_快速入门练习.doc(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章 实验 方法4.1实验目标(1) 了解类、对象、方法的根本概念,方法的参数含义。(2) 参数和变量的作用域,定义和使用静态方法。(3) 方法定义和调用,包括有返回值和无返回值的方法的定义和调用。(4) 了解JAVA根本类库中的一些与原始数据类型密切相关的一些方法。(5) 递归和迭代机制及函数实现。4.2实验说明本章实验教程将初步介绍JAVA类class、对象object和方法method的一些根本概念。以下的实验包括4种类型, 每种类型都用括号里面的字母表示:D - 例程, 表示这是一个例子, 要求练习者阅读指南和代码; I - 交互式练习, 练习者完成实验指定的简单任务,如修改局部代码
2、, 观察程序运行时的变化等; W - 热身练习, 练习者的编程工作量逐渐加大。P - 完整编程 ,要求练习者根据要求,完成完整的JAVA程序。4.3实验准备从本实验教程光盘中拷贝Lab04文件目录到本地磁盘, 如C: 盘。Lab04文件目录中将包含本次实验所需的所有资料。 Lab04的相关资料也可以从本实验教程的网站下载: :/javaLab/lab04.zip4.4实验任务实验4.4.1: (D)初步介绍JAVA类、对象和方法 1. 使用JAVA开发包中的类JAVA程序由类(class)组成,类中包含方法(method)。到目前为止,实验教程中涉及的程序只有一个类一个方法:在应用程序中的ma
3、in方法和在applet中的paint方法。程序中还用到了类的其他方法,这些方法不是我们自己编写的,它们是JAVA开发包中的一局部。例如使用类JOptionPane中的showMessageDialog和showInputDialog方法,无需编写整个代码,而是进行方法调用: JOptionPane.showMessageDialog(null, Hi there!); String name = JoptionPane.showInputDialog(Whats your name?);使用类JOptionPane中的方法,需要在程序的开头加上import语句: import javax.s
4、wing.JOptionPane;使用了import语句,编译器才能在JAVA类库中的javax.swing包中找到类JOptionPane。另外,类Integer的方法parseInt可以将为String表达形式的数字转化成int类型。使用类Interger中的方法不必写一个import语句。java.lang中的所有类包括类Integer都是自动导入到每一个Java程序之中的,程序不必显式地给出导入过程。要使用Java其他库包中的类那么需要显式地给出导入语句。 2. 简单理解一下Java对象和类的关系Java对象Object是计算机存储区中用来存储特定类型数据的一个区域,这些特殊类型的数据
5、是根据类Class来定义的。举个简单例子:程序清单4-1:Student.java/Student.javapublic class Student private int id; / 学生IDprivate String name; / 姓名public Student(int id, String name)this.id = id;this.name = name;public int getID() return id;public void setID(int id) this.id = id;public String getName() return name; public v
6、oid setName(String name) this.name = name;这里定义了一个Student类,它有2个属性、4个实例方法和1个构造方法。根据Student的数据结构,可以创立多个对象。类的对象也被称作是类的实例instance。3. JAVA的两种数据类型体系JAVA有两种数据类型:原始数据类型Primitive Data Type和引用数据类型Reference Data Type。原始数据类型在前面已经做过介绍,它的值就是一个数字、一个字符或一个布尔值。而身为引用数据类型的变量又被称为是对象引用,实际上它的值是指向内存空间的引用就是地址,该地址指向的内存中保存着变量所
7、表示的一个值或一组值。举个例子说明:Student s1, s2; / 在内存中分配两个引用数据类型变量的空间 s1 = new Student; / 分配Student对象的数据空间,并把该空间的首地址0xabcdef赋给s1s2 = s1; / 将s1存储空间中的地址复制到s2的存储空间中如图4.1所示:图4.1 引用数据类型举例 由于变量s1和s2的值相同,即指向同一个内存地址,s1和s2实际上是同一个对象。4. 类的三种方法method Java类有三种方法:构造方法constructor,实例方法instance method和静态方法static method。它们分别有不同的调用
8、方式。 (1) 构造方法constructor构造方法用于创立对象。对象在使用前必须要初始化,即为对象分配数据空间。调用构造方法创立一个Student对象: Student s = new Student(123, he xiang);注意到类的构造方法与类同名,调用构造方法通常使用关键字new。这里,首先为变量s分配一个引用空间;使用new关键字调用类的构造方法为Student类的对象分配数据空间;将数据空间的首地址赋给s。(2) 实例方法instance method对象创立后,就可以让它做一些操作。为此,就要调用实例方法。实例方法定义了一个对象的行为,其调用的格式如下: 对象引用.方法名
9、(参数) objectReference.methodName(parameters)例如,调用Student对象s的getID方法: s.getID(); (3) 静态方法static method类JOptionPane的showMessageDialog和showInputDialog方法以及类Integer的parseInt方法的使用有一个相同点,其调用形式如下: 类名.方法名(参数) ClassName.methodName(parameters)以这种形式调用的方法称为静态方法static method。静态方法定义的行为并不针对某个特定的对象。注意这点与实例方法的不同。另外,静态
10、方法的方法头有关键字static,实例方法和构造方法没有此关键字。实验4.4.2: (D)方法的参数 Applet中的paint方法有如下的方法头定义: public void paint(Graphics g)扩符( ) 中的g是声明为Graphics类型的变量。在方法头的扩符内声明的变量被称为是形式参数。形式参数不需要初始化,因为方法调用时它(们)已经被自动地赋值。在paint方法中,可以假设变量g已经指向了类Graphics的一个对象了。在paint方法里,可以使用已经存在的Graphics对象来画图,比方调用方法drawString和drawLine。 下面的语句对Font类作了如下的
11、实例化: Font ft= new Font(Serif, Font.PLAIN, 56); g.setFont(ft);第一句调用了一个构造方法来创立一个对象,此对象被变量ft引用。在第二句中,我们没有调用Font对象ft的实例方法。而是将ft作为参数传递给setFont方法,此方法为Graphics对象g的一个实例方法。 Java库中,类Graphics方法setFont的方法头定义如下: public abstract void setFont(Font font)这里的形式参数font在setFont方法调用时自动接收实例化的Font对象ft为它的实际值。形式参数接收的实际值被称为实际
12、参数。在上面的例子中,实际参数是ft。类似地,main方法有类型为String(字符串数组)的形式参数: public static void main(String args)实验4.4.3: (D)变量及其作用域1. Java有四种类型的变量:本地变量local variable、实例变量instance variable、类变量class variable和参数parameter。 本地变量在方法中声明;实例变量和类变量在类体中、方法体外声明。实例变量和类变量看起来比拟类似,只是类变量是静态变量,使用static访问修饰符。Java虚拟机JVM在方法或构造方法执行前为参数分配空间,并在消
13、息处理完成后释放空间。下面是Java类中声明变量的一般形式的伪代码pseudocode: class someClass visibility_modifier variable_type instanceVariableName; / Instance Variable visibility_modifier static variable_type classVariableName; / Class Variable returnType someMethod1() variable_type localVariableName; / Local Variable returnType
14、someMethod2(Type parameterName) / Parameter instanceVariableName和classVariableName 在someClass类体中声明,其中instanceVariableName是实例变量,classVariableName是类变量;localVariableName在someMethod方法中声明,是本地变量。parameterName是方法someMehod2的形式参数简称“形参。2. 变量是数据的标识。上面的伪代码中变量名分别是:instanceVariableName, classVariableName, localVa
15、riableName和parameterName。变量名必须是合法的标识符,具体的要求如下:(1) 不能使用保存字;(2) 是字母、数字、美元符号“$或下划线“_的序列;(3) 不能以数字开头,必须以字母、美元符号“$或下划线“_开头;(4) 区分大小写,比方myName和MyName是不同的标识符。合法的变量名如:x、value-1、$amount等;非法的变量名如:2brother、room#、class(保存字)等。就象给家里的每个孩子取不同名字,变量名应具有一定的含义,以增加程序的可读性。3. 变量的声明声明变量将在存储器中分配一定的空间,用于存储相应类型的数据,稍后可以使用变量名访问
16、存储在该空间的数据。注意,变量声明仅仅为变量分配内存空间,并没有实际地存储数据。Java语言是一种强类型语言,即声明时必须指定变量的数据类型,编译器为其分配相应的存储空间。有强类型语言,就有弱类型语言,比方VB、JAVASCRIPT编程语言,弱类型不一定需要指定数据类型,编译器会用相同的空间去分配各种类型。变量的声明格式为: type identifier =value ,identifier=value;以下是有效的变量声明:int id;String name;4. 变量的作用域Java中具体有以下四种类型的作用域:成员变量作用域、本地变量作用域、参数作用域以及异常处理参数作用域。图4.2
17、 Java变量作用域如图4.2所示,成员变量包括类变量和实例变量。它们在类中定义,而不是在任何方法或者构造方法中定义。成员变量的作用域是整个类体。本地变量的作用域从该变量声明开始到定义此变量的代码块结束为止。参数是指方法或构造方法的形式参数,用于传递数值给方法或构造方法。参数的作用域是整个方法或构造方法。异常处理参数跟参数相似,差异在于前者是传递参数给异常处理,而后者是传递给方法或构造方法。异常处理参数的作用域处在catch 和之间。见下面的代码:if (.) int i = 17;.System.out.println(The value of i = + i); / 错误代码最后一行无法汇
18、编,因为if块中定义的本地变量i已经超出作用域。改正的方法是,将变量声明移到if语句块的外面,或者将println语句移动到if语句块中。5. 变量的的生命周期 不同变量有不同作用域,作用域定义了变量在程序内存中的生命周期。变量一旦离开其作用域,它所占的内存空间就会被Java虚拟机JVM标注为可垃圾回收,变量就无法被引用了。 本地变量必须在方法中声明。这当然也包括方法中嵌入的代码块,如if、while或for代码块。变量在它所声明的代码块中是本地的。例如,方法体中声明的变量在此方法中是本地变量,在if块中声明的变量在此if块中是本地变量。这意味着在花括号中声明的变量在花括号外不能使用。 实例变
19、量是对象的组成局部,每个对象的实例都有属于自己的实例变量。例如,Order类中声明了一个名为orderDate的实例变量,那么Order类的每个对象都有自己的orderDate,可以为自己的orderDate设定不同的值。实例变量不能离开对象独立存在,因此,实例变量与包含它的对象的生命周期相同。类变量的生存周期是从该类被JVM加载开始到释放该类结束。当类第一次被引用时通常情况是用new实例化类的第一个对象,类被加载到JVM。类变量类似与全局变量,它的生存周期在变量中是最长的。类变量被该类的所有对象共享,所以如果有十个Order对象,那么类变量todayDate的值被十个对象共享,事实上,所有O
20、rder对象访问的是同一个todayDate。6. 编译、运行VariableScope.java程序,仔细阅读代码中的注释,理解Java各种变量的使用。程序清单4-2:VariableScope.java/VariableScope.javapublic class VariableScope/ classVariableName类变量的作用域是整个类体static public String classVariableName = 类变量; / instanceVariableName实例变量的作用域是整个类体private int instanceVariableName = 0; /
21、参数intParameter 的作用域是整个oneMethod方法体public void oneMethod(int intParameter) / 局部变量temp的作用域都是整个oneMethod方法体int temp=5;if(intParameter temp)/ 在不同作用域声明同名变量,在JAVA中是不允许的,下边的语句会报错/ int temp = 1; System.out.println(方法内部可以访问局部变量,局部变量temp = + temp);instanceVariableName = instanceVariableName + intParameter;pub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java_ 快速 入门 练习
限制150内