什么是方法?
- 可以把方法理解为C语言的函数,为了完成某个功能而编写的代码块,这个代码块可以被调用。
- 方法的命名规则是:首字母小写+驼峰原则
下面是java定义的方法:
同理:
下面是关于方法的一个例子:
package MethodDemo;
public class Demo01 {
public static void main(String[] args) {
int sum=add(3,5);
System.out.println(sum);
}
public static int add(int a,int b){
return a+b;
}
}
package MethodDemo;
public class Demo01 {
public static void main(String[] args) {
Demo01 demo=new Demo01();
int sum=demo.add(3,5);
System.out.println(sum);
}
public int add(int a,int b){
return a+b;
}
}
下面是两个程序的对比图:
对比一下两个程序的区别我们发现一些事情:
- 有没有修饰符“static”。在“04java基础知识”一文中,我们知道变量有三种:类变量、实例变量和局部变量。类变量是写在类里面main方法外面的,加上修饰符“static”的变量,它的特点是可以直接在方法里面使用,类似于“全局变量”。而不加修饰符“static”的变量(写在类里面main方法外面的)叫做实例变量,要想在方法里面使用,必须先new一个类,然后通过类来调用这个实例变量。那么对于这里的方法也是同理,不加修饰符“static”的方法,我给他取个名字叫“实例方法”(虽然我不知道有没有这个名字,姑且先这样叫吧),那么在main方法里面使用这个“实例方法”就要先new一个类,然后通过这个类来调用这个是“实例方法”,如右边的程序。而对于左边的程序,使用了修饰符“static”,那它就是一个“类方法”,可以在main方法中使用类名直接调用。
- 修饰符“public”表示这个方法是公共的
- main方法的返回值类型是void,而add方法的返回值类型是int。main方法是主方法,运行完结束(至少目前对我来说是这样的),不需要返回值。但是add方法是计算两数之和,需要返回一个int型的数,所以返回值类型指定为int。
- 实参和形参。
- 方法的练习实例
package MethodDemo;
import java.util.Scanner;
public interface Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);//创建扫描器对象
System.out.println("Please input the first figure:");
double a= scanner.nextDouble();//创建一个接受对象
System.out.println("Please input the second figure:");
double b= scanner.nextDouble();
double c=compile(a,b);
if(c>0){
System.out.println(a+">"+b);
}if(c<0){
System.out.println(a+"<"+b);
}else{
System.out.println(a+"="+b);
}
scanner.close();
}
public static double compile(double a,double b){
return a-b;
}
}
虽然上面的代码可以正常实现的数值比较,但是很多冗余代码放在了main方法中,并没有完全体现方法的优势,下面重新写一个版本。
package MethodDemo;
import java.util.Scanner;
public interface Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);//创建扫描器对象
System.out.println("Please input the first figure:");
double a = scanner.nextDouble();//创建一个接受对象
System.out.println("Please input the second figure:");
double b = scanner.nextDouble();
compile(a, b);
scanner.close();
}
public static void compile(double a, double b) {
if (a - b > 0) {
System.out.println(a + ">" + b);
} else if (a - b < 0) {
System.out.println(a + "<" + b);
} else {
System.out.println(a + "=" + b);
}
// return 0;//不需要return
}
}