增加方法 ■程序5-2Date类中增加 daysInmontho和 printDate(O 方法 因选定命令提示符 D:\java\program\chapter5\prog5-2>javac Date.java D: \java\program\chapter5\prog5-2>java Date The current date is (dd/mr :1/1/1998 Its tomorrow is (dd mm yy):2/1/1998 The current date is <dd mm yy): 28/2/1964 Its tomorrow is (dd m/yy):29/2/1964 D: \ java\program 'chapter5\prog5-2>
增加方法 ▪ 程序5-2 Date类中增加daysInMonth()和printDate() 方法
按值传送 ■“按值”传送自变量,即方法调用不会改 变自变量的值 当对象实例作为自变量传送给方法时,自 变量的值是对对象的引用,也就是说,传 送给方法的是引用值。在方法内,这个引 用值是不会被改变的,但可以修改该引用 指向的对象内容。因此,当从方法中退出 时,所修改的对象内容可以保留下来
按值传送 ▪ “按值”传送自变量,即方法调用不会改 变自变量的值 ▪ 当对象实例作为自变量传送给方法时,自 变量的值是对对象的引用,也就是说,传 送给方法的是引用值。在方法内,这个引 用值是不会被改变的,但可以修改该引用 指向的对象内容。因此,当从方法中退出 时,所修改的对象内容可以保留下来
传值实例 程序5-3创建p对象,方法内局部变量val赋初值1l 调用方法 changeInto0后,val的值没有改变。字符 串变量str作为 changeStrl的参数传入方法内,当从 方法中退出后,其内容也没有变化。当对象nt作 命令提示符 为地因 回型的 D: \java \programchapter5>javac PassTest java D: \java \program\chapter5>java PassTest Int value is: 1 Str value is: he llo current ptvalue is:990
传值实例 ▪ 程序5-3 创建pt对象,方法内局部变量val赋初值11。 调用方法changeInt()后,val的值没有改变。字符 串变量str作为changeStr的参数传入方法内,当从 方法中退出后,其内容也没有变化。当对象pt作 为参数传给changeObjValue()后,该引用所保存的 地址不改变,而该地址内保存的内容可以变化, 因此退出方法后,pt对象中的ptValue改变为99f
重载方法名 如果需要在同现在假定需要打印m、0a和 们对不同的变量smig类型的值 重载方法名 public void print(int 一个方法区别于 public void print( float f) public void print( String s) 参数列表及返回 法并调用,包括参岁数及类型 方法的重载允许Ja在同一个类中可以定 义相同的方法名,但需要具有不同的参数 表。不只如此,在不同的类中也可以定义 相同的方法名
重载方法名 ▪ 如果需要在同一个类中写多个方法,让它 们对不同的变量进行同样的操作,就需要 重载方法名 ▪ 一个方法区别于另一个方法的要素:方法名、 参数列表及返回值。根据参数来查找适当的方 法并调用,包括参数的个数及类型 ▪ 方法的重载允许Java 在同一个类中可以定 义相同的方法名,但需要具有不同的参数 表。不只如此,在不同的类中也可以定义 相同的方法名 现在假定需要打印int、float和 String类型的值。 public void print(int i) public void print(float f) public void print(String s)
重载方法两条规则 调用语句的自变量列表必须足够判明要调 用的是哪个方法 自变量的类型可能要进行正常的扩展提升(如 浮点变为双精度),但在有些情况下这会引起 混淆 方法的返回类型可能不同 如果两个同名方法只有返回类型不同,而自变 量列表完全相同则是不够的,因为在方法执行 前不知道能得到什么类型的返回值,因此也就 不能确定要调用的是哪个方法。重载方法的参 数表必须不同,即参数个数或参数类型不同
重载方法两条规则 ▪ 调用语句的自变量列表必须足够判明要调 用的是哪个方法 ▪ 自变量的类型可能要进行正常的扩展提升(如 浮点变为双精度),但在有些情况下这会引起 混淆 ▪ 方法的返回类型可能不同 ▪ 如果两个同名方法只有返回类型不同,而自变 量列表完全相同则是不够的,因为在方法执行 前不知道能得到什么类型的返回值,因此也就 不能确定要调用的是哪个方法。重载方法的参 数表必须不同,即参数个数或参数类型不同