方法

方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集

注意:

方法必须先创建才可以使用,该过程成为方法定义

方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用

方法的定义和调用
无参数方法定义和调用
public static void 方法名 (   ) { 
	// 方法体; 
}

范例:

public static void method (    ) {    
    // 方法体; 
}

调用格式:

方法名();

范例:

method();

注意: 方法必须先定义,后调用,否则程序将报错

无参数方法的练习
public class ModuleDemo {
    public static void main(String[] args) {
        //调用方法
        isNumber();
    }

    //定义方法 isNumber
    public static void isNumber() {
        int a = 10;
        a = 9;
        //判断该数据是否是偶数;
        if (a % 2 == 0) {
            System.out.println(true);
        } else {
            System.out.println(false);
        }

    }
}

package com.ArrayDemo_06;

public class ModuleDemo2 {
    public static void main(String[] args) {
        getMax();
    }

    public static void getMax() {
        int a = 22;
        int b = 20;
        int max = a > b ? a : b;
        System.out.println(max);
    }
}

带参数方法定义和调用
带参数方法定义和调用

定义格式:

参数:由数据类型和变量名组成 
     数据类型 变量名 
参数范例:int a

注意:方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错
方法定义时,多个参数之间使用逗号( ,)分隔

方法定义:

public static void 方法名 (参数1) {    方法体; }
 
public static void 方法名 (参数1, 参数2, 参数3...) {    方法体; }
public static void isEvenNumber(int number){
    ... 
} 
public static void getMax(int num1, int num2){    
    ... 
}

调用格式:

方法名(参数);
 
方法名(参数1,参数2);

范例:

isEvenNumber(10);
 
getMax(10,20);

注意:方法调用时,参数的数量与类型必须与方法定义中的设置相匹配,否则程序将报错

package com.ArrayDemo_06;

public class ModuleDemo3 {
  public static void main(String[] args) {
      //常量值的调用
      isNumber(10);

      //变量值的调用
      int number = 15;
      isNumber(number);
  }

  public static void isNumber(int number){
      if (number%2==0){
          System.out.println(true);
      }else{
          System.out.println(false);
      }
  }
}

形参和实参

形参:方法定义中的参数 (数据类型和变量名组成)

	    等同于变量定义格式,例如:int number

实参:方法调用中的参数 (不带数据类型,是常量值或变量名)

        等同于使用变量或常量,例如: 10 number 
带参数方法练习
package com.ArrayDemo_06;

public class ModuleDemo4 {
    public static void main(String[] args) {
        //常量值
        isMax(15,17);

        //变量值;注意数据类型以及参数量必须与方法中一致
        int a =10;
        int b = 5;
        isMax(a,b);
    }

    public static void isMax(int a,int b){
        if (a>b){
            System.out.println(a);
        }else{
            System.out.println(b);
        }
    }
}

带返回值方法的定义和调用
带返回值方法的定义

定义格式

public static 数据类型 方法名 ( 参数 ) {     
    return 数据 ; 
}

范例

public static boolean isEvenNumber( int number ) {               
	return true ; 
} 
public static int getMax( int a, int b ) {    
    return  100 ; 
}

注意: 方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错

调用格式

方法名 ( 参数 ) ; 
数据类型 变量名 = 方法名 ( 参数 ) ;   //一般使用这种方法

范例

isEvenNumber ( 5 ) ; 
boolean  flag =  isEvenNumber ( 5 ); 

注意: 方法的返回值通常会使用变量接收,否则该返回值将无意义

带返回值方法的调用
package com.ArrayDemo_06;

public class ModuleDemo5 {
    public static void main(String[] args) {
        // 方法名 ( 参数 ) ; true没有输出,无意义
        isNumber(10);   

        //数据类型 变量名 = 方法名 ( 参数 ) ;  输出flase
        boolean ant = isNumber(21);
        System.out.println(ant);
    }
    
	// boolean 是根据返回值的类型来写。
    public static boolean isNumber(int number){
        if(number%2 ==0){
            return true;
        }else{
            return false;
        }
    }
}
package com.ArrayDemo_06;

public class ModuleDemo6 {
    public static void main(String[] rags){
        //在main()方法中调用定义好的方法,并使用变量保存; --推荐使用此方法
        int max = isNumber(21,11);
        System.out.println(max);
        
        //在main()方法中调用定义好的方法并直接打印结果;
        System.out.println(isNumber(121,3));
    }
    
    public static int isNumber(int a,int b){
        if(a>b){
            return a;
        }else{
            return b;
        }

    }
}

方法的注意事项
方法的注意事项
  • 方法不能嵌套定义

    public class MethodDemo {    
        public static void main(String[] args) {
     
        }
     
        public static void methodOne() {        
            public static void methodTwo() {            
                // 这里会引发编译错误!!!        
            }    
        } 
    }
                
    
  • void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据

    public class MethodDemo {    
    	 public static void main(String[] args) {
     
        }    
        public static void methodTwo() {        
            //return 100; 编译错误,因为没有具体返回值类型        
            return;         
            //System.out.println(100); return语句后面不能跟数据或代码    
        } 
    }
    
    
