1、方法(method)
1.1 方法的定义:
方法是将具有独立功能的代码块组织成一个整体,使其具有特定功能的代码集<br />注意:<br /> 1. 方法必须先创建才可以使用,该过程称为方法定义<br /> 2. 方法创建后不能直接运行,需要手动使用,该过程称为方法的调用<br />方法定义<br /> 格式:public static void 方法名(){<br /> //方法体<br />}<br /> 范例:<br />_public static void _main(String[] args) {<br /> _// 调用方法_ isEvenNumber_();<br />}<br />_public static void _isEvenNumber() {<br /> _//方法体_ int _number = 10;<br /> _if_(number %2 == 0){<br /> System._out_.println(_true_);<br /> }_else _{<br /> System._out_.println(_false_);<br /> }<br />}
1.2 方法的调用:
1.格式: 方法名();
2.范例:  isEvenNumber();
3.注意: 方法必须存在,先定义后调用
1.3 方法调用过程
// 调用方法过程 进入main方法
public static void _main(String[] args) {
    // 调用定义的isEvenNumber()方法    isEvenNumber();
}
//  进入isEvenNumber()方法
public static void _isEvenNumber() {
    //执行自定义的方法体语句    int _number = 10;
    _if(number %2 == 0){
        System.out.println(true);
    }else {
        System.out.println(false);  } }
1.4 方法练习
需求:设计一个方法用于打印两个数中的较大数<br /> 思路:定义一个方法,用于打印两个数字中的较大数,例如getMax()<br /> 代码实现:<br />_public static void _main(String[] args) {<br /> _// 调用方法_ getMax_();<br />}<br />_public static void _getMax() {<br /> _//方法体_ int _a = 10;<br /> _int _b = 20;<br /> _if_( a > b ){<br /> System._out_.println(a);<br /> }_else _{<br /> System._out_.println(b);<br /> }<br />}
2. 带参的方法定义
格式:public static void 方法名(参数){   方法体…  }
单个参数: public static void 方法名(数据类型 变量名){   方法体…  }
多个参数: public static void 方法名(数据类型 变量名1,数据类型 变量名2, …){   方法体…  }
注意:方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序都将报错
    方法定义时,多个参数之间使用逗号( , )分割 
2.1 带参方法的调用
格式:  方法名(参数);
格式(单个参数): 方法名(变量名/常量值);   例如:isEvenNumber(5);
格式(多个参数): 方法名(变量名1/常量值1,变量名2/常量值2);   例如:getMax(5,6);
注意:方法定义时,参数中的数量与数据类型必须与定义的方法中的设置一致,否则会报错
代码实现:
public static void _main(String[] args) {
        // 向方法中传递参数(常量值)
        isEvenNumber(5);
        // 向方法中传递参数(变量值)        int _number = 10;
        _isEvenNumber(number);
}
public static void _isEvenNumber(_int _number){
    _if (number%2 == 0){
        System.out.println(true);
    }else{
        System.out.println(false);
    }
}
2.2形参和实参:
形参:方法中定义的参数,等同于方法变量自定义的格式<br />_public static void _isEvenNumber(_int _number)<br />isEventNumber方法中的形参是: (_int _number) <br /> 实参:方法中调用的参数,等同于使用变量或常量 <br />_isEvenNumber_(5); _isEvenNumber_(number);<br /> 调用方法中的参数,实参就是5和number<br />练习:设计一个方法用于打印两个数中的较大数,数据来自方法参数<br /> 代码实现--传递多个参数:<br />_public static void _main(String[] args) {<br /> _// 向方法中传递参数(常量值)_ isEvenNumber_(5,10);<br /> _// 向方法中传递参数(变量值)_ int _a = 10;<br /> _int _b = 20;<br /> _isEvenNumber_(a,b);<br />}<br />_public static void _isEvenNumber(_int _a,_int _b){<br /> _if _(a > b){<br /> System._out_.println(_true_);<br /> }_else_{<br /> System._out_.println(_false_);<br /> }<br />}<br /> 注意:调用方法的时候,数据类型和数据值要匹配
3. 带返回值的方法定义
3.1 返回值的方法格式:
格式: public static 数据类型 方法名(参数){<br /> return 数据;<br /> }<br /> 范例1: public static boolean inEvenNumber(int number){<br /> return true;<br /> }<br />范例2: public static int getMax(int a,int b){<br /> return 100;<br /> }<br />注意:方法定义是return后面的返回值与方法定义上的数据类型要匹配
3.2 返回值的方法调用:
 格式1:数据类型 变量名 = 方法名(参数);
 范例:  boolean flag = isEvenNumber(5); // 传送一个常量
 注意:  方法的返回值通常会使用变量接受,否则返回值将无意义
       代码实例:
 需求:定义一个方法,该方法接收一个参数,判断数据是否是偶数,并判断
 代码实现:
public static void _main(String[] args) {
    // 返回值是Boolean类型所以 向方法中传递的形参也是Boolean       boolean _flag = _isEvenNumber(10);
       System.out.println(flag);
}
public static boolean _isEvenNumber(_int _a){
    _if (a % 2==0 ){
        return true;
    }else{
        return  false;
    }
}
返回值方法练习:
需求:设计一个方法可以获取两个数的较大值,数据来自参数
public static void _main(String[] args) {
    // 返回值是int类型所以 向方法中传递的形参也是int
    // 方法中定义的数据类型int 其中有两个值所以传递的形参也是保持一致        int _flag = _getMax(10,20);
       System.out.println(flag);
// 在main()方法中直接打印带形参的调用方式
    System.out.println(getMax(10,20));
}
public static int _getMax(_int _a,_int _b){
    _if ( a > b ){
        return _a;
    }_else{
        _return  _b;
    }
}
3.3 方法的注意事项:
1. 方法不能嵌套定义<br /> 2. void表示没有返回值,可以指向任意数据类型<br /> void可以省略return,也可以直接return,直接return相当于结束该语句<br /> void 因为是没有返回值,所以不能添加数据
4. 方法的通用格式
格式: public static 数据类型 方法名(参数){
  方法体;
           return 数据;  }
public static   修饰符,目前先记住这个格式
返回值类型      方法操作完毕后返回的数据的数据类型
    如果方法操作完毕,没有数据返回,这里写void,
    void的方法体中一般不写return
方法名          调用方法时使用的标识
参数          由数据类型和数据名组成,多个参数之间逗号隔开
方法体          完成功能的代码块
return          如果方法操作完毕,有数据返回,用于把数据返回给调用者
定义方法时,需要注意两点:
明确返回值类型:主要是明确方法操作完毕之后是否有数据返回
  如果没有,写void; 如果有,写对应定义的数据类型
明确参数:主要是明确参数的类型和数量
调用方法时
void类型的方法可以直接调用
非void类型的方法,推荐使用变量接收调用(返回什么类型,就定义一个和类型一致对象接收)
5.方法重载
方法重载概述
// 两个数据求和
_public static int _sum(_int _a, _int _b){
    _return _a+b;  }
// 三个数据求和
_public static int _sum(_int _a, _int _b, _int _c){
    _return _a + b + c;  },
定义两个方法,如果两个方法在同一个类中就构成了方法重载
_public class _test {
    _public static int _sum(_int _a, _int _b){
        _return _a + b ;
    }
    _public static int _sum(_int _a, _int _b, _int _c){
        _return _a + b + c;
    }
}
方法重载的定义:
 1、方法重载是在同一个类中定义了多个方法之间的关系
 2、满足下列条件的多个方法才能构成重载:
      ①.多个方法在同一类
②.多个方法具有相同的方法名
③.多个方法的参数不同,类型不同或者数量不同
方法重载的特点:
 1、重载仅针对方法的定义,与方法的调用无关,调用方式和标准格式一直
 2、重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判断两个方法是否构成重载
方法重载判断:
1、判断方法重载是否有效,主要看方法名以及参数
①.方法名相同,参数数据类型不同,所以构成重载
_public class _test {
    _public static void _sum(_double _a){ }
    _public static int _sum(_int _a, _int _b){   _return _a + b ;  } }
②.方法名相同,参数不同,所以构成重载
_public class _test {
    _public static void _sum(_int _a){  } // 返回的是空类型可以不用return
    _public static int _sum(_int _a, _int _b){   _return _a + b ;  } }
③.方法名相同,在同一类,但是参数也相同,不构成重载
_public class _test {
    _public static void _sum(_int _a, _int _b){  _return _a + b ; }
    _public static int _sum(_int _a, _int _b){   _return _a + b ;  }    }
④.方法名相同,参数数据类型不同,但是不在同一类所以不构成重载
_public class _test {    _public static void _sum(_double _a){ } }
_public  class  _test1 {     _public static int _sum(_int _a, _int _b){   _return _a + b ;   }   }
方法的重载总结:
1、与返回值无关
2、java虚拟机(JVM)会通过参数的数据类型的不同判断调用的哪个方法
public static void _main(String[] args) {
    //  调用方法    int _sum1 = _sum(10,20);
    double _sum2 = _sum(10.0,20.0);
 int _sum3 = _sum(10,20,3);
    System.out.println(sum1);
    System.out.println(sum2);
    System.out.println(sum3);    }
public static double _sum(_double _a, _double _b){   _return _a + b ; }
_public static int _sum(_int _a, _int _b){   _return _a + b ;  }
_public static int _sum(_int _a, _int _b ,_int _c){   _return _a + b + c ;   }
方法重载的练习:
需求:使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long)
思路:定义比较两个数字是否相同的方法compare()方法,参数选择两个int类型参数
_public static void _main(String[] args) {
    //  直接输出调用方法    _System._out.println(compare(10,20));
    //  通过数据类型转换将int转换为byte 可以直接输出调用byte方法
    _System._out.println(compare((byte)10,(byte)20)); 
   //  通过数据类型转换将int转换为long可以直接输出调用byte方法
    _System._out.println(compare(10L,20L); }
public static boolean _compare(_int _a, _int _b){
    System._out.println(“int”);
    return _a == b; }
_public static boolean _compare(_long _a, _long _b){
    System._out.println(“long”);
    return _a == b; }
_public static boolean _compare(_short _a, _short _b){
    System._out.println(“short”);
    return _a == b;}
_public static boolean _compare(_byte _a, _byte _b){
    System._out.println(“byte”);
    return a == b;}
    输出 int false 
总结:输出int 是因为JVM默认通过参数的数据类型调用匹配数据类型的方法
    参数类型10,20为int所以调用int方法,如果想调用其他方法需要对数据类型进行转换
方法的参数传递:
方法参数传递(基本类型)
对于基本类型数据的参数,形式参数的改变,不影响实际参数的值
基本类型参数传递只在栈内存中运行,没有存在堆内存中,所以不影响参数的值
public static void _main(String[] args) {    int _number =100;
    System._out.println(“调用方法change前” + number);
    change(number);
    System.out.println(“调用方法change前” + number); }
public static void _change(_int _number){ number =200;}
调用方法change前100
调用方法change前100
方法参数传递(引用类型)
对于引用类型的参数,形式参数的改变,影响实际参数的值
引用类型参数传递方法中存在堆内存和栈内存中运行,栈内存方法的数组在堆内存中
_public static void _main(String[] args) {
int[] 方法中存在堆内存{10,20,30}存在栈内存中生成栈内存地址
    _int[] arr = {10,20,30};
    System.out.println(“调用方法change前” + arr[1]);
    change(arr);
    System.out.println(“调用方法change前” + arr[1]); }
public static void _change(_int _arr[]){ arr[1] =200;}
调用方法change前20
调用方法change前200
方法参数传递
案例:数组遍历
需求:设计一个方法用于数组遍历,要求遍历的结果实在一行上的。例如:[11,22,33,44,55]
思路:
① 因为要求结果在一行上输出,所以使用新的输出语句System.out.print(“内容”)
System.out.print(“内容不换行”);
System.out.println(“内容换行”);
System.out.print();  // 可以对内容输出直接换行
 ② 定义一个数组,用静态初始化完成数组元素初始化
 ③ 定义一个方法,用数组遍历通用格式对数组进行遍历
 ④ 调用遍历方法
定义方法必须有两个明确:
    1、返回值类型:void    
 2、参数: int[] arr
_public static void _main(String[] args) {
    _int[] arr = {11,22,33,44,55};
    printArray(arr);  }
public static void _printArray(_int[] arr){
    System.out.print(“[“);
    for (int _i=0; i< arr.length; i++){
        _if (i == arr.length -1){
            System.out.print(arr[i]);
        }else {
            System.out.print(arr[i] + “, “);
        }
    }
    System.out.println(“]”);  }
案例:数组最大值
需求:设计一个方法用于获取数组中元素的最大值,调用方法并输出结果
思路:
① 定义一个数组,用静态初始化完成数组元素初始化
② 定义一个方法,用来获取数组中的最大值arr.Max();
③ 调用获取最大值的方法,用变量接收返回结构并输出
定义方法必须有两个明确:
    1、返回值类型:void    
 2、参数: int[] arr
public static void _main(String[] args) {
    _int[] arr = {11,22,33,44,55};
    int _numberMax = _printMax(arr);
    System.out.println(numberMax); }
public static int _printMax(_int[] arr){
    int _Max = arr[0];
   //使用增强for循环 遍历arr数组
   //遍历数组逻辑-> 定义变量Max为数组第一个数,循环遍历数组
   //依次比较数组中的数字,最后将最大值赋值给Max输出
    _for (int _i : arr) {
        _if (i > Max) {
            Max = i;
        }
    }
    _return _Max; }
 
                         
                                

