JAVA基本语法01-方法

方法:

1.概念

把重复且有效代码抽取成的形式就是方法

2.书写格式

修饰符 方法返回值类型 方法名(参数列表){
方法体;
return 返回值;
}

修饰符:public static
方法返回值类型:提供返回值对应的类型来接收
没有返回值使用void
方法名:标识符
参数列表:由参数类型、参数个数以及参数顺序共同决定的
方法体: 重复且有效代码
return:把返回值来进行返回

3.注意

1.方法只有被调用的时候才能被执行
2.两个明确:方法返回值类型、参数列表
3.return功能:结束方法、把返回值进行返回
4.当方法有返回值,考虑参数所有的取值情况给定对应的返回值

package cn.tedu.method;
//边写边编译边保存
public class MethodDemo1 {
    public static void main(String[] args) {
       /* //打印5行6列星星
        for(int i=1;i<=5;i++){
            for(int j=1;j<=6;j++){
                System.out.print("*");
            }
            System.out.println();
        }
        //打印6行7列星星
        for(int i=1;i<=6;i++){
            for(int j=1;j<=7;j++){
                System.out.print("*");
            }
            System.out.println();
        }*/
        //调用方法
        //打印5行6列星星
        //打印6行7列星星
        //提供代码复用性
        //选择代码区域---Ctrl+Shift+?(注释/取消注释)
        printXing(5,6);//单独调用
        //printXing(6,7);
        //求和
        /*System.out.println(sum(1,2));//输出调用
        int result=sum(1,2);//赋值调用*/
    }
    //因为java不支持方法的嵌套
    //定义打印星星方法
    //方法返回值类型---void 参数列表---int x,int y
    public static void printXing(int x,int y){
        //方法体
        for(int i=1;i<=x;i++){
            for(int j=1;j<=y;j++){
                if(j==2)
                    return;
                System.out.print("*");
            }
            System.out.println();
        }
    }
    //定义对两个整数求和的方法
    //两个明确:返回值类型(int),参数列表(int m,int n)
    public static int sum(int m,int n){
        return m+n;
    }
    //定义判断一个整数是否是奇数的方法
    //两个明确:返回值类型(boolean) 参数列表(int m)
    public static boolean isOdd(int m){
        //非正常数据
        if(m<=0){
            return false;
        }
        //正常范围内判断是否是奇数
        if(m%2==1){
            return true;
        }
        //正常范围内偶数
        return false;
    }
}

4.重载方法

在一个类中,我们的方法名一致参数列表不一致

在调用重载方法时,如果提供精确匹配的方法就做精确匹配,如果没有提供精确匹配的方法就做相对精确匹配。如果提供多个相同程度的相对精确匹配的方法就匹配不到就会报错(最好提供精确匹配的方法)

package cn.tedu.method;
//Ctrl+Alt+Inset---新建类/接口/包等等
public class MethodDemo2 {
    //在java中唯一确定方法---方法签名(由方法名和参数列表共同决定)
    public static void main(String[] args) {
        //重载方法的调用
        //当提供精确匹配方法就做精确匹配
        //如果没有提供精确匹配方法就做相对精确匹配
        //提供多个相同程度的相对精确匹配的方法就匹配不到了
        //System.out.println(sum(1,2));
    }

    //求和方法
    //sum(int,int)
    /*public static int sum(int m,int n){
        System.out.println("int int");
        return m+n;
    }*/
    //sum(double,int)
    public static double sum(double m,int n){
        System.out.println("double int");
        return m+n;
    }
    //sum(int,double)
    public static double sum(int m,double n){
        System.out.println("double double");
        return m+n;
    }
}

5.方法传值

1.当实参为基本数据类型时传递的是拷贝值
2.当实参为引用数据类形时传递的是地址值的拷贝
如果拷贝的地址值找到原堆内存的就有可能有影响
如果拷贝的地址值没有找到原堆内存,做任何操作都不会有影响
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

package cn.tedu.method;

public class MethodDemo3 {
    //java中的方法被调用都是加载到栈中执行
    public static void main(String[] args) {
        //int i=1;
        //实参---实际传入的值
        //当实参类型是基本数据类型时传递是值的拷贝
        //m(i);

        int[] arr={1,2,3};
        //数组元素是基本数据类型传递是值的拷贝
        //m(arr[0]);

        //当实参类型是引用数据类型时传递的是地址值的拷贝
        //n(arr);

        //当实参类型是引用数据类型时传递的是地址值的拷贝
        mn(arr);
        System.out.println(arr[0]);
    }
    //形参---接收实参的值
    public static void m(int i){//接收的是拷贝值
        i+=2;//操作拷贝值时不会影响原来的值
    }
    public static void n(int[] arr){//接收的是拷贝的·地址值
        arr[0]=9;//根据拷贝的地址值找到堆内存改变元素值
    }
    public static void mn(int[] arr){//接收的是拷贝的地址值
        arr=new int[2];//拷贝的地址值被新数组的地址值覆盖了
        arr[0]=9;//arr指向新数组改变元素并不会影响原堆内存的元素值
    }
}

有参有返回值
有参无返回值
无参有返回值
无参无返回值

6.方法递归

执行方法时调用本方法

 sum(5)=1+2+3+4+5
	    =5+4+3+2+1
		5+sum(4)
			4+sum(3)
				3+sum(2)
					2+sum(1)

StackOverflowError—栈溢出错误(递归次数过多)

package cn.tedu.method;
public class MethodDemo1 {
    public static void main(String[] args) {
        System.out.println(sum(1000000));
    }
    //定义递归求和的方法
    public static int sum(int m){
        //递归结束条件
        if(m==1){
            return 1;
        }
        return m+sum(m-1);//5+sum(4)
                             //   4+sum(3)
                             //      3+sum(2)
                             //         2+sum(1)
                             //             sum(1)=1
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值