简述
什么是方法,方法它是一个程序的执行的入口。之前我们还提到可以使用 .去调用方法,像
Sysout.out.println();中 println()就是一个方法
所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。
方法声明
语法:
访问修饰符 返回类型 方法名(参数列表) {
方法体
}
实例:
public static void main(String[] args) {
System.out.println("Hello,World!");
}
访问修饰符就是方法允许被访问的范围;返回类型可以是void和其他任何类型的数据(包括自己创造
的数据类型);方法名需要满足标识符的全部规则外还需要满足驼峰原则;参数列表可以省略,既没
有参数,同样参数可以有多个,每个参数之间使用逗号间隔,参数由数据类型和参数名构造,类似变
量的定义;
根据参数和返回值,方法可以分为四类:
- 无参无返回值
- 无参有返回值
- 带参无返回值
- 带参有返回值。
方法类型:
无参无返回值方法:
public class One {
// 打印输出星号的方法
public void printStar() {
System.out.println("********************************");
}
// 一行打印输出一串星号
public static void main(String[] args) {
//创建一个One类的对象MyOne
One MyOne=new One();
//使用对象名.方法名()去调用方法
MyOne.printStar();
System.out.println("欢迎来到Java的世界!");
MyOne.printStar();
}
}
什么是返回值,返回值其实是本方法求得的结果,这个结果最终可能为其他方法或代码块所需要,那
么为了将该结果传递出去,就需要使用返回值将得出的结果传递出去。
带参无返回值方法
例题:
定义一个求两个float类型的数据最大值的方法,在方法中将最大值打印输出
public class MaxDemo {
public void max(float a, float b) {//形式参数(形参)
float max;
if(a > b) {
max = a;
} else {
max = b;
}
System.out.println("最大值为:" + max);
}
public static void main(String[] args) {
MaxDemo md = new MaxDemo();
md.max(1.1, 1.3);//实际参数(实参)
}
}
局部变量的范围只限于定义它的大括号中,传递数值时主方法中可以是变量,也可以是一个字面值,
不同类型传递会出现类型转换。
带参有返回值的方法
例题:
定义一个求n!的方法,然后再求1!+ 2!+3!+4!+5!
n!是指阶乘,5的阶乘就是 12345
public class Four {
//方法不能嵌套定义
//求阶乘的方法
public int fac(int n) {
int s=1;
for(int i=1;i<=n;i++) {
s*=i;//s=s*i;
}
return s;
}
public static void main(String[] args) {
Four four=new Four();
int fac=four.fac(3);
System.out.println("3!="+fac);
int sum=0;
//求1!+2!+3!+4!+5!
for(int i=1;i<=5;i++){
fac=four.fac(i);
sum+=fac;
}
System.out.println("1!+2!+3!+4!+5!="+sum);
}
}
方法的定义必须定义在类的里面,但是不能定义在另外一个方法的里面。方法不能嵌套,带有返回值
的方法是为了参与进一步的运算
数组作为方法参数
例题:
定义方法,打印输出数组元素的值
public class Five {
//打印输出数组元素的值
public void printArry(int[] arr) {
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
int[] arr= {10,20,30,40,50,};
Five am=new Five();
am.printArry(arr);
}
}
方法重载
方法重载——有时候需要使用相同的方法,得出不一样的结果。
在同一类当中,调用方法的时候,会发现:有很多方法名一样,但是参数不一样的方法。由此:
- 方法名相同
- 方法的参数类型或者参数个数不一样
//这两点是必须的。 - 方法的返回类型可以不相同
- 方法的修饰符可以不相同
- main方法也可以被重载——main()是普通方法
//但是虚拟机只调用带字符串公共类型的方法;
如果需要执行其他main方法,或者其他方法,都在
public static void main(String[] args) {}中调用。
public class Test01 {
//重载,方法名相同
int i;
Test01(){
System.out.println("无参数构造函数");
i = 4;
}
Test01(int j){
System.out.println("有参数构造函数");
i = j;
}
public void add() {
System.out.println("--------one----------");
}
public int add(int a,int b) {
System.out.println("--------two----------"+(a+b));
return a+b;
}
public int add(int a,int b,int c) {
System.out.println("--------three----------"+(a+b+c));
return a+b+c;
}
/*public int add(int b,int a) {//方法重复,参数名转换顺序不行,冲突add(int,int)
return b;
}*/
public double add(int a,double b) {
System.out.println("--------four----------"+(a+b));
return a+b;
}
/*public int add(int a,double b) {//方法重复,与修饰符无关,int,double可换可不换,冲突add(int,double)
return a;
}*/
public static void main(String[] args) {
Test01 t1 =new Test01(4);
t1.add();
t1.add(1, 2.0);
//重载构造函数
new Test01();
}
}
执行结果:
有参数构造函数
--------one----------
--------four----------3.0
无参数构造函数