方法的使用
语法:
访问修饰符 返回类型 方法名(参数列表){
方法体;
}
//参数列表相当于输入
//返回类型相当于输出
- 参数列表相当于输入,返回类型相当于输出
- 没有返回类型时用void,若有返回类型,则必须用return返回与返回类型的相同数据类型的值。return会直接结束方法体,将值传递回去
- 如果方法有返回类型,则方法中所有的分支都必须有返回值
- 方法不能定义在方法里面
- 方法的定义是没有顺序的
- 方法定义的时候为形参,调用的时候为实参
public static void main(String []args)
是入口功能,比较特殊- 方法的命名一般采用小驼峰法则:helloWorld,newArr
方法的调用机制
语法:方法名(参数值)
public static void main(String[] args) {
int r = method(1,2);//调用,为实参
System.out.println(r);
int r1 = method(3,4);
System.out.println(r1);
}
// a b 形参;
public static int method(int a , int b){
return a+b ;
}
- 方法调用的时候为实参
- 方法调用的时候实参与形参要一一对应(数量,顺序,数据类型)
- 参数列表可以为数组:
用来定义0~N个int类型的参数,arr可以当做数组使用:
public static void main(String []args){
sum();//0
sum(1,2);//调用后输出3
sum(1,2,3,6,7);//调用后输出19
}
public static void sum(int ...arr){
int sum = 0;
for(int i = 0;i < arr.length;i++){
sum += arr[i];
}
System.out.println(sum);
}
当自定义的方法同时存在不可变参数和可变参数时,可变参数必须写在参数列表最后
public static void main(String []args){
sum(2,1,2,3);//调用后输出3
}
public static void sum(int a,int ...arr){
int sum = 0;
for(int i = 0;i < arr.length;i++){
sum += arr[i];
}
System.out.println(sum/a);
}
- 当主函数与自定义函数定义的内容冲突时:
//int类型无法更改
public static void main(String[] args) {
int i = 1;
method(i);
System.out.println(i);//结果为1
}
public static void method(int i) {
i = 2;
}
//数组内容可进行更改
public static void main(String[] args) {
int []a={1,2,3};
method(a);//传递的为a[]数组的地址
System.out.println(Arrays.toString(a));//结果为[5,2,3]
//a[]被共享,method方法进行了更改
}
public static void method(int a[]) {
a[0] = 5;
}
//String类型比较特殊,内容无法更改
public static void main(String[] args) {
String s = "1";
method(s);
System.out.println(s);//结果为1
}
public static void method(String s) {
s = "2";
}
public static void main(String[] args) {
int a[] = { 1, 2, 3 };
method(a);
System.out.println(Arrays.toString(a));//结果为[1,2,3]
}
//new 在堆中开辟新的空间
public static void method(int[] a) {
a = new int[3];
a[0] = 5;
}
- 使用递归法计算N的累加和,自定义函数调用自身
public static void main(String[] args) {
System.out.println(diGui(100));
}
/*
* 计算N的累加和
* F(100) = F(99) + 100 ;
* *****
* F(1) = F(0) + 1 ;
*
*/
public static int diGui(int n){
if(n == 1){
return 1;
}
return diGui(n-1) + n ;
}