CodeGym /Java 博客 /随机的 /Java 方法
John Squirrels
第 41 级
San Francisco

Java 方法

已在 随机的 群组中发布
Java 中的变量和常量存储值,而方法包含一组执行某些操作的运算符。也就是说,Java 中的方法确定对象的行为并对某些变量执行操作。他们可以执行操作,并产生一定的结果。

Java 中的方法是什么?

方法定义对象的行为,并且是允许您在程序中执行某些操作的命令序列。在其他编程语言中,方法通常被称为“函数”,这是正确的。事实上,方法就是数学意义上的函数。通常向方法的输入提供一些东西(一些变量),这些变量由一系列命令处理,然后方法产生结果。您很可能已经遇到过方法,至少是public static void main(String[] args)。该方法通常启动 Java 程序的执行。

Java中如何声明方法?

Java 中的所有方法都是在类内部创建的。它们声明如下:
accessSpecifier ReturnType name (parameter list) {
//method body
}
例如:
public int addTwoNumbers (int a, int b){

//method body
return}
其中public是访问说明符,int是方法返回的变量类型,addTwoNumbers是方法的名称,ab是方法的参数。让我们更详细地看一下。 访问说明符用于定义方法的访问类型。它们可以如下:
  • public:任何类都可以访问该方法。

  • private:在定义它的类中可以访问。

  • protected:访问仅在包内或另一个包中的其他子类中可用。

  • default:可以从声明它的包中进行访问。在这种情况下,不写“默认”一词。

返回类型定义此方法返回的类型。在上面的例子中,int是返回类型。如果方法不返回任何内容,则返回类型为 void:
public void printSomething (String myString) {}
方法名称是您的方法的唯一名称。我们将在本文稍后解释一些 Java 命名规则。在上面的方法中,名称是addTwoNumbersprintSomething参数列表是方法采用的参数列表(数据类型和变量名称)。在上面的第一个示例中,“int a, int b”是参数,在第二个示例中,String myString是参数。如果您不想在方法中使用任何参数,也可以将此字段留空。

方法参数示例

public void printSomething (String myParameter1, int myParameter2) {}
这里有两个变量myParameter1myParameter2。它们是方法参数。是方法将执行的用大括号括起来的指令集。如果方法的返回类型不是void,则return关键字必须出现在方法体中。return后面跟着该方法返回的参数。因此,要创建方法,您需要在括号中指定其名称,并在括号中指定该方法将操作的变量(如有必要)。方法名称之前是访问说明符和该方法返回的变量的类型,如果该方法不返回任何内容,则为 void。在大括号中,我们编写实际的方法,这是最常与方法的参数一起使用的指令序列。下面是一个方法的示例,该方法查找数组中的最大数字并返回它。
public int findBiggest(int[] numbers) {
   int max;
   max = numbers[0];
   for (int i = 1; i < numbers.length; i++) {
       if (max < numbers[i]) {
           max = numbers[i];
       }
   }
   return max;
}

如何命名方法?

命名方法没有严格的规则,但如果您打算用 Java 进行专业开发,则应该遵循一些准则。方法名称通常是动词,以混合大小写形式编写,以小写字母开头,但随后的每个单词使用大写字母(驼峰式命名法)。这里有些例子:
int addTwoNumbers (int a, int b)
void run()

如何调用方法

要调用一个方法,只需写下它的名称并设置相应的变量(如果它们在声明中)就足够了。我们在main方法中调用findBiggest方法:
public static void main(String[] args) {
  int[] array = new int[] {5, 7, -2, 6, 7, 1};
  int max = findBiggest(array);
   System.out.println("the biggest number in array is: " + max);
  }
该程序的输出是:
数组中最大的数字是:7

Java 中不同类型的方法

在Java中,一切都是由对象组成的,对象的行为是由方法定义的。按照惯例,我们可以说Java有预定义的方法和用户定义的方法。预定义方法是包含在属于 Java 语言本身的类中的方法。

预定义方法

Java 中内置了预定义或标准库方法。当然,每个程序员都可以在自己的程序中使用它们,甚至可以在本地修改它们。Java 类库位于具有 Java 虚拟机 (JVM) 和 Java 运行时环境的 Java 归档文件(例如 *jar)中。例如,这些可以是Math类的方法,例如min()max()abs()或者像concat()这样的字符串操作方法。让我们创建一个带有main方法的类并调用几个标准库方法。
import static java.lang.Math.max;

