JAVA基础学习20171119-方法

来源:互联网 发布:最简单的java web项目 编辑:程序博客网 时间:2024/06/11 01:05

1.什么是方法
所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。

2.方法的声明
语法格式:
访问修饰符 返回类型 方法名(参数列表){
方法体
}

3.方法分类
无参无返回值方法
无参带返回值方法
带参无返回值方法
带参带返回值方法

4.无参无返回值方法
例:一行打印输出一串星号
代码:

package com.imooc.method;import java.util.Scanner;public class MethodDemo {    //打印输出星号的方法    public void printStar(){        System.out.println("********************");    }    public static void main(String[] args){        MethodDemo myMethodDemo=new MethodDemo();        myMethodDemo.printStar();        System.out.println("********************");        System.out.println("欢迎来到Java的世界");        System.out.println("********************");        myMethodDemo.printStar();    }}

5.无参数有返回值方法
例:求长方形的面积
代码:

package com.imooc.method;public class Rectangle {    //求长方形面积的方法    public int area(){        int length=10;        int width=5;        int getArea=length*width;        return getArea;//返回语句    }    public static void main(String[] args){        Rectangle rc=new Rectangle();        System.out.println("长方形的面积为:"+rc.area());    }}

6.有参无返回值的方法
例:定义一个求两个float类型数据最大值得方法,在方法中将最大值打印输出
代码:

package com.imooc.method;public class MaxDemo {    //求最大值的方法    public void max(float a,float b){        float max;        if(a>b){            max=a;        }else{            max=b;        }        System.out.println("两个数"+a+"和"+b+"的最大值为:"+max);         }    public static void main(String[] args){        MaxDemo maxDemo=new MaxDemo();        float m=7.5f,n=8.9f;        maxDemo.max(m,n);        maxDemo.max(7.8f,41.8f);    }}

7.有参有返回值的方法
例:定义一个求n!的方法,然后求1!+2!+3!+4!+5!
代码:

package com.imooc.method;import java.util.Scanner;public class Factorial {    //定义方法求n的阶乘和    public int fac(int n){        int sum2=0;        for(int i=1;i<=n;i++){            int sum1=1;            for(int j=1;j<=i;j++){                sum1=sum1*j;            }            sum2=sum2+sum1;        }        return sum2;    }    public static void main(String[] args){        //输入一个整数n        System.out.println("请输入一个整数n:");        int n;        Scanner sc=new Scanner(System.in);        n=sc.nextInt();        //调用方法求n的阶乘和        Factorial factorial=new Factorial();        System.out.println(n+"的阶乘和为:"+factorial.fac(n));    }}

代码:

package com.imooc.method;public class FacDemo {    //方法不能嵌套定义    //求阶乘的方法    public int fac(int n){        int s=1;        for(int i=1;i<=n;i++){            s*=i;//s=s*i;        }        return s;    }    public static void main(String[] args){        FacDemo facDemo=new FacDemo();        int fac=facDemo.fac(3);        System.out.println("3!="+fac);        //求1!+2!+3!+4!+5!        int sum=0;        for(int i=1;i<=5;i++){            sum=sum+facDemo.fac(i);         }        System.out.println("1!+2!+3!+4!+5!="+sum);    }}

8.数组作为方法参数
例:定义方法,打印输出数组元素的值。
Public void printArray(int[] arr){}
代码:

package com.imooc.method;public class ArrayMethod {    //打印输出数组元素的值    public void printArray(int[] arr){        for(int i=0;i<arr.length;i++){            System.out.print(arr[i]+" ");        }        System.out.println();    }    public static void main(String[] args){        int[] arr={10,20,30,40,50};        ArrayMethod am=new ArrayMethod();        am.printArray(arr);    }}

例:查找数组元素的值
public boolean search(int n,int[] arr){}
代码:

package com.imooc.method;import java.util.Scanner;public class ArraySearch {    //查找数组元素值的方法    public boolean search(int n,int[] arr){        boolean flag=false;//默认没找到        for(int i=0;i<arr.length;i++){            if(arr[i]==n){                flag=true;//找打了                break;            }        }        return flag;    }    public static void main(String[] args){        int[] arr1={10,20,30,40,50,60};        System.out.println("请输入要查找的数据:");        Scanner sc=new Scanner(System.in);        int n1=sc.nextInt();        ArraySearch as=new ArraySearch();        boolean flag=as.search(n1, arr1);        if(flag){            System.out.println("找到了!");        }else{            System.out.println("没找到!");        }    }}

9.方法重载
方法名相同,参数列表不同
代码:

package com.imooc.method;public class MathDemo {    //求连个int类型数的和    public int plus(int m,int n){        return m+n;    }    //求两个double类型数的和    public double plus(double m,double n){        return m+n;    }    //求数组元素的累加和    public int plus(int[] arr){        int sum=0;        for(int i=0;i<arr.length;i++){            sum=sum+arr[i];        }        return sum;    }    public static void main(String[] args){        int m=5,n=10;        int[] arr={1,2,3,4,5,6};        MathDemo mathDemo=new MathDemo();        System.out.println("int类型的和:"+mathDemo.plus(m, n));        System.out.println("double类型的和:"+mathDemo.plus(1.1,2.2));        System.out.println("数组元素的和:"+mathDemo.plus(arr));    }}

10.基本数据类型的传值
例:对两个变量的值进行交换并打印输出
代码:

package com.imooc.method;public class ExchangeDemo {    public void swap(int a,int b){        int temp;        System.out.println("交换前:a="+a+",b="+b);        temp=a;a=b;b=temp;        System.out.println("交换后:a="+a+",b="+b);    }    public void swapTest(){        int m=1,n=3;        System.out.println("交换前:m="+m+",n="+n);        swap(m, n);        System.out.println("交换后:m="+m+",n="+n);         }    public static void main(String[] args){        int m=4,n=5;        ExchangeDemo ed=new ExchangeDemo();        System.out.println("交换前:m="+m+",n="+n);        ed.swap(m, n);        System.out.println("交换后:m="+m+",n="+n);        ed.swapTest();    }}

代码:

package com.imooc.method;public class ExchangeDemo1 {    public void add(int n){        n++;        System.out.println("方法中n="+n);    }    public static void main(String[] args){        int n=10;        System.out.println("方法调用前n的值:"+n);        ExchangeDemo1 ed=new ExchangeDemo1();        ed.add(n);        System.out.println("方法调用后n的值:"+n);    }}

11.数组的传值
代码:

package com.imooc.method;public class ArrayDemo {    //定义一个用于修改数组元素值得方法    public void updateArray(int[] a){        a[3]=15;        System.out.println("数组a的元素为:");        for(int n:a){            System.out.print(n+"   ");        }        System.out.println();    }    public static void main(String[] args){        ArrayDemo ad=new ArrayDemo();        int[] a1={1,2,3,4,5};        System.out.println("方法调用前数组a1的元素为:");        for(int n:a1){            System.out.print(n+"   ");        }        System.out.println();        ad.updateArray(a1);        System.out.println("方法调用后数组a1的元素为:");        for(int n:a1){            System.out.print(n+"   ");        }    }}

12.可变参数列表
例:public void sum(int… n){}
代码:

package com.imooc.method;public class ArgsDemo {    public void sum(int... n){        int sum=0;        for(int i:n){            sum=sum+i;        }        System.out.println("sum="+sum);    }    public static void main(String[] args){        ArgsDemo ad=new ArgsDemo();        ad.sum(1);        ad.sum(1,2);        ad.sum(1,2,3,4);    }}

代码:

package com.imooc.method;public class ArgsDemo1 {    //查找    public void search(int n,int... a){        boolean flag=false;        for(int a1:a){            if(a1==n){                flag=true;break;            }        }        if(flag){            System.out.println("找到了!"+n);        }else{            System.out.println("没找到!"+n);        }    }    public static void main(String[] args){        ArgsDemo1 ad1=new ArgsDemo1();        ad1.search(3,1,2,3,4,5);        int[] a={1,2,3,4,5};        ad1.search(3, a);    }}

13.可变参数列表作为方法参数的重载问题
代码:

package com.imooc.method;public class ArgsDemo3 {    //可变参数列表所在的方法是最后被访问的。    public int plus(int a,int b){        System.out.println("不带可变参数的方法被调用!");        return a+b;    }    public int plus(int... a){        int sum=0;        for(int n:a){            sum=sum+n;        }        System.out.println("带可变参数的方法被调用!");        return sum;    }    public static void main(String[] args){        ArgsDemo3 ad=new ArgsDemo3();        System.out.println(ad.plus(6,7));        System.out.println("和为:"+ad.plus(1,2));    }}
原创粉丝点击