一 方法
方法(method)是程序中最小的执行单元
注意:
-
方法必须先创建才可以使用,该过程成为方法定义
-
方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用
二 方法的定义和调用
1 无参数方法定义和调用
-
定义格式:
public static void 方法名 ( ) { // 方法体; }
-
范例:
public static void playgame(){ System.out.println("a"); System.out.println("b"); System.out.println("c"); System.out.println("d");
-
调用格式:
方法名();
-
范例:
method();
-
注意:
方法必须先定义,后调用,否则程序将报错
练习
需求:定义一个方法,在方法内部定义两个变量。
求出他们的和并进行打印。
package com.wy.methoddemo;public class MethodDemo1 {
public static void main(String[] args) {
getsum();
}
public static void getsum(){
int num1=10;
int num2=20;
int result=num1+num2;
System.out.println(result);
}
}
2.带参数方法定义和调用
-
定义格式:
参数:由数据类型和变量名组成 - 数据类型 变量名
-
参数范例:
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);
package com.wy.methoddemo;
public class MethodDemo2 {
public static void main(String[] args) {
getsum(10,20);
}
public static void getsum(int num1,int num2){
int result=num1+num2;
System.out.println(result);
}
}
练习
需求:定义一个方法,求长方形的周长,将结果在方法中进行打印。
public class MethodDemo3 {
public static void main(String[] args) {
getlength(5.2,6.7);
}
public static void getlength(double len,double width){
double reslt=(len+width)*2;
System.out.println(reslt);
}
}
3.形参和实参
1.形参:方法定义中的参数
等同于变量定义格式,例如:int number
2.实参:方法调用中的参数
等同于使用变量或常量,例如: 10 number
4. 带返回值方法的定义和调用
-
定义格式
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.wy.methoddemo;
public class MethodDemo4 {
public static void main(String[] args) {
// //直接调用
// getSum(10,20,30);
// //赋值调用
// int sum=getSum(10,20,30);
// System.out.println(sum);
// //输出调用
// System.out.println(getSum(10,20,30));
//第一季度
int sum1=getSum(10,20,30);
//2
int sum2=getSum(10,20,30);
//3
int sum3=getSum(10,20,30);
//4
int sum4=getSum(10,20,30);
int sum=sum1+sum2+sum3+sum4;
System.out.println(sum);
}
public static int getSum(int num1,int num2,int num3){
int result=num1+num2+num3;
return result;
}
}
需求:
定义方法,比较两个长方形的面积。
package com.wy.methoddemo;
public class MethodDemo5 {
public static void main(String[] args) {
double area1=getArea(5.3,1.7);
double area2=getArea(2.4,2.7);
if(area1>area2){
System.out.println("第一个大");
}else{
System.out.println("第二个大");
}
}
public static double getArea(double len,double width){
double area=len*width;
return area;
}
}
5.注意
三 方法的重载
-
方法重载概念
方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载
-
多个方法在同一个类中
-
多个方法具有相同的方法名
-
多个方法的参数不相同,类型不同或者数量不同
-
练习
需求:使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long)
package com.wy.methoddemo;
public class MethodDemo6 {
public static void main(String[] args) {
compare((byte) 10,(byte) 20);
compare(10,20);
}
public static void compare(byte b1,byte b2){
System.out.println(b1==b2);
System.out.println("byte");
}
public static void compare(short s1,short s2){
System.out.println(s1==s2);
System.out.println("short");
}
public static void compare(int i1,int i2){
System.out.println(i1==i2);
System.out.println("int");
}
public static void compare(long n1,long n2){
System.out.println(n1==n2);
System.out.println("long");
}
}
四 练习
1.数组遍历
需求:设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[11, 22, 33, 44, 55]
package com.wy.methoddemo.test;
public class Test1 {
public static void main(String[] args) {
int[] arr={11,22,33,44,55};
printArr(arr);
}
public static void printArr(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("]");
}
}
2.
需求:设计一个方法用于获取数组中元素的最大值
package com.wy.methoddemo.test;
public class Test2 {
public static void main(String[] args) {
int[] arr={1,5,7,3,8,10};
int max = getMax(arr);
System.out.println(max);
}
public static int getMax(int[] arr){
int max=arr[0];
for (int i = 1; i < arr.length; i++) {
if(arr[i]>max){
max=arr[i];
}
}
return max;
}
}
3.
需求:定义一个方法判断数组中的某一个数是否存在,将结果返回给调用处
package com.wy.methoddemo.test;
public class Test3 {
public static void main(String[] args) {
int[] arr={1,5,3,6,99,36};
boolean flag=contains(arr,99);
System.out.println(flag);
}
public static boolean contains(int[] arr,int number){
for (int i = 0; i < arr.length; i++) {
if(arr[i]==number){
return true;
}
}
return false;
}
}
4.
需求:定义一个方法copyOfRange(int[] arr,int from, int to)
功能:将数组arr中从索引from(包含from)开始。到索引to结束(不包含to)的元素复制到新数组中。将新数组返回
package com.wy.methoddemo.test;
public class Test4 {
public static void main(String[] args) {
int[] arr={1,2,3,4,5,6,7,8,9};
int[] copyArr = copyOfRange(arr, 3, 7);
for (int i = 0; i < copyArr.length; i++) {//打印
System.out.print(copyArr[i]);
}
}
public static int[] copyOfRange(int[] arr,int from, int to){//动态定义数组:不知道元素
int[] newArr=new int[to-from];//拷贝
int index=0; //伪造索引
for (int i = from; i < to; i++) {
newArr[index]=arr[i];
index++;
}
return newArr;
}
}
五 方法的内存
局部变量
数组 new---》堆
总结