public class Test {

    public static void main(String[] args) {
       int a = 5;
       int b = 7;
       int max = max(a,b);
       System.out.println(max);
       String str1 = "I am ";
       String str2 = "here ";
       String str3 = str1.concat(str2);
       System.out.println(str3);


   }

}
请注意,为了使用Math类的方法,必须在程序开头导入它。如果没有这样做,您可以在方法名称之前写上类名称,并用点分隔:
int max = Math.max(a,b);

用户定义的方法

这些方法是程序员根据其项目的要求创建的。实际上,我们上面已经创建了用户定义的findBiggest()方法。为了进行巩固,让我们创建另一个方法,它不返回任何内容,也没有参数,但会响应输入的名称并打招呼(即输出到控制台)。
import java.util.Scanner;

public class Test {

   public void repeater() {
       Scanner scanner = new Scanner(System.in);
       System.out.println("WHat should I repeat after you?...");
       String s =  scanner.nextLine();
       System.out.println(s);
   }
}

在 Java 中创建静态方法

一般来说,Java中的方法是对象的方法。要调用方法,您需要创建定义该方法的类的实例。然而,也有静态方法。它们与常规的不同之处在于它们附加到类,而不是对象。静态方法的一个重要属性是它只能访问静态变量/方法。它们是使用static关键字定义的。因此,在Math类中,所有处理变量的方法都是静态的。我们可以创建类似于Math类的东西,并在其中收集几个静态方法,这些方法可以在不创建包含类的实例的情况下使用。我们称之为Numbers
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;


public class Numbers {


   public static int findMax(int left, int right) {
       return (left < right) ? right : left;

   }


   public static boolean isNegative(int number) {
       return number < 0;
   }

   public static long power(long number, int deg) {

       if (deg == 0) {
           number = 1;
           return number;
       } else {
           number = power(number, deg - 1) * number;
           return number;
       }
   }

   public static long abs(long number) {
       return number > 0 ? number : -number;
     }


    public static void main(String[] args) {

       int a = 5;
       int b = 7;
       long c = -7;
       long abs = abs(c);
       System.out.println(abs);
       System.out.println(findMax(a,b));

   }

}
程序的输出在这里:
7 7
首先,调用一个方法来查找数字的绝对值,然后调用一个方法来查找两个数字中较大的一个。您不需要创建Numbers类的实例来调用这些方法,因为这两个方法都定义为静态的。

在 Java 代码中应用实例方法

可以在定义该方法的类的实例上调用实例方法或常规方法。
public class Cat implements Voice{
   String name;
   String breed;
   int year;


   public void talk() {
       System.out.println("meow meow");
   }
}
要调用talk()方法,您需要创建Cat类的实例:
public class Demo {
   public static void main(String[] args) {
       Cat cat = new Cat ();
       cat.talk();

   }
}
该程序的输出在这里:
喵喵

Java 中的抽象方法

Java 中的抽象方法是没有实现的方法。也就是说,它们在声明时不包含代码。它们只能在抽象类中声明并在其非抽象后代中实现。让我们使用一个抽象方法myMethodAdd()创建一个抽象类。
abstract class DemoAbs {
   abstract void myMethodAdd();
}
现在让我们创建这个抽象类的子类DemoAbs。这里我们必须实现myMethodAdd()方法。
public class myClass extends DemoAbs {

   void myMethodAdd() {
       System.out.println("hello");
   }

   public static void main(String[] args) {
       DemoAbs demoAbs = new myClass();
       demoAbs.myMethodAdd();
   }
}

方法调用的内存分配

这是一个相当复杂的话题,需要更仔细的分析。这里我们只提及最基本的内容,以便对这个主题有一个粗浅的了解。JVM 内存由堆和栈区域组成。堆是存储 Java 对象的内存区域。堆栈内存是存储原始变量和对方法对象的引用的临时内存区域。堆栈内存包含取决于方法的短期值。这种类型的内存基于后进先出 (LIFO) 原则。当我们调用一个方法时,堆栈内存会创建一个新块。它包含本地原始值。当我们终止一个方法时,在堆栈内存中创建的块将变为空闲。

结论

在本文中,我们了解了在 Java 语言中创建方法的基础知识,以及 Java 中有哪些方法以及如何使用它们。我们了解到方法决定类的行为。如果没有方法,对象就不可能相互交互。 为了巩固您所学到的知识,我们建议您观看我们的 Java 课程中的视频课程
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION