JAVA那些事(三)方法

目录:

方法声明

方法调用

 参数传递

递归

正文:

方法是完成特定功能的、相对独立的程序段。方法一旦定义,就可以在不同的程序段中多次调用

方法声明

格式;

[修饰符] 返回值类型 方法名 [(参数表)]
{
   声明部分
   语句部分
}
  • 方法在Java中通过关键字 void 或者一个具体的返回类型、方法名、参数列表和方法体来定义。
  • 方法的返回类型表示方法执行后返回的结果的数据类型,如果方法不返回任何值,则使用 void 关键字。
  • 方法名是标识方法的唯一名称,遵循Java的命名规则。
  • 参数列表是一个逗号分隔的变量列表,这些变量被称为形式参数或简称参数,它们用于接收调用方法时传递的实际值。
  • 参数表指定在调用该方法时,应该传递的参数的个数和数据类型
  • 对于有返回值的方法,其方法体中至少有一条return语句。
  • 方法声明不能嵌套,即不能在方法中再声明其它的方法。
  • 修饰符可以是公共访问控制符public、私有访问控制符private、保护访问控制符 protected
    • Java提供了四种访问修饰符:publicprotectedprivate 和默认(无修饰符)
    • public 表示方法可以在任何类中被访问。
    • protected 表示方法可以在同一个包中的其他类以及不同包中的子类中被访问。
    • private 表示方法只能在定义该方法的类中被访问。
    • 如果没有指定访问修饰符,默认为包访问权限,表示方法只能在同一个包中的类中被访问。

e,g

public int addNumbers(int a, int b) {
    int sum = a + b;
    return sum;
}

方法调用

  • 调用方法是指在程序中使用方法名和适当的参数列表来执行方法的功能。
  • 方法调用通常发生在主程序或其他方法中,通过将方法名、括号和传递给方法的实际参数值组合在一起。
int result = addNumbers(3, 5);
System.out.println("The sum is: " + result);

方法语句,即以独立语句的方式调用方法。

class AreaC
  {  static void area(int  a , int  b )
     {
        int s; 
        s = a * b;     
        System.out.println(s);  
     }
     public static void main(String[] args)
     {  
        int x = 5;
        int y=3;  
        area(x, y);   
     }
  } 

 参数传递

在调用一个带有形式参数的方法时,必须为方法提供实际参数,完成实际参数与形式参数的结合,称为参数传递,然后用实际参数执行所调用的方法体

  • 方法可以有零个、一个或多个参数,每个参数都有其自己的数据类型和名称。
  • 方法可以返回一个值,也可以不返回值。如果没有返回值,方法的返回类型必须是 void
  • 如果方法有返回值,那么在方法体中需要使用 return 关键字返回一个与返回类型匹配的值。

Java中,对于基本数据类型以及字符串,参数传递是以传值的方式进行,即将实际参数的值传递给形式参数。

而对于引用数据类型(除去字符串),参数传递传的是地址。

结论:

² 1 基本类型以及 String 类作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的;
²
² 2 引用类型(包括数组,对象以及接口)作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。

递归

递归涉及到一个方法在其定义中直接或间接地调用自身。递归通常用于解决那些可以通过相同的操作重复应用来求解的问题,每次应用都会将问题规模逐渐减小,直到达到一个基本情况(也称为递归基),可以直接得出结果。

递归的基本结构:

  • 直接递归:方法直接调用自身。
  • 间接递归:一个方法调用另一个方法,而那个方法又调用了原始的方法。

递归的基本要素:

  • 基本情况(Base Case):这是递归过程的终止条件,当满足这个条件时,递归不再继续,而是返回一个确定的结果。
  • 递归情况(Recursive Case):这是递归过程中调用自身的情况,通常会包含一个问题规模更小的版本。

递归过程:

  • 当调用一个递归方法时,它首先检查是否满足基本情况。如果满足,就直接返回结果。
  • 如果不满足基本情况,方法会继续执行递归情况,通常通过调用自身并传递不同的参数来减小问题的规模。
  • 这个过程会一直持续下去,直到达到基本情况为止。

e,g采用递归算法求n!

public class Factorial{
	public static long fac(int n){
		if(n<=1) return 1;
		else return fac(n-1)*n;		
	}
	public static void main(String[] args){
	    int k  ;
	    long f;
	    k = Integer.parseInt(args[0]);
	    f = fac(k);
	    System.out.println(f);
	 }
}

你可能感兴趣的:(JAVA,java,开发语言)