JAVA基础学习20171119-方法

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

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值