亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java - 方法

Java 方法是一组语句,它们组合在一起以执行操作。当您调用 System.out.println() 方法,例如,系统实际上执行了几条语句,以便在控制台上显示一条消息。

现在您将学习如何创建自己的带或不带返回值的方法,调用带或不带参数的方法,以及在程序设计中应用方法抽象。

制作方法

考虑以下示例来解释方法的语法 -

语法

public static int methodName(int a, int b) {
   // body
}

在这里,

方法定义由方法头和方法体组成。以下语法中显示了相同的内容 -

语法

modifier returnType nameOfMethod (Parameter List) {
   // method body
}

上面显示的语法包括 -

示例

这是上面定义的方法的源代码 min() .该方法接受两个参数 num1 和 num2 并返回两者之间的最大值 -

/** the snippet returns the minimum between two numbers */

public static int minFunction(int n1, int n2) {
   int min;
   if (n1 > n2)
      min = n2;
   else
      min = n1;

   return min; 
}

方法调用

为了使用一个方法,它应该被调用。调用方法有两种方式,即方法返回值或不返回值(无返回值)。

方法调用的过程很简单。当程序调用方法时,程序控制权转移到被调用方法。这个被调用的方法然后在两种情况下将控制权返回给调用者,当 -

返回 void 的方法被视为对语句的调用。让我们考虑一个例子 -

System.out.println("This is tutorialspoint.com!");

方法返回值可以通过下面的例子来理解 -

int result = sum(6, 9);

以下是演示如何定义方法以及如何调用它的示例 -

示例

现场演示
public class ExampleMinNumber {
   
   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      int c = minFunction(a, b);
      System.out.println("Minimum Value = " + c);
   }

   /** returns the minimum of two numbers */
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

这将产生以下结果 -

输出

Minimum value = 6

void 关键字

void 关键字允许我们创建不返回值的方法。在这里,在下面的示例中,我们正在考虑一个 void 方法 methodRankPoints .该方法是一个 void 方法,它不返回任何值。调用 void 方法必须是语句,即 methodRankPoints(255.7); .它是一个以分号结尾的 Java 语句,如下例所示。

示例

现场演示
public class ExampleVoid {

   public static void main(String[] args) {
      methodRankPoints(255.7);
   }

   public static void methodRankPoints(double points) {
      if (points >= 202.5) {
         System.out.println("Rank:A1");
      }else if (points >= 122.4) {
         System.out.println("Rank:A2");
      }else {
         System.out.println("Rank:A3");
      }
   }
}

这将产生以下结果 -

输出

Rank:A1

按值传递参数

在调用进程下工作时,要传递参数。这些应该与方法规范中它们各自的参数的顺序相同。参数可以传值也可以传引用。

按值传递参数意味着调用带有参数的方法。通过这个,参数值被传递给参数。

示例

以下程序显示了按值传递参数的示例。即使在方法调用之后,参数的值也保持不变。

现场演示
public class swappingExample {

   public static void main(String[] args) {
      int a = 30;
      int b = 45;
      System.out.println("Before swapping, a = " + a + " and b = " + b);

      // Invoke the swap method
      swapFunction(a, b);
      System.out.println("\n**Now, Before and After swapping values will be same here**:");
      System.out.println("After swapping, a = " + a + " and b is " + b);
   }

   public static void swapFunction(int a, int b) {
      System.out.println("Before swapping(Inside), a = " + a + " b = " + b);
      
      // Swap n1 with n2
      int c = a;
      a = b;
      b = c;
      System.out.println("After swapping(Inside), a = " + a + " b = " + b);
   }
}

这将产生以下结果 -

输出

Before swapping, a = 30 and b = 45
Before swapping(Inside), a = 30 b = 45
After swapping(Inside), a = 45 b = 30

**Now, Before and After swapping values will be same here**:
After swapping, a = 30 and b is 45

方法重载

当一个类有两个或多个同名但参数不同的方法时,称为方法重载。它与覆盖不同。在覆盖中,一个方法具有相同的方法名、类型、参数个数等。

让我们考虑前面讨论的用于查找最小整数类型的示例。如果,假设我们要找到 double 类型的最小数量。然后会引入重载的概念,创建两个或多个同名但参数不同的方法。

以下示例解释相同 -

示例

现场演示
public class ExampleOverloading {

   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      double c = 7.3;
      double d = 9.4;
      int result1 = minFunction(a, b);
      
      // same function name with different parameters
      double result2 = minFunction(c, d);
      System.out.println("Minimum Value = " + result1);
      System.out.println("Minimum Value = " + result2);
   }

   // for integer
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
   
   // for double
   public static double minFunction(double n1, double n2) {
     double min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

这将产生以下结果 -

输出

Minimum Value = 6
Minimum Value = 7.3

重载方法使程序可读。在这里,两个方法以相同的名称给出但具有不同的参数。整数和双精度类型的最小数是结果。

使用命令行参数

有时您希望在运行程序时将一些信息传递给程序。这是通过将命令行参数传递给 main() 来实现的。

命令行参数是程序执行时在命令行上直接跟在程序名称后面的信息。在 Java 程序中访问命令行参数非常容易。它们作为字符串存储在传递给 main() 的 String 数组中。

示例

以下程序显示了它调用的所有命令行参数 -

public class CommandLine {

   public static void main(String args[]) { 
      for(int i = 0; i<args.length; i++) {
         System.out.println("args[" + i + "]: " +  args[i]);
      }
   }
}

尝试执行这个程序,如下所示 -

$java CommandLine this is a command line 200 -100

这将产生以下结果 -

输出

args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100

this关键字

这个 是 Java 中的一个关键字,用作对当前类的对象的引用,在实例方法或构造函数中。使用 这个 您可以引用类的成员,例如构造函数、变量和方法。

注意 − 关键字this 仅在实例方法或构造函数中使用

一般来说,关键字this 用于 -

class Student {
   int age;   
   Student(int age) {
      this.age = age;	
   }
}
class Student {
   int age
   Student() {
      this(20);
   }
   
   Student(int age) {
      this.age = age;	
   }
}

示例

这是一个使用 this 的示例 关键字来访问类的成员。将以下程序复制并粘贴到名为 This_Example.java 的文件中 .

现场演示
public class This_Example {
   // Instance variable num
   int num = 10;
	
   This_Example() {
      System.out.println("This is an example program on keyword this");	
   }

   This_Example(int num) {
      // Invoking the default constructor
      this();
      
      // Assigning the local variable num to the instance variable num
      this.num = num;	   
   }
   
   public void greet() {
      System.out.println("Hi Welcome to Tutorialspoint");
   }
      
   public void print() {
      // Local variable num
      int num = 20;
      
      // Printing the local variable
      System.out.println("value of local variable num is : "+num);
      
      // Printing the instance variable
      System.out.println("value of instance variable num is : "+this.num);
      
      // Invoking the greet method of a class
      this.greet();     
   }
   
   public static void main(String[] args) {
      // Instantiating the class
      This_Example obj1 = new This_Example();
      
      // Invoking the print method
      obj1.print();
	  
      // Passing a new value to the num variable through parametrized constructor
      This_Example obj2 = new This_Example(30);
      
      // Invoking the print method again
      obj2.print(); 
   }
}

这将产生以下结果 -

输出

This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 10
Hi Welcome to Tutorialspoint
This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 30
Hi Welcome to Tutorialspoint

变量参数(var-args)

JDK 1.5 使您能够将可变数量的相同类型的参数传递给方法。方法中的参数声明如下 -

typeName... parameterName

在方法声明中,您指定类型,后跟省略号 (...)。一个方法中只能指定一个变长参数,该参数必须是最后一个参数。任何常规参数都必须在它之前。

示例

现场演示
public class VarargsDemo {

   public static void main(String args[]) {
      // Call method with variable args  
	   printMax(34, 3, 3, 2, 56.5);
      printMax(new double[]{1, 2, 3});
   }

   public static void printMax( double... numbers) {
      if (numbers.length == 0) {
         System.out.println("No argument passed");
         return;
      }

      double result = numbers[0];

      for (int i = 1; i <  numbers.length; i++)
      if (numbers[i] >  result)
      result = numbers[i];
      System.out.println("The max value is " + result);
   }
}

这将产生以下结果 -

输出

The max value is 56.5
The max value is 3.0

finalize()方法

可以定义一个在垃圾收集器最终销毁对象之前调用的方法。这个方法叫做finalize() ,并且可以用来确保一个对象干净地终止。

例如,您可以使用 finalize() 来确保该对象拥有的打开文件已关闭。

要将终结器添加到类中,您只需定义 finalize() 方法。每当 Java 运行时要回收该类的对象时,它就会调用该方法。

在 finalize( ) 方法中,您将指定在销毁对象之前必须执行的操作。

finalize() 方法具有这种一般形式 -

protected void finalize( ) {
   // finalization code here
}

在这里,关键字protected 是一个说明符,它防止在其类之外定义的代码访问finalize()。

这意味着您无法知道 finalize( ) 何时或是否会被执行。例如,如果您的程序在垃圾回收发生之前结束,finalize() 将不会执行。


java

  1. Java 运算符
  2. Java 抽象类和抽象方法
  3. Java 注释类型
  4. Java String charAt() 方法及示例
  5. Java String endsWith() 方法及示例
  6. Java String replace()、replaceAll() 和 replaceFirst() 方法
  7. Java String toLowercase() 和 toUpperCase() 方法
  8. Java - 覆盖
  9. Java 9 - 集合工厂方法
  10. Java 9 - 私有接口方法
  11. Java 8 - 方法参考
  12. Java 8 - 默认方法