方法(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);
}
}