1、方法(method)

1.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 方法练习

  1. 需求:设计一个方法用于打印两个数中的较大数<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形参和实参:

  1. 形参:方法中定义的参数,等同于方法变量自定义的格式<br />_public static void _isEvenNumber(_int _number)<br />isEventNumber方法中的形参是: (_int _number) <br /> 实参:方法中调用的参数,等同于使用变量或常量 <br />_isEvenNumber_(5); _isEvenNumber_(number);<br /> 调用方法中的参数,实参就是5number<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 返回值的方法格式:

  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. 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; }