何为方法
Java中的方法与c语言中的函数类似
在System.out.println();中
System是一个类,out是对象,println()是方法
- 方法是语句的集合,他们在一起可以执行一个功能
- 方法包含于类与对象之中
- 方法在程序中被创建,在其他地方被引用
- 方法的命名,驼峰规则
方法的定义与使用
方法的定义
格式:
修饰符 返回值类型 方法名(参数类型 参数名){
…
方法体
…
return 返回值;
}
修饰符
(可选)告诉编译器如何调用该方法
返回值类型
即该方法最终返回的值的类型,无返回值是使void
方法名
方法的实际名称,与参数列表一同构成方法签名
参数类型
参数相当于一个占位符,方法被调用时,传递值给参数,这个值被称为实参或形参,参数列表指方法的参数类型、顺序和个数
形式参数
即形参,在方法被调用时用于接收外界输入的数据
实际参数
即实参,调用方法时实际传给方法的数据
方法体
具体定义该方法功能的语句
//public表示公共的,所有人都可以访问
public class closeDown {
//main方法
public static void main(String[] args) {
int a=1,b=2;
//调用方法
int sum =add(1,2);//这里的1,2即为实参
System.out.println(sum);
}
//加法方法,public,static是修饰符,不加static不能在main中使用,其中a,b时是形参
public static int add(int a,int b){
return a+b;
}
}
方法的使用
调用格式
有返回值的方法
- 对象名.方法名(实参列表)
- 对在类中创建的方法:先用类名新建一个变量,再用变量名.方法名(实参列表)
public class s01 {
public static void main(String[] args) {
s01 s=new s01();//使用类名新建一个变量
s01.test(1,2);//调用方法
}
public static int test(int a, int b){
return (a>b)?a:b;
}
}
无返回值的方法
调用方法一定是一条语句
例如:System.out.println();
另外,可以自行了解一下值传递(Java)和引用传递
方法重载
即在一个类中,有名称相同但形参不同的函数
规则
- 方法名称相同
- 参数列表不同(个数、类型、顺序)
- 返回类型可以相等也可以不等
- 仅仅返回类型不同不足以成为方法的重载
原理
方法名相同时,编译器会根据参数列表是否相同逐个匹配,如果匹配失败则会报错
示例
我们很容易写一个比较两个整数大小的方法,但也仅限于整数,利用方法重载可以实现多种数据类型的比较,在此我们实现了整数和小鼠的比较
public class s01 {
public static void main(String[] args) {
int a=10,b=20;
float c=13.5f,d=3.14f;
System.out.println(max(a,b));
System.out.println(max(c,d));
}
public static int max(int a,int b)
{
return (a>b)?a:b;
}
public static float max(float a,float b)
{
return (a>b)?a:b;
}
}
命令行传参
有时你希望运行一个程序时再传递给它消息,这时要靠命令行参数给main()函数实现
你可以点击idea左下角的终端
此时它的默认路径为practice的路径,我们也可以在这里进行命令控制符的操作
找到Java文件所在目录后使用javac命令编译文件,再使用java命令运行,我们会发现无法运行,此时我们回到src目录,即可运行程序,以对如下代码的java文件操作为演示
public class Demo03 {
public static void main(String[] args) {
for(int i=0;i< args.length;i++)//args.length为数组的元素个数
{
System.out.println("args["+i+"]:"+args[i]);//这里表示输出该下标对应的元素
}
}//这里不懂没关系,后米我们会学习数组
}
可变参数
也叫不定项参数,在方法声明中,在指定参数类型后加一个省略号(…)
public class s01 {
public static void main(String[] args) {
s01 s=new s01();
s.test(1,2,3,4,5);
}
//调用方法时传入了多少个值,就有多少值被这个数组接收
public static void test(int... i){
System.out.println(i[0]);//相当于打印数组第一个元素
System.out.println(i[1]);
System.out.println(i[2]);
System.out.println(i[3]);
System.out.println(i[4]);
}
}
注意一个方法中只能有一个可变参数,且必须是该方法的最后一个参数