第七章
使用方法
学习目标,
? 方法的声明
? 方法调用
? 方法的参数传递和返回值
? 方法的重载
方法使用概述
? 到目前为止所示的程序都是 main内的操作
? 使用方法,可以用适当的方法来执行操作。
使用方法的优点
? 要求对象做某一事情
? 精确地定义对象可以做什么
? 获取和设置值
? 使程序的可读性更好而且更易维护
? 使开发和维护更快捷
? 可重复使用软件
方法有两种:一种是 标准方法, Java API提
供了丰富的类和方法,这些方法提供了程序员所需
的许多功能。另一种是 用户自定义的方法,以解决
用户专门需要。
Java应用程序中,程序的执行从 main方法开
始,调用其他方法后又回到 main方法,在 main方法
中结束整个程序的运行。
操作方法和调用方法
? public class AllInMain
{
public static void main(String args[])
{
int int1=42;
int int2=24;
System.out.println(int1+int2);
}
}
? 这种方法是简洁的,但是它,
?在较大的应用程序中是不现实的
?没有使用面向对象的思想
?还有其它缺点
操作方法和调用方法
? 调用方法 让对象用它的一个方法来为你做某件事情。
?调用方法除调用 操作方法 外,通常还有普通的方法操作
? 对象的 调用方法 可以为您,
?获得输入信息
?返回一条信息
查看结果,BoxDemo3.java
调用方法与操作方法的独立存在,
声明方法
? 操作方法和调用方法具有相同的语法结构
? 在所有示例中并不包含全部可能的方法
查看结果,BoxDemo4.java
调用方法
? 特别是从不同的方法中调用方法
? 调用方法暂停,操作方法接着执行
? 调用方法从它调用操作方法的调用点后继续执行
? 调用方法和操作方法可以在 同一个类中 或在 不同的类 中
? 可以按任何顺序调用方法
传递参数
? 将参数放在调用方法的括号内
? 传递字面值或变量
? 按方法声明中的顺序列出参数
查看结果,BoxDemo5.java
参数传递
—基本数据类型的参数传递
查看结果,PassParam.java
参数传递
—引用数据类型的参数传递
查看结果,PassObject1.java
查看结果,CallByValue.java
查看结果,PassObject2.java
接收返回值
? 返回值返回到代码中调用它时所在的位置
mathRef.add(2,4);
? 调用了方法的表达式等于返回值
? 使用返回值时,可以将调用和返回值的使用
在同一行内完成
int addedNumbers=mathRef.add(2,4);
方法体中如果指定了 非 void的返回值类型,方法中
就必须包含一条 return语句保证任何情况下都有返
回值,return语句之后不能跟任何表达式;
查看结果,BoxDemo4.java
对象方法和 Static(静态)方法
? 对象方法需要创建一个对象
? 静态方法的运行可以没有对象
? 这些方法与类相关,但又不对与某一特定
对象关联的变量进行操作
static方法是属于整个类的,而不是属于某个
实例(具体的对象)。
而对象方法属于每个实例,只能在类的实例和
子类的实例中调用。
static静态变量
? 当我们编写一个类时,其实就是在描述其对象的属性和行为,而
并没有产生实质上的对象,只有通过 new关键字才会产生出对象,
这时系统才会分配内存空间给对象,其方法才可以供外部调用。
? 我们有时候希望无论是否产生了对象或无论产生了多少对象的情
况下,某些特定的数据在内存空间里只有一份,例如所有的中国
人都有个国家名称,每一个中国人都共享这个国家名称,不必在
每一个中国人的实例对象中都单独分配一个用于代表国家名称的
变量。
查看结果,TestChinese.java
static静态方法
? 在静态方法里只能直接调用同类中其它的静态成员(包
括变量和方法),而不能直接访问类中的非静态成员 。
这是因为,对于非静态的方法和变量,需要先创建类的
实例对象后才可使用,而静态方法在使用前不用创建任
何对象。
? main() 方法是静态的,因此 JVM在执行 main方法时不创
建 main方法所在的类的实例对象,因而在 main()方法中,
我们不能直接访问该类中的非静态成员,必须创建该类
的一个实例对象后,才能通过这个对象去访问类中的非
静态成员。
理解 main方法的语法
由于 java虚拟机需要调用类的 main()方法,所以该方
法的访问权限必须是 public,又因为 java虚拟机在
执行 main()方法时不必创建对象,所以该方法必须
是 static的,该方法接收一个 String类型的数组参数,
该数组中保存执行时传递给所运行的类的参数。
对象方法
Static静态方法的调用方式,类名,方法名
如:方法 Math.random()和 Integer.parseInt()是直接用类名
进行访问。
static 方法
何时声明静态方法
? 在下列情况下将方法定义为静态的,
?在哪一个对象上执行操作并不是很重要
?方法的操作必须在实例化对象之前运行
?方法履行的职责在逻辑上不属于一个对象
方法重载
? 有些方法执行同样的任务但具有不同的参数
? 如果方法的方法签名唯一,则可以取相同的名称
? 特点,
– 同一个类中
– 同一名字
– 不同数目的参数
– 不同类型的参数
举例,
要打印不同类型的数据,int,float,String
不需要定义不同名的方法,
printInt(int);
printFloat(float);
printString(String)
利用方法重载,只需要定义 一个方法名
查看结果,MethodOverloadingTest.java
查看结果,OverLoad.java
查看结果,OverLoad2.java
周五上机实验任务
? 填写实验报告 4-1,5-1,5-2,5-3
使用方法
学习目标,
? 方法的声明
? 方法调用
? 方法的参数传递和返回值
? 方法的重载
方法使用概述
? 到目前为止所示的程序都是 main内的操作
? 使用方法,可以用适当的方法来执行操作。
使用方法的优点
? 要求对象做某一事情
? 精确地定义对象可以做什么
? 获取和设置值
? 使程序的可读性更好而且更易维护
? 使开发和维护更快捷
? 可重复使用软件
方法有两种:一种是 标准方法, Java API提
供了丰富的类和方法,这些方法提供了程序员所需
的许多功能。另一种是 用户自定义的方法,以解决
用户专门需要。
Java应用程序中,程序的执行从 main方法开
始,调用其他方法后又回到 main方法,在 main方法
中结束整个程序的运行。
操作方法和调用方法
? public class AllInMain
{
public static void main(String args[])
{
int int1=42;
int int2=24;
System.out.println(int1+int2);
}
}
? 这种方法是简洁的,但是它,
?在较大的应用程序中是不现实的
?没有使用面向对象的思想
?还有其它缺点
操作方法和调用方法
? 调用方法 让对象用它的一个方法来为你做某件事情。
?调用方法除调用 操作方法 外,通常还有普通的方法操作
? 对象的 调用方法 可以为您,
?获得输入信息
?返回一条信息
查看结果,BoxDemo3.java
调用方法与操作方法的独立存在,
声明方法
? 操作方法和调用方法具有相同的语法结构
? 在所有示例中并不包含全部可能的方法
查看结果,BoxDemo4.java
调用方法
? 特别是从不同的方法中调用方法
? 调用方法暂停,操作方法接着执行
? 调用方法从它调用操作方法的调用点后继续执行
? 调用方法和操作方法可以在 同一个类中 或在 不同的类 中
? 可以按任何顺序调用方法
传递参数
? 将参数放在调用方法的括号内
? 传递字面值或变量
? 按方法声明中的顺序列出参数
查看结果,BoxDemo5.java
参数传递
—基本数据类型的参数传递
查看结果,PassParam.java
参数传递
—引用数据类型的参数传递
查看结果,PassObject1.java
查看结果,CallByValue.java
查看结果,PassObject2.java
接收返回值
? 返回值返回到代码中调用它时所在的位置
mathRef.add(2,4);
? 调用了方法的表达式等于返回值
? 使用返回值时,可以将调用和返回值的使用
在同一行内完成
int addedNumbers=mathRef.add(2,4);
方法体中如果指定了 非 void的返回值类型,方法中
就必须包含一条 return语句保证任何情况下都有返
回值,return语句之后不能跟任何表达式;
查看结果,BoxDemo4.java
对象方法和 Static(静态)方法
? 对象方法需要创建一个对象
? 静态方法的运行可以没有对象
? 这些方法与类相关,但又不对与某一特定
对象关联的变量进行操作
static方法是属于整个类的,而不是属于某个
实例(具体的对象)。
而对象方法属于每个实例,只能在类的实例和
子类的实例中调用。
static静态变量
? 当我们编写一个类时,其实就是在描述其对象的属性和行为,而
并没有产生实质上的对象,只有通过 new关键字才会产生出对象,
这时系统才会分配内存空间给对象,其方法才可以供外部调用。
? 我们有时候希望无论是否产生了对象或无论产生了多少对象的情
况下,某些特定的数据在内存空间里只有一份,例如所有的中国
人都有个国家名称,每一个中国人都共享这个国家名称,不必在
每一个中国人的实例对象中都单独分配一个用于代表国家名称的
变量。
查看结果,TestChinese.java
static静态方法
? 在静态方法里只能直接调用同类中其它的静态成员(包
括变量和方法),而不能直接访问类中的非静态成员 。
这是因为,对于非静态的方法和变量,需要先创建类的
实例对象后才可使用,而静态方法在使用前不用创建任
何对象。
? main() 方法是静态的,因此 JVM在执行 main方法时不创
建 main方法所在的类的实例对象,因而在 main()方法中,
我们不能直接访问该类中的非静态成员,必须创建该类
的一个实例对象后,才能通过这个对象去访问类中的非
静态成员。
理解 main方法的语法
由于 java虚拟机需要调用类的 main()方法,所以该方
法的访问权限必须是 public,又因为 java虚拟机在
执行 main()方法时不必创建对象,所以该方法必须
是 static的,该方法接收一个 String类型的数组参数,
该数组中保存执行时传递给所运行的类的参数。
对象方法
Static静态方法的调用方式,类名,方法名
如:方法 Math.random()和 Integer.parseInt()是直接用类名
进行访问。
static 方法
何时声明静态方法
? 在下列情况下将方法定义为静态的,
?在哪一个对象上执行操作并不是很重要
?方法的操作必须在实例化对象之前运行
?方法履行的职责在逻辑上不属于一个对象
方法重载
? 有些方法执行同样的任务但具有不同的参数
? 如果方法的方法签名唯一,则可以取相同的名称
? 特点,
– 同一个类中
– 同一名字
– 不同数目的参数
– 不同类型的参数
举例,
要打印不同类型的数据,int,float,String
不需要定义不同名的方法,
printInt(int);
printFloat(float);
printString(String)
利用方法重载,只需要定义 一个方法名
查看结果,MethodOverloadingTest.java
查看结果,OverLoad.java
查看结果,OverLoad2.java
周五上机实验任务
? 填写实验报告 4-1,5-1,5-2,5-3