访问修饰符:方法允许被访问的权限范围
返回类型 void–表示无返回值
方法名:一个单词组成的小写即可,多个单词组成的第一个单词小写,第二个单词的首字母大写
参数列表可以省略
无参无返回值方法
== 方法在类的内部定义==
无参带返回值方法
导包快捷键:Ctrl+shift+O
public class Rancle {
public int area() {
int length=10;
int width=4;
int getArea=length*width;
return getArea;
}
public static void main(String[] args) {
Rancle rc=new Rancle();
int getArea=rc.area();
System.out.println(getArea);
}
}
带参无返回值方法
带参有返回值方法
方法不能嵌套定义;
import java.util.Scanner;
public class DisCountDemo {
public double count(float a) {
double price;
if(a<100) {
price=a;
}
else if(a<199) {
price=a*0.95;
}else {price=a*0.85;
}
return price;
}
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int costPrice=s.nextInt();
DisCountDemo count=new DisCountDemo();
double newPrice=count.count(costPrice);
System.out.println("折后商品总价为:"+newPrice);
}
}
关于main方法的参数
主方法main就是以数组作为方法参数的,又叫做命令行参数。命令行参数可以在执行Java程序的时候接收字符串类型的数据,下面来看一下命令行参数在命令行提示符(或终端)和Eclipse中的应用。
为什么要使用命令行?
已知如下的Java程序,args[0]和args[1]中分别接收执行程序时传入的两个数据。因为是字符串类型,所以要使用Integer.parseInt()方法转换为整型,然后再进行加法运算,最后输出结果。
1、首先看一下程序在终端的使用,从下图可以看到,使用java命令执行程序的时候加入了两个数据1和2,用空格隔开。这样会把第一个数据1存储到args[0]中,把第二个数据2存储到args[1]中,如果还有第三个数据,还会存储到args[2]中,以此类推。当然如果只有一个数据也可以,那么就是存储到args[0]中
这里注意一个问题,如果程序中需要接收两个命令行参数,而传入的数据有三个或更多,没有问题。如果执行程序时只有一个数据,就会报数组下标越界的错误,如下所示:
2、再来看一下如何在Eclipse中运行程序时使用命令行参数
在代码编辑区点击鼠标右键,然后选择Run As——Run Configurations…
在如下的窗口中,要确认选中的类是要运行的类,如果不是,点击右侧的Search…按钮进行搜索,然后添加
然后切换到Arguments选项卡,在Program arguments中输入1和2两个数据,两个数据之间用换行,然后点击Run就可以运行了
方法重载
定义:方法名相同,参数列表不同
以下两个图片中不是方法重载,以下两个方法方法名相同,参数列表也相同,不是合法的重载
圆周率:Math.PI
Java方法重载总结
一、方法重载的规则
方法名相同,参数列表不同。
参数列表不同包括,参数的个数和类型不同。如果只有参数名不同,不能算作方法重载。
如下三个方法是重载方法,它们的参数列表都是不同的。
public void display(){}
public void display(int n){}
public void display(float n){}
如下两个方法不是重载方法,两个方法只是参数名不同,不满足方法重载条件。
public void display(int n){}
public void display(int d){}
二、方法重载的应用场景
当我们实现某一个功能,比如计算两个数的加法,而此时的数据可能是int、long类型,也有可能是float和double类型,如果我们定义四个方法分别计算这四种数据类型数据的和,方法名就要有四个。如果使用方法重载,只需要一个方法名就可以了,这样使用起来也更加方便。
像我们常用的println()方法,就包括多个重载的方法,用于输出不同数据类型的数据。所以,遇到方法功能相同,只是参数类型和参数个数不同的情况,就可以使用方法的重载
参数传递问题
可变参数列表
参数列表中如果有两个以上的参数,可变参数一定是在最后的
可以将数组传递给可变参数列表
数组作为参数时,是不能将多个值传递给数组的
一个方法中只能有一个可变参数
可变参数列表所在的方法是最后被访问的
可变参数列表与数组作为参数的区别
1、可变参数列表作为参数,方法调用时可以传入0个或多个参数,传入数组也可以。数组作为方法参数,方法调用时只能传入数组。
2、可变参数列表作为方法参数时,如果有多个参数,可变参数列表只能放到最后一个位置,而且不能有多个可变参数列表作为方法参数。而数组没有这个限制。
关于可变参数作为方法参数,下面的方法定义形式都是错误的:
public void method(int… m,int… n) {}//不能有多个可变参数作为方法参数
public void method(int… m,int n) {}//可变参数应该放到参数列表的最后
3、可变参数的底层实现就是数组。
4、当传入方法的参数数量不确定的时候,可以考虑使用可变参数列表。
文档注释
/**
*/
可以通过javadoc生成文档注释
关于javadoc命令的教辅文件
1、假设 ArgsDemo3.java 文件存储在 E:\imooc 目录下,代码如下:
/**
* 关于可变参数列表和重载的问题
* @author imooc
* @version 1.0
*
*/
public class ArgsDemo3 {
//可变参数列表所在的方法是最后被访问的。
/*
public int plus(int a,int b){
System.out.println("不带可变参数的方法被调用!");
return a+b;
}*/
public int plus(int... a){
int sum=0;
for(int n:a){
sum=sum+n;
}
System.out.println("带可变参数的方法被调用!");
return sum;
}
public static void main(String[] args) {
ArgsDemo3 ad=new ArgsDemo3();
System.out.println("和为:"+ad.plus(1,2));
}
}
2、打开命令行,转到E:\imooc目录下,输入命令:javadoc –d doc ArgsDemo3.java,
会生成很多内容,如下图所示:
3、打开文件夹E:\imooc,会看到如下的目录
打开doc目录,会看到下面的内容:
打开index.html文件,会看到生成的文档内容了!
方法调试
方法的调试:按F5键可以调到方法内部执行
F7 由方法内部返回调用处