第5章 方法

1、方法是为执行一个操作而组合在一起的语句组。

2、一般地,方法有下列语法结构:

修饰符 返回值类型 方法名(参数列表){
//方法体;
}

3、方法头是指方法的修饰符、返回值类型、方法名和参数。修饰符是可选的,它告诉编译器如何调用该方法。

4.在其他一些语言中,方法称为过程或函数。返回值非空的方法称为函数(function),返回值类型为void的方法称为过程(procedure)。

5.应该对每一个参数进行独立的数据类型说明。例如,int num1,num2应换为int num1,int num2。

6.有两种途径调用方法,这要根据方法是否有返回值来作出选择:

  • 如果方法返回一个值,对方法的调用通常就当作处理一个值。
  • 如果方法返回void,对方法的调用必须是一条语句。

7.每当调用一个方法时,系统将参数、局部变量存储在一个内存区域中,这个内存区域称为堆栈(stack),它用后进先出的方式存储数据。当一个方法调用另一个方法时,调用者的堆栈空间保持不动, 新开辟的空间处理新方法的调用。一个方法结束返回到调用者时,其相应的空间也被释放。

8.调用方法时,需要提供实参,它们必须与方法说明中所对应的形参次序相同,这叫做参数顺序匹配(parameter order association)。
实参必须与方法签名中的形参在次序上和数量上匹配,在类型上兼容。类型兼容是指不需要经过显式的类型转换,实参的值就可以传递给形参。

9.重载方法可使程序清晰易读。执行相似任务的方法应该给予相同的名称。
被重载的方法必须具有不同的参数列表。不能基于不同的修饰符或返回值类型重载方法。
有时一个方法调用会有两个或更多可能的匹配,编译器无法判断哪个更为合适。这称为歧义调用(ambiguous invocation)。

10.局部变量的作用域从该变量的说明开始到包含该变量的块结束为止,局部变量必须先声明后使用。形式参数实际上是一个局部变量。一个方法中形参的作用域覆盖整个方法。

11.介绍Math类中其他有用的方法。这些方法分为三角函数方法(trigonometric method)、指数函数方法(exponent method)和服务性方法(service method)。除了方法,Math类还提供两个有用的double常量PI和E(自然对数的底),可以在任何程序中使用这两个常量Math.PI和Math.E。

12.从JDK 1.2之后,Math类还提供了将角度转化成弧度的toRadians(double angdeg)方法和将弧度转换成角度的toDegrees (double angrad)方法。

13.五个与指数函数相关的方法:

/** 返回e的x次方(ex)*/
public static double exp(double x)

/** 返回x的自然对数(ln(x)=loge (x))*/
public static double log(double x)

/** 返回x的底为1 0的对数(log10(x))*/
public static double log10(double x)

/** 返回x的b次方(xb)*/
public static double p o w(double x,double b)

/** 返回x的平方根()*/
public static double sqrt(double x)

注意,sqrt方法中的参数不能为负。

14.取整方法

/**以double值返回向上与x最接近的整数*/
public static double ceil(double x)

/**以double值返回向下与x最接近的整数*/
public static double floor(double x)

/**以double值返回与x最接近的整数,如果x到两个整数的距离相等,返回其中的偶数*/
public static double rint(double x)

/**返回(int)Math.floor(x+0.5) */
public static int round(float x)

/**返回(long)Math.floor(x+0.5) */
public static long round(double x)

15.max、min、abs(返回绝对值)方法

16.Math类中还有一个强大的random方法,它生成大于等于0.0小于1.0的double型随机数(0.0<=Math.random()<1.0)。

17.并不是所有的类都需要main方法,Math类和JOptionPane类就没有main方法。这些类所包含的方法主要是为了供其他类调用。

18.开发软件的关键在于应用抽象的概念。

19.方法抽象(method abstraction)是把方法的应用同实现分离开来。
方法抽象的概念可以应用于程序的开发过程。编写大程序时,要用“分治”(divide and conquer)法将大问题分解成子问题,子问题又分解成更小、更容易处理的问题,这种做法又称为逐步求精(stepwise refinement)。

20.自顶向下的设计

21.实现程序时可以采用“自顶向下”或“自底向上”的办法。
“自顶向下”方法是自上而下每次实现结构图中的一个方法。把未实现的方法用待完善方法(stub method)代替,待完善方法是一个简单的、方法实现不完全的版本。使用待完善方法可以测试调用者的方法调用。首先实现方法main,然后将printMonth方法写成待完善方法。
“自底向上”方法是从下向上每次实现结构图中的一个方法。对每个实现了的方法都写一个测试程序进行检验。自顶向下和自底向上都是不错的方法,它们都逐步实现方法,有助于分离程序错误,使调试变得容易。有时它们可以一起使用。

22.方法抽象有助于把程序分解为整齐、层次明显的模块。将程序写成由简洁的方法构成的集合,比其他方式更容易编写、调试、维护和修改。这样的编写风格也会提高方法的可重用性。

23.编写大程序时,使用自顶向下或自底向上的编码方式,不要一次编写整个程序。这种方式好像是浪费了更多的编码时间(因为要反复编译和运行程序),但实际会节省时间并使调试更容易。

24.使用包有四个理由:

  • 查找定位类。功能相似的类可以放在同一个包中以便查找定位。
  • 避免命名冲突。当开发的可重用类被其他程序员共享时,命名冲突时有发生,例如,有相同名字的两个类。为了防止类似事件发生,可将类放入包中,通过包名来引用。
  • 便于发布软件。包将相关的类组织到一起,这样可以很容易被发布。
  • 保护类。包可以提供对类的保护,允许对同一个包中的类访问这些类中被保护的成员,而外部类则无此权限。

25.包是有层次关系的,包中还可以有包。
Java要求包名与文件系统的目录结构一一对应。
包实际上是包含类的字节码的目录。

26.使用的导入称为按需导入(an import on demand)声明。
在import语句中只允许使用一个星号(
)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值