Java第七次学习笔记---方法

目录

一、方法定义、调用 

1.1方法完整的定义形式、调用

 1.2方法其他的定义形式、调用

 二、方法使用的常见问题

 三、方法案例

3.1定义方法的技巧、计算1-n的和返回

3.2判断整数是奇数还是偶数

 3.3数组求最值案例改写方法形式

四、方法调用的内存图

五、 方法的参数传递机制

 5.1基本类型的参数传递

 5.2引用类型的参数传递

 5.3两部分的总结

 六、方法的参数传递案例

 6.1打印数组内容

 6.2从数组中查询元素的索引返回

 6.3比较两个数组内容是否一样

七、方法重载

7.1方法重载的形式、作用

7.2方法重载的识别形式

八、补充知识:单独使用return关键字 

解释:例如main方法,求和方法等等。可以重复使用。

方法的作用:

1、提高代码的复用性。可以将一个大的项目进行拆分,然后将整体功能拆分成各个小功能部分,单独负责该部分的方法功能的实现即可。

2、程序的逻辑更加清晰。

案例:

创造一个求和的功能。

代码如下:

public class MethodTest1 {
    public static void main(String[] args){
        //调用sum函数使用
    int c1 = sum(10,20);
        System.out.println(c1);
    int c2 = sum(30,40);
        System.out.println(c2);

    }
    //创造求和的功能,注意创建的新的功能不能方法main方法里面,两者是相互冲突的。
    public static int sum(int a , int b){
        int c = a + b;
        return c;
    }
}

 结果:

注意:

1、新创建的是个新的方法,和main方法两者是相互冲突的,所以需要放到main方法外面。放在main方法里面会出现下面的错误。

2、注意在main中需要调用 所新创建的方法,按照自己定义的格式进行调用。

 学习流程:

一、方法定义、调用 

1.1方法完整的定义形式、调用

 以下为方法的两种格式:

第一种是常规的有参数有返回值的格式。

 1.2方法其他的定义形式、调用

第二种是无参数无返回值的格式。

需要注意的是:如果是void的返回值类型的方法定义,此时创建的新的方法内部不需要有return返回值的。 

public class MethodTest2 {
    public static void main(String[] args){
    print();
        System.out.println("------------");
    print();
    }
    public static void print(){
        for (int i = 0; i < 3; i++) {
            System.out.println("Hello World!");
        }
    }
}

 二、方法使用的常见问题

 1、方法编写顺序无所谓。

自己新创建的方法,放在main的上面和下面的位置没有影响。

2、方法与方法之间是平级关系,不能嵌套定义。即不能在一个方法的内部又有另外的一个方法的存在。

3、方法的返回值类型为void(无返回值),方法内测不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部使用return返回对应的数据类型。

具体的例子看上面一中的情况。

4、return语句下面,不能编写代码,因为永远执行不到,属于无效的代码。

5、方法不调用就不执行,调用时必须严格和方法设定的参数匹配,即内部的参数情况。例如:有参数、参数的数据类型对应:整型对整型,浮点型对浮点型等等、无参数等。

 6、

6-1、有返回值的方法调用时可以选择定义变量接收返回的结果。

例如:

该部分sum方法的结果,可以用rs这个变量来接收返回的结果。

 6-2、直接输出调用,甚至直接调用。例如:返回值直接作为输出的结果。

 有返回结果,但是没有定义新的变量接收,会导致结果不能用显示。

 6-3、无返回值方法的只能直接调用一下。

总结:

 三、方法案例

3.1定义方法的技巧、计算1-n的和返回

注意:关注的这两点很重要。是否有返回值,以及其的类型 ;是否接收形参。

案例:

分析:

参考案例代码:

 个人敲写代码:

public class Methodexample {
    public static void main(String[] args){
        System.out.println("1-10的和:" + sum(10));
        print();
        System.out.println("1-100的和:" + sum(100));
    }
    public static int sum(int n){
        int sum = 0;
        for (int i = 1; i <=n ; i++) {
            sum += i;
        }
        return sum;
    }
    public static void print(){
        System.out.println("---------------------");
    }
}

3.2判断整数是奇数还是偶数

案例:

 案例分析:

 注意:根据实际的情况判断方法的编写方式很重要。例如:是否有形参以及是否有返回值的返回,以及返回值的类型。

参考代码:

 个人代码参考:

public class Methodexample2 {
    public static void main(String[] args){
    check(100);
    print();
    check(101);
    }
    //根据实际的情况判断是选取是否有形参和是否有返回值(返回值类型)
    public static void check(int number){
        if(number %2 == 0){
            System.out.println(number + "是偶数");
        }
        else {
            System.out.println(number + "是奇数");
        }
    }
    public static void print(){
        System.out.println("-------------------");
    }
}

 结果:

 3.3数组求最值案例改写方法形式

 案例:

案例分析:根据需要查看的两点分析。是否有返回值及其类型;是否有形参输入。 

 

 

参考代码:

个人代码如下:

public class Methodexample3 {
    public static void main(String[] args){
        int[] arry = {88,22,33,44,55,66,77};
        //接收最大值的返回数据
        int maxi = Getarray(arry);
        System.out.println(maxi);
    }
    //需要返回数据值,并且参数是数组,参数位置定义数组如下所示。
    public static int Getarray(int[] arr){
        int max =arr[0];
        for (int i = 1; i < arr.length; i++) {
            if(arr[i] > max){
                max = arr[i];
            }
        }
        return max;
    }
}

四、方法调用的内存图

方法区运行区域在:栈内存里面。比如我们在main方法中定义的变量,也是在栈内存当中。 

 具体的分析:

 第一步:class文件放在方法区。void main和int  add

第二步:提取main中的内容放到栈内存当中,然后接着读取int add中的内容进行

第三步:在栈内存中进行int add函数的调用,将结果的内容反馈到main中的sum处理后的结果当中。

第四步:main中的int sum使用完之后,会退出栈内存。

总结:实际上内存的分配也就是根据main方法进行处理运行,一步一步的向下进行。每个方法都在方法区,其他的内容在栈内存当中,使用时占用内存,使用结束后退出。

五、 方法的参数传递机制

 5.1基本类型的参数传递

 解释:实参传递给形参的是真实的值。 如果在调用的方法比如说上面的change方法中对a进行数值变化,a的实际结果并不会发生改变。结合下列所示:对于下面的例子中a的值在change方法中进行了a值变化处理,但是在main中的a值并不会发生改变,change方法只针对调用的哪一个语句有效。

 5.2引用类型的参数传递

该部分是涉及到数组的传递。该部分实参传递给形参的是地址,地址前后不会发生变化。如果此时发生5.1上述的情况,变量的值是会发生改变的。具体的例子如下面所示:传递的是地址,是直接将地址上对应的数据进行了改变,所以对于原来的数组就会发生了改变。和数值之间的传递变换是不一样的。

 5.3两部分的总结

 六、方法的参数传递案例

 6.1打印数组内容

 案例:

案例分析:

1、需要有输入的参数,返回值类型不需要设置,因为案例要求我们能够将数组的内容进行输出就好了,并不需要有值进行返回输出。

 个人代码如下:

public class Test1 {
    public static void main(String[] args){
    int[] datas = {11,22,33,44};
    GetArray(datas);
    print();
    int[] scores = {66,77,88,99};
    GetArray(scores);
    print();
    int[] name = {};
    GetArray(name);
    print();
    }
    public static void GetArray(int[] arr){
        System.out.print("[");
        for (int i = 0; i <arr.length ; i++) {
            if(arr != null && arr.length > 0){
                if(i == arr.length-1){
                    System.out.print(arr[i]);
                }
                else{
                    System.out.print(arr[i] + ",");
                }
            }
        }
        System.out.println("]");
    }
    public static void print(){
        System.out.println("----------------------");
    }
}

 参考代码:

 6.2从数组中查询元素的索引返回

案例:

分析:

 代码如下:

public class Test2 {
    public static void main(String[] args){
    int[] arr ={11,22,33,44,55,66,77,88,99};
    //接收来自创建的方法的返回值
    int Index =searchIndex(arr,66);
    //将返回值进行输入
    System.out.println("输入的索引:" + Index);
    }
    public static int searchIndex(int[] arr,int data){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == data){
                return i;
            }
        }
        return -1;
    }
}

 参考代码:

 6.3比较两个数组内容是否一样

 案例:

案列分析:

 代码如下:

public class Test3 {
    public static void main(String[] args){
        int[] arr1 = {111,22,33};
        int[] arr2 = {11,22,33};
        System.out.println(compare(arr1,arr2));

    }
    public static boolean compare(int[] arr1,int[] arr2){
        //判断数组的长度来决定数组之间是否相等
        if(arr1.length ==arr2.length){
            //数组内容进行二次判断,出现不相等则是有问题返回数组值为false
            for (int i = 0; i < arr1.length; i++) {
                if(arr1[i] !=arr2[i]){
                    return false;
                }
            //数组内容进行二次判断,出现相等则是有问题返回数组值为true
            }
            return true;
        }
        //数组长度不相等则返回的数组类型为false。
        else{
            return false;
        }
    }
}

结果:

 

参考代码:

七、方法重载

7.1方法重载的形式、作用

方法重载的含义:

 用途:

 对于方法重载的例子如下:

同一个方法名称相同,但是其形参的内容可以不同,就可以造成方法重载的作用。

public class MethodDemo1 {
    public static void main(String[] args){
    fire();
    fire("米国");
    fire("岛国",1000);
    }
    public static void fire(){
        System.out.println("发生一枚导弹!");
    }
    public static void fire(String location){
        System.out.println("发射一枚导弹飞向" + location);
    }
    public static void fire(String location,int data){
        System.out.println("发射" + data +"枚导弹飞向" + location);
    }
}

 参考代码如下:

方法重载+方法嵌套:

方法重载的好处作用:

7.2方法重载的识别形式

 

 练习判断那些是方法重载:

八、补充知识:单独使用return关键字 

作用:就是从新创建的方法当中,跳出来。中断该方法继续向后执行,但不影响main函数后面的程序内容。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值