Java零基础-06-方法

目录

1.方法概念

2.语法结构

2.1注意点

2.2如何来调用方法

3.方法的调用

4.定义方法来实现两个数的交换。

5.方法的重载

5.1方法的重载需要满足的条件

5.2编译器如何来识别方法是不是同一个?

5.3重载应用

6.方法的递归


1.方法概念

方法是用来执行特定功能的代码片段。
方法作用:代码变简洁,代码可以复用

public class Test01_Method{
	public static void main(String[] args){
		/*
		//需求1:计算100+200的和。
		int a=100;
		int b=200;
		int sum=a+b;
		System.out.println(sum);

		//需求2:计算150+250的和。
		int a1=150;
		int b1=250;
		int sum1=a1+b1;
		System.out.println(sum1);

		//需求3:计算650+450的和。
		int a2=150;
		int b2=250;
		int sum2=a2+b2;
		System.out.println(sum2);
		*/

		/*
		缺点:代码高度重复了---》复用性差,不够简洁,
		*/
		//需求3:计算23+45的和。  68
		add(23,45);
		add(100,200);
		add(150,250);
		add(650,450);


	}

	//定义方法:功能就是实现两个整数的和
	public static void add(int x,int y){
		int a=x;
		int b=y;
		int sum=a+b;
		System.out.println(sum);
	}
}

2.语法结构

[修饰符列表] 返回值类型 方法名([形参列表]){
      方法体;//是由代码块组成的。
 }

说明:

1.[]里面的内容的不是必须,目前修饰符列表的内容先默认写成public static
2.返回值类型
     返回值--》返回的结果
     1)有返回值
       基本数据类型byte shrot int long float double boolean char
       引用数据类型(String))
     2)没有返回值
       void--->空的-- 

3.方法名---》首字母小写,后面遵循驼峰标志
4.形参列表:形式参数列表
      (int a,int b,boolean b.....)
5.方法体:----》返回值类型联系起来
      return 返回
      1)对于有返回值:方法体的最后一定要有一个带数据的返回语句: return 数值;
         return 数值;---》这里面数值的类型一定要和你返回值类型匹配的。
         public static int add(){
             ....
             byte a;
             return "a";
         }
      2)没有有返回值:方法体的最后一定可以有一个返回语句: return;(可以省略不写)
         return 数值;---》这里面数值的类型一定要和你返回值类型匹配的。
         public static void add(){
             ....
             byte a;
             return;
         }
    //定义方法:功能就是实现两个整数的和
    public static void add(int x,int y){
        int a=x;
        int b=y;
        int sum=a+b;
        System.out.println(sum);
    }

2.1注意点

方法定义在哪?---》定义类体里面
方法不能嵌套,方法和方法永远都是并列的关系(main方法也是方法是程序的入口)--->方法内部可以继续来调其它方法
main方法是特殊的方法,是专门有JVM来调用
方法不会自动执行的--》要想执行,只能去调用

2.2如何来调用方法

public static void add(int x,int y)
Test02_Method.add(3,4);//方法调用

 int x,int y--->形参列表
 3,4--------》实参列表

public class Test02_Method{
	//定义方法:功能就是实现两个整数的和
	public static void add(int x,int y){
		int a=x;
		int b=y;
		int sum=a+b;
		//int c=11/0;//Exception in thread "main" java.lang.ArithmeticException: / by zero
		System.out.println(sum);
	}
	//特殊的方法,是程序的入口---》main方法是JVM调
	public static void main(String[] args){
		System.out.println("main进来了,开始执行");
		//方法的调用
		Test02_Method.add(3,4);
		add(3,40);//当调用的add方法就在当前类下的时候,类名可以省略。
	}

    /*错误-->方法不能嵌套
	public static void m1(){
	    public static void m2()
	}
	*/
}

3.方法的调用

1.定义方法打印3行四列的长方形。
2.定义方法判断一个数的奇偶性,在屏幕上打印奇数还是偶数
   public static void  pdJiOu(int num)
3.定义一个方法,求两个数小数的和并打印。
  定义一个方法,求两个数小数的和并返回。
4.定义一个方法判断一个数是否为素数,如果是素数返回true ,不是素数返回false

public class Test03_Method{

	public static void main(String[] args){
		//无参无返回值
		Test03_Method.printLX();
		//有参无返回值
		//pdJiOu(3.14);//不兼容的类型: 从double转换到int可能会有损失
		pdJiOu(23);
		addXiaoshu(3.14,3.5f);//错误: 不兼容的类型: 从double转换到float可能会有损失
		//System.out.println(addXiaoshu(3.14,3.5f));// 错误: 此处不允许使用 '空' 类型

		//有参有返回值的
		double dd=addXiaoshu1(3.14,3.5f);
		System.out.println("调用有参有返回值的==1="+dd);
		System.out.println("调用有参有返回值的==2="+addXiaoshu1(3.14,3.5f));

		isSu(97);
		boolean b=isSu(97);
		System.out.println("调用有参有返回值的==3="+b);
	}

