方法简介
方法是用来封装特定功能的代码块,为了提高代码的复用性。
学习方法主要就学习两点
1.方法的定义
2.方法的调用
方法的定义和调用
public class MethodDemo{
//主方法
public static void main(String[] args){
hairCut(); //调用剪头发的方法
hairCut(); //调用剪头发的方法
}
//自定义方法,剪头发方法
public static void hairCut(){
System.out.println("洗头发");
System.out.println("剪头发");
System.out.println("再洗头发");
System.out.println("吹头发");
System.out.println("付钱");
}
}
public class MethodDemo1{
//不管写多少个方法,第一个执行的永远是main方法
public static void main(String[] args){
show();
}
public static void function(){
System.out.println("fun...");
}
public static void study(){
System.out.println("study...");
function();
}
public static void show(){
System.out.println("show...");
study();
}
}
方法格式和调用练习
public class MethodDemo2{
public static void main(String[] args){
method();
}
//判断一个数是否为奇数或者偶数
public static void method(){
int a=10;
if(a%2==0){
System.out.println("偶数");
}else{
System.out.println("奇数");
}
}
}
方法的参数问题
给方法加上参数,可以让方法使用起来更加灵活。
public class MethodDemo3{
public static void main(String[] args){
method(20); //求20是奇数还是偶数
method(21); //求21是奇数还是偶数
int num=32;
method(num); //求32是奇数还是偶数
}
//判断一个数是否为奇数或者偶数
public static void method(int a){
if(a%2==0){
System.out.println("偶数");
}else{
System.out.println("奇数");
}
}
}
形式参数和实际参数
形式参数:定义方法时,小括号中的参数
实际参数:调用方法时,小括号中的参数
注意:形式参数和实际参数是一一对应的
参数类型和个数都要对应
打印输出n~m之间的所有偶数
public class MethodDemo4{
public static void main(String[] args){
print(1,10); //实际参数
System.out.println("------------");
print(20,30); //实际参数
}
//需求:打印输出n~m之间的所有偶数
public static void print(int n,int m){ //形式参数
for(int i=n;i<=m;i++){
if(i%2==0){
System.out.println(i);
}
}
}
}
方法的返回值
如果方法的执行结果需要交给调用者处理,就需要些返回值
public static 结果的数据类型 方法名(){
....
return 结果;
}
写一个方法,求长方形的面积
public class MethodDemo6{
public static void main(String[] args){
//求长宽分别是3和4的长方形的面积
int s1=rectArea(3,4);
System.out.println(s1);
//求长宽分别是3和4的长方形的面积
int s2=rectArea(10,20);
System.out.println(s2);
}
//写一个方法,求长方形的面积
public static int rectArea(int width,int height){
int area=width*height;
return area; //返回面积
}
}
写一个方法,求两个数的最大值
public class MethodDemo7{
public static void main(String[] args){
int min=getMin(3,4,5);
System.out.println("最小值为:"+min);
System.out.println("最小值:"+getMin(3,4,5));
}
//写一个方法,求三个数的最小值
public static int getMin(int a,int b,int c){
//先比较a和b的最小值
int min=a<b?a:b;
//求min和c的最小值
min=min<c?min:c;
return min;
}
}
方法的通用格式
修饰符 返回值类型 方法名(参数列表){
方法体;
return 返回值;
}
格式解析:
修饰符:目前来说是固定的 public static
返回值类型:结果的数据类型,如果没有返回值就写void
方法名:根据功能自己取的名字(见名知意)
参数列表:完成功能需要的数据
方法体:具体的功能代码
return : 结束方法,并带回返回值;
方法重载
方法重载指的是,在同一个类中,方法名相同,参数列表不同,与返回值无关。
public class MethodDemo7{
//求两个整数的和
public static int sum(int a,int b){
int s=a+b;
return s;
}
//求三个整数的和
public static int sum(int a,int b,int c){
int s=a+b+c;
return s;
}
}
public class MethodDemo8{
public static void main(String[] args){
long a=3000L;
long b=4000L;
boolean f=compare(a,b);
System.out.println(f);
}
//比较两个整数是否相同
public static boolean compare(byte a,byte b){
return a==b;
}
//比较两个整数是否相同
public static boolean compare(short a,short b){
return a==b;
}
//比较两个整数是否相同
public static boolean compare(int a,int b){
return a==b;
}
//比较两个整数是否相同
public static boolean compare(long a,long b){
return a==b;
}
//比较两个整数是否相同
public static boolean compare(float a,float b){
return a==b;
}
//比较两个整数是否相同
public static boolean compare(double a,double b){
return a==b;
}
}
方法参数类型的问题
1.方法的参数是基本数据类型
形式参数的改变对实际参数没有影响
2.方法的参数是引用数据类型
实际参数传递的就是地址
方法练习
- 按照格式打印输出数组中的元素
//打印格式:[1, 2, 3, 4, 4, 5]
public class MethodDemo8{
public static void main(String[] args){
int[] arrayA={1,2,3,4,5}; //地址1
printArray(arrayA);
int[] arrayB={10,20,30,40,50}; //地址2
printArray(arrayB);
}
public static void printArray(int[] array){
//0.先无条件打印一个[, 不换行
System.out.print("[");
//1.遍历数组
for(int i=0;i<array.length;i++){
//2.打印数组中的元素
if(i==array.legnth-1){
//如果是最后一个元素,输出 元素+"]“,换行
System.out.println(array[i]+"]");
}else{
//如果不是最后一个元素,输出 元素+", ",不换行
System.out.print(array[i]+", ");
}
}
}
}
- 写一个方法,求数组中元素的最大值
//抽取方法的快捷键:ctrl+al+m
public class MethodTest5 {
public static void main(String[] args) {
int[] arrayA={1,2,4,45,5,7,8,4,5};
int max = getMax(arrayA);
System.out.println("数组的最大值为:"+max);
}
public static int getMax(int[] array) {
int max=array[0];
for (int i = 1; i < array.length; i++) {
if(array[i]>max){
max=array[i];
}
}
return max;
}
}
在一个方法中,同时求最大值和最小值,并返回
public class MethodTest6 {
public static void main(String[] args) {
int[] array={1,2,4,45,5,7,8,4,5};
//调用方法
int[] result = getMaxAndMin(array);
System.out.println("数组的最大值为:"+result[0]);
System.out.println("数组的最小值为:"+result[1]);
}
public static int[] getMaxAndMin(int[] array) {
//求数组的最大值
int max=array[0];
for (int i = 1; i < array.length; i++) {
if(array[i]>max){
max=array[i];
}
}
//求数组的最小值
int min=array[0];
for (int i = 1; i < array.length; i++) {
if(array[i]<min){
min=array[i];
}
}
//把最大值和最小值,存入一个数组中中
int[] result={max,min};
//把数组返回
return result;
}
}