欢迎访问我的个人网站:http://www.qingshuimonk.com/
1. 方法的语句结构:
修饰符 返回值类型 方法名 (参数列表){
//方法体;
}
1) 修饰符,返回值类型,方法名和参数构成方法头,其中修饰符可选。
2) 对于有返回值的方法,返回值类型就是要返回的值得数据类型,无返回值方法返回值关键字为void。
3) 参数列表,实参,形参等概念同C相同。
4) PS:在其他一些语言中,方法称为过程或者函数。返回值非空的方法称为函数,返回值为空的方法称为过程。
5) 在方法中可使用”return”来控制流程。
2. 调用方法:两种办法
Eg: 1) int larger = max(3 , 4);
2) System.out.println(max(3 , 4));
3. 调用堆栈,参数传递等内容同C。
4. 重载:在JAVA中,两个方法可以具有相同的名称但是具有不同的参数列表。JAVA编译器能根据方法头标志决定调用哪个方法。
a) 在调用方法时,JAVA编译器自动寻找最合适的匹配方法。
b) 被重载的方法必须具有不同的参数列表,不能基于不同的修饰符或返回值类型重载方法。
c) 若一个方法调用会有两个或更多可能的匹配,编译器无法判断哪个更合适,则出现歧义调用。歧义调用是编译错误。
5. 局部变量的作用域:局部变量的作用域是从该变量的说明开始到包含该变量的体结束为止,局部变量必须先声明后使用。
a) 形参实际上是一个局部变量。一个方法中形参的作用域覆盖整个方法。
b) 当局部变量和全局变量同名时,在局部变量作用范围内,全局变量失效。
6. 方法抽象:方法抽象是把方法的应用同实现分离开来。在不知道方法如何实现的情况下,用户也可以使用方法。方法的实现封装在方法体内,对使用该方法的用户来说是看不见的。这就称为信息的隐藏或封装。
7. 递归:函数直接或者间接调用自己的过程。将方法分为子问题,子问题又分为子问题(产生递归),要使递归方法终止,问题必须达到一种终止条件(流程控制)。当终止条件达到时,方法将结果返回给调用者(调用完成)。
8. 包:包用于对类进行组织。使用包有四个理由:
a) 查找定位类:功能相似的类可以放在同一个包中以便查找定位。
b) 避免命名冲突:当开发的可重用类被其他程序员共享时,命名冲突时有发生。为了防止类似的情况发生,可将类放入包中,通过类名来引用。
c) 便于发布软件:包将相关的类组织到一起,这样可以很容易被分发。
d) 保护类:包可以提供对类的保护,允许同一个包中的类访问类中被保护的成员,而外部类则无此权限。
9. 包的命名习惯:包是有层次关系的,包中还可以有包,eg:java.lang.Math表示Math是lang中的一个包,而lang是java的一个包。包嵌套的层次可以用来保证包名的唯一性。
10. Java语言简易以设计者的internet域名的倒叙作为包的前缀。由于internet的域名是唯一的,所以这样避免了命名冲突。
a) 一个包实际上是包含类的字节码的目录。
b) Java中每个类都属于一个包,类在编译时添加到包中。要把一个类放在指定包中,只需在程序最前端(前面只能有注释和空格)加上下列语句:
pakege packgename;
c) 使用包中的类:1.使用类的全称,2.import语句:import javax.swing.*;(使用*的导入称为按需导入,也可导入包中指定的类)。除非导入包中的类在程序中使用,否则该类的信息在编译和运行时并不被读取。
11. 汉诺塔程序:
import javax.swing.JOptionPane;
public class Hanoi {
/**Main method*/
public static void main(String[] args){
//read number of disks,n
String intString = JOptionPane.showInputDialog(
"Enter number of disks:");
//convert string into integer
int disk = Integer.parseInt(intString);
//find the solution recursively
System.out.println("The moves are:");
moveDisks(disk, 'A', 'B', 'C');
}
/**The method for finding the solution to move n disks from
fromTower to toTower with auxTower*/
public static void moveDisks(int n, char fromTower, char toTower, char auxTower){
if (n == 1)//Stopping condition
System.out.println("Move disk " + n + " from " + fromTower + " to " + toTower);
else{
moveDisks(n-1, fromTower, auxTower, toTower);
System.out.println("Move disk " + n + " from " + fromTower + " to " + toTower);
moveDisks(n - 1, auxTower,toTower,fromTower);
}
}
}