	//定义一个方法判断一个整数是否为素数,如果是素数返回true ,不是素数返回false
	public static boolean isSu(int x){
		boolean b=true;
		for(int i=2;i<x/2;i++){
			if(x%i==0){
				b=false;
			}
		}
		return b;
	}

	//求两个数小数的和并并返回。
	public static double addXiaoshu1(double x,float y){
		
		System.out.println(x+y);//错误: 无法访问的语句
		return x+y;
	}

	//求两个数小数的和并打印。
	public static void addXiaoshu(double x,float y){
		System.out.println(x+y);
	}

	//定义菱形  有参无返回值
	public static void  pdJiOu(int num){
		if(num%2==0){
			System.out.println(num+"是偶数");
		}else{
			System.out.println(num+"是奇数");
		}
	
	}
	//定义菱形  有参无返回值
	public static void printLX(){
		for(int i=0;i<3;i++){
			for(int j=0;j<4;j++){
				System.out.print("*");
			}
			System.out.println();
		}	
	}
}

4.定义方法来实现两个数的交换。

public class Test04_Method{
	public static void main(String[] args){
		int a=10;
		int b=20;
		System.out.println("a="+a+";b="+b);//a=10;b=20
		jiaohuan(a,b);
		System.out.println("a="+a+";b="+b);//a=10;b=20

	}

	//定义方法来实现两个数的交换
	public static void jiaohuan(int a,int b){
		int tem=a;
		a=b;
		b=tem;
		System.out.println("方法内的a="+a+";b="+b);//a=20;b=10
		m1();

	}

	public static void m1(){
	}
}

5.方法的重载

5.1方法的重载需要满足的条件

  1.都在同一个类里面
  2.方法名相同
  3.形参列表不同
      形参的个数不同
      形参的类型不同
      形参的顺序不同

5.2编译器如何来识别方法是不是同一个?

    1)方法名
    2)形参列表
    3)和返回值类型没有任何关系
    重载--》调用过程中关注就是: 方法名([实参列表])
    ******重载可以理解编译时的多态

5.3重载应用

    有类似功能的时候用方法的重载
    调用方法的时候不需要记里面的具体形参,只需要记住一个方法名就可以了
    面积周长   Mian 

public class Test05_Method{
	public static void main(String[] args){
		add(3,4);
		add(5,7);	

		add(3.14,3.14);
		add();
		add(4,5,6);
		add(4,5.6);
		add(4.7,5);


	}

	//两个整数相加方法
	public static void add(){
		System.out.println("调用的是无参的add方法");
	}
	public static void add(int a,int b){
		System.out.println("两个整数相加和"+(a+b));
	}
	public static void add(int a,int b,int c){
		System.out.println("三个整数相加和"+(a+b+c));
	}

	public static void add(double a,double b){
		System.out.println("两个小数相加和"+(a+b));
	}

	public static void add(int a,double b){
		System.out.println("整数和小数相加和"+(a+b));
	}
	
	public static void add(double a,int b){
		System.out.println("小数和整数相加和"+(a+b));
	}

    /*编译的时候错误: 已在类 Test05_Method中定义了方法 add(double,int)*/
	/*public static void add(double x,int y){
		System.out.println("小数和整数相加和"+(a+b));
	}*/

    /*错误: 已在类 Test05_Method中定义了方法 add(double,int)*/
	public static int add(double a,int b){
		System.out.println("小数和整数相加和"+(a+b));
		return (int)(a+b);
	}
	
}

6.方法的递归

方法:实现6!=6*5*4*3*2*1累积 

方法一:

//方法:实现6!=6*5*4*3*2*1累积   1+2+3+....+6累加
	public static int JieCheng1(int n){
		int sum=1;
		for(int i=1;i<=n;i++){
			sum*=i;
		}
		return sum;
	}

方法二:递归

   6!=1*2*3*4*5*6
   6!=5!*6=f(5)*6
   5!=4!*5=f(4)*5
    .....
   2!=f(2-1)*2
   n!=f(n)=f(n-1)*n=

public static int JieCheng(int n){
		System.out.println("jiecheng方法进来了");
		if(n==1){
			return 1;
		}
		int res=JieCheng(n-1)*n;
		System.out.println("jiecheng方法出来了");
		return res;
}

递归:自己调自己,但有结束方法的条件,否则造成死循环--》内存溢出,程序崩了

写递归的时候的bug
Exception in thread "main" java.lang.StackOverflowError
--StackOverflowError栈内存溢出错误

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值