方法的通用格式:
public static 返回值类型 方法名(参数) {   
    方法体;    
    return 数据 ; 
}
public static 修饰符,目前先记住这个格式  
 
 返回值类型 方法操作完毕之后返回的数据的数据类型;如果方法操作完毕,没有数据返回,这里写void,而且方法体中一般不写return
 
 方法名        调用方法时候使用的标识
 
 参数     由数据类型和变量名组成,多个参数之间用逗号隔开
 
 方法体        完成功能的代码块
 
 return     如果方法操作完毕,有数据返回,用于把数据返回给调用者

定义方法时,要做到两个明确:

  • 明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应 的数据类型
  • 明确参数:主要是明确参数的类型和数量

调用方法时的注意:

  • void类型的方法,直接调用即可
  • 非void类型的方法,推荐用变量接收调用
方法重载
方法重载概念

方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

  • 多个方法在同一个类中
  • 多个方法具有相同的方法名
  • 多个方法的参数不相同
  • 类型不同或者数量不同

注意:

  • 重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
  • 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两 个方法是否相互构成重载
package com.ArrayDemo_06;

/*
与返回值无关
在调用时,Java虚拟机会通过参数的不同来区分同名的方法
 */

public class ModuleDemo7 {
    public static void main(String[] args) {
        int sult1 = number(12,11);
        System.out.println(sult1);
        
        double sult2 = number(22,11);
        System.out.println(sult2);
        
        int sult3 = number(11,23,11);
        System.out.println(sult3);
    }

    public static int number(int a, int b){
        return a+b;
    }

    public static double number(double a,double b){
        return a+b;
    }
    public static int number(int a,int b,int c){
        return a+b+c;
    }
}

方法重载练习

使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long)

package com.ArrayDemo_06;

public class ModuleDemo8 {
    public static void main(String[] args) {
        System.out.println(isNumber(10,20));
        System.out.println(isNumber((byte)10,(byte)20));
        System.out.println(isNumber((short)10,(short)20));
        System.out.println(isNumber(10L,20L));
    }

    public static boolean isNumber(int a,int b){
        System.out.println("int");
        return a==b;
        }

    public static boolean isNumber(byte a,byte b){
        System.out.println("byte");
        return a==b;
    }

    public static boolean isNumber(short a,short b){
        System.out.println("short");
        return a==b;
    }

    public static boolean isNumber(long a,long b){
        System.out.println("long");
        return a==b;
    }

}

方法参数传递
方法参数传递基本类型

对于基本数据类型的参数,形式参数的改变,不影响实际参数的值

每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失

package com.ArrayDemo_06;
/*
对于基本数据类型的参数,形式参数的改变,不影响实际参数的值
每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失

 */

public class ModuleDemo9 {
    public static void main(String[] args) {
        int a = 100;
        System.out.println("调用number方法之前:" + a);  //100
        number(a);
        System.out.println("调用number方法之后:" + a);  //100   还是调用main()里面的值
    }

    public static void number(int a){
        a = 200;                    
    }
}

方法参数传递引用类型
package com.ArrayDemo_06;
/*
对于引用类型的参数,形式参数的改变,影响实际参数的值
 */

public class ModuleDemo9 {
    public static void main(String[] args) {
        int [] arr ={10,20,30};
        System.out.println("调用number方法之前:" + arr[1]);
        number(arr);
        System.out.println("调用number方法之后:" + arr[1]);
    }

    public static void number(int [] arr){
        arr[1] = 100;            //引用 arr ,修改了数组里面的值
    }
}
数组遍历
package com.ArrayDemo_06;
//设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[11, 22, 33, 44, 55]
public class ModuleDemo10 {
    public static void main(String[] args) {
        int [] arr = {11,22,33,44,55};
        list(arr);
    }

    public static void list(int arr []){
        System.out.print("[");
        for(int x = 0; x< arr.length;x++){
            if (arr.length -1 == 0){
                System.out.print(arr[x]);
            }else{
                System.out.print(arr[x]+", ");
            }
        }
        System.out.println("]");
    }
}

System.out.print(arr[x]+", "); //不换行

System.out.println(arr[x]+", "); //换行

System.out.print(); //空行

数组最大值
package com.ArrayDemo_06;
//需求:设计一个方法用于获取数组中元素的最大值
public class ModuleDemo11 {
    public static void main(String[] args) {
        int [] arr = {14,22,35,23,44,12};
        int number = isMax(arr);
        System.out.println("数组最大值:"+number);
    }

    public static int isMax(int [] arr){
        int x = arr[0];
        for(int y = 1;y<arr.length;y++){
            if(x < arr[y]){
                x = arr[y];
            }
        }
        return x;
        //System.out.println(x);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岿然如故

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值