JAVA入门(第5篇)——方法

package JAVA_BASIC;

import java.util.Scanner;

public class A_5_method {
        /*
        方法:将具有独立功能的代码块组织成为一个整体,使之具有特殊功能的代码集。
        方法定义:方法必须创建才能使用;
        方法调用:方法创建后不是直接运行的,需要手动使用后才能执行。
         */

    /*方法定义:
    public static void isEvenNumber() {
    }
    方法调用:
    isEvenNumber();在main方法中调用。
    方法必须先定义后调用,否则程序将报错。
     */

    /*
    带参数方法定义
    public static void isEvenNumber(数据类型 变量名){ }
    public static void isEvenNumber(数据类型 变量名,数据类型 变量名,...){ }
    */

    /*
    实参:方法调用中的参数,main中使用的参数;
    形参:方法定义中的参数,定义的方法中的参数。
    带返回值
    return 数据;
    public static float isEvenNumber(int number){ }
    float处什么类型就返回什么类型。
    调用(用于返回值接收):
    float f = isEvenNumber(5);//接收变量类型也得是该类型的。
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);//main方法中写这句管不到其他方法
        boolean answer1 = isEvenNumber(10);//常量调用
        System.out.println(answer1);
        int number = sc.nextInt();
        isEvenNumber(number);//变量调用
        System.out.println("-------------------");


        int number1 = 1;
        System.out.println(number1);
        change(number1);//栈内存中两个方法是分开的,只是这个调用方法中的值改变了,方法调用完就从栈内存中消失,main()方法中的变量的值和原来值一样
        System.out.println(number1);//输出还是1
        System.out.println("-------------------");

        int[] arr = {11,15,16};//左边在栈内存,右边在堆内存
        System.out.println(arr[1]);//输出堆内存中的值15
        change1(arr);//改变堆内存中数组元素的值
        System.out.println(arr[1]);//输出为20,对引用类型的参数,形式参数的改变,影响实际参数的值
        System.out.println("-------------------");

        output(arr);//注意这里写的是arr整个数组,而不是arr[i]
        System.out.println();
        System.out.println("-------------------");

        int number2 = 4;
        int answer2=getMax(number1,number2);
        System.out.println(answer2);
        //System.out.println(getMax(number1,number2));
        System.out.println("-------------------");


        System.out.println("int:"+compare(10,20));
        System.out.println("byte:"+compare((byte)10,(byte)10));
        System.out.println("-------------------");
        //int a = 3; 00000000 00000000 00000000 00000011(4个字节,32位);
        //转换为byte:00000011(1个字节,前面24位被截断)。
        //System.out.println("int:"+compare(10L,20L));//long类型
        //负数的二进制:绝对值先转换为二进制,所有位取反,加1.
    }

    public static void change(int number1){
        number1 = 20;//改变形参中的number1的值,不改变实参number1的值
        //存储在栈内存中,调用方法执行完毕后,从栈内存消失

    }
    public static void change1(int[] arr){
        arr[1] = 20;//改变形参中的arr[1]的值,改变实参arr[1]的值,在堆内存中修改
        //存储在栈内存中,调用方法执行完毕后,从栈内存消失

    }


    public static boolean isEvenNumber(int number){//方法定义
    //    int number=10;

        if(number%2==0){
            System.out.println("This is an even number.");
            return true;
        }else{
            System.out.println("This is not an even number.");
            return false;
        }
    }

    public static int getMax(int number1,int number2){
//        int number1=10;
//        int number2=10;
//        Scanner sc = new Scanner(System.in);
//        int number1 = sc.nextInt();
//        int number2 = sc.nextInt();
        int max = Math.max(number1,number2);
        //System.out.println(max);
        return max;
    }

    /*
    方法注意事项:
    方法不能嵌套定义;
    void表示无返回值,可以省略return,也可以单独书写return,后面不加数据(return;表示方法到此结束,不执行下面的代码);
     */

    /*
    方法的通用格式:
    public static 返回值类型 方法名(参数){
          方法体;
          return 数据;
          }
     public static:修饰符,目前先记住这个格式;
     返回值类型:方法操作完毕之后返回的数据的数据类型,如果方法操作完毕,
     没有数据返回,这里写void,而且方法体中一般不写return;
     方法名:调用方法时候使用的标识;
     参数:由数据类型和变量名组成,多个参数之间用逗号隔开;
     方法体:完成功能的代码块;
     return:如果方法操作完毕,有数据返回,用于把数据返回给调用者。
     */


    /*
    方法重载:同一类中定义的多个方法之间的关系,需满足以下条件:
    1、多个方法在同一个类中;
    2、多个方法具有相同的方法名;
    3、多个方法的参数不相同,类型不同(参数类型,不是返回值类型)或者数量不同。

    重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式;
    针对同一类中方法的名称与参数进行识别,与返回值无关,不能通过返回值来判断两个方法是否构成重载;
    在调用时,java虚拟机会通过参数的不同来区分同名的方法。
     */

    public static boolean compare(int a,int b){
        return a==b;
    }

    public static boolean compare(byte a,byte b){
        return a==b;
    }

    /*
    System.out.println("内容”);输出内容并换行
    System.out.print("内容”);输出内容不换行
    System.out.println();起换行作用
     */
    public static void output(int[] arr){
        for(int k=0;k<3;k++){
            System.out.print(arr[k]+"  ");
        }
    }



}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值