Thứ Bảy, 22 tháng 12, 2018

Java - Phương thức

Phương thức lập trình Java là một tập hợp các câu lệnh được nhóm lại với nhau để thực hiện một thao tác. Khi bạn gọi System.out. Phương thức println () , ví dụ, hệ thống thực sự thực thi một số câu lệnh để hiển thị một thông báo trên bàn điều khiển.

Bây giờ bạn sẽ tìm hiểu cách tạo các phương thức của riêng bạn có hoặc không có giá trị trả về, gọi một phương thức có hoặc không có tham số và áp dụng trừu tượng hóa phương thức trong thiết kế chương trình.

Khóa học lập trình Java
Khóa học lập trình Java

Phương thức tạo

Xem xét ví dụ sau để giải thích cú pháp của phương thức

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

công tĩnh - sửa đổi

int - kiểu trả về

methodName - tên của phương thức

a, b - tham số chính thức

int a, int b - danh sách các tham số

Định nghĩa phương thức bao gồm một tiêu đề phương thức và thân phương thức. Điều tương tự được thể hiện trong cú pháp sau

modifier returnType nameOfMethod (Parameter List) {
   // method body
}
Cú pháp hiển thị ở trên bao gồm

công cụ sửa đổi - Nó xác định loại truy cập của phương thức và nó là tùy chọn để sử dụng.

returnType - Phương thức có thể trả về một giá trị.

nameOfMethod - Đây là tên phương thức. Chữ ký phương thức bao gồm tên phương thức và danh sách tham số.

Danh sách tham số - Danh sách các tham số, đó là loại, thứ tự và số lượng tham số của một phương thức. Đây là tùy chọn, phương thức có thể chứa tham số không.

thân phương thức - Phần thân phương thức định nghĩa phương thức làm gì với các câu lệnh.

Đây là mã nguồn của phương thức được xác định ở trên được gọi là min () . Phương thức này lấy hai tham số num1 và num2 và trả về giá trị tối đa giữa hai
/** 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; 
}

Phương thức gọi

Để sử dụng một phương thức, nó nên được gọi. Có hai cách trong đó một phương thức được gọi là tức là phương thức trả về một giá trị hoặc không trả về giá trị nào (không có giá trị trả về).

Quá trình gọi phương thức rất đơn giản. Khi một chương trình gọi một phương thức, điều khiển chương trình được chuyển sang phương thức được gọi. Phương thức được gọi này sau đó trả lại quyền điều khiển cho người gọi trong hai điều kiện, khi -

câu lệnh return được thực thi.

nó đạt đến phương thức kết thúc cú đúp.

Các phương thức trả về void được coi là một cuộc gọi đến một tuyên bố. Hãy xem xét một ví dụ -
System.out.println("This is tutorialspoint.com!");
Giá trị trả về của phương thức có thể được hiểu theo ví dụ sau
int result = sum(6, 9);
Sau đây là ví dụ để giải thích cách xác định phương thức và cách gọi phương thức
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; 
   }
}
Điều này sẽ tạo ra kết quả sau

Đầu ra

Minimum value = 6

Khoảng trống từ khóa

Từ khóa void cho phép chúng ta tạo các phương thức không trả về giá trị. Ở đây, trong ví dụ sau, chúng tôi đang xem xét một phương thức voidRankPoints.

Phương thức này là một phương thức void, không trả về bất kỳ giá trị nào. Gọi một phương thức void phải là một câu lệnh tức là phương thứcRankPoints (255.7); . Đó là một câu lệnh trong lập trình Java kết thúc bằng dấu chấm phẩy như trong ví dụ sau.
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");
      }
   }
}
Điều này sẽ tạo ra kết quả sau

Đầu ra

Rank:A1

Truyền tham số theo giá trị

Trong khi làm việc theo quy trình gọi, các đối số sẽ được thông qua. Chúng phải theo cùng thứ tự với các tham số tương ứng của chúng trong đặc tả phương thức. Các tham số có thể được truyền bằng giá trị hoặc bằng tham chiếu.

Truyền tham số theo giá trị nghĩa là gọi một phương thức với tham số. Thông qua đó, giá trị đối số được truyền cho tham số.

Thí dụ

Chương trình sau đây cho thấy một ví dụ về truyền tham số theo giá trị. Các giá trị của các đối số vẫn giữ nguyên ngay cả sau khi gọi phương thức.
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);
   }
}
Điều này sẽ tạo ra kết quả sau

Đầu ra

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

Phương thức quá tải

Khi một lớp có hai hoặc nhiều phương thức có cùng tên nhưng tham số khác nhau, nó được gọi là nạp chồng phương thức. Nó khác với ghi đè. Trong ghi đè, một phương thức có cùng tên phương thức, loại, số lượng tham số, v.v.

Hãy xem xét ví dụ được thảo luận trước đó để tìm số lượng tối thiểu của loại số nguyên. Nếu, giả sử chúng ta muốn tìm số lượng tối thiểu của loại kép. Sau đó, khái niệm quá tải sẽ được giới thiệu để tạo ra hai hoặc nhiều phương thức có cùng tên nhưng tham số khác nhau.

Ví dụ sau đây giải thích tương tự
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; 
   }
}
Điều này sẽ tạo ra kết quả sau

Đầu ra

Minimum Value = 6
Minimum Value = 7.3 

Phương pháp quá tải làm cho chương trình có thể đọc được. Ở đây, hai phương thức được đưa ra cùng tên nhưng với các tham số khác nhau. Số lượng tối thiểu từ các loại số nguyên và kép là kết quả.

Sử dụng đối số dòng lệnh

Đôi khi bạn sẽ muốn truyền một số thông tin vào một chương trình khi bạn chạy nó. Điều này được thực hiện bằng cách chuyển các đối số dòng lệnh đến hàm main ().

Đối số dòng lệnh là thông tin theo trực tiếp tên của chương trình trên dòng lệnh khi nó được thực thi. Để truy cập các đối số dòng lệnh bên trong một chương trình Học lập trình Java khá dễ dàng. Chúng được lưu trữ dưới dạng các chuỗi trong mảng String được truyền cho hàm main ().

Thí dụ

Chương trình sau đây hiển thị tất cả các đối số dòng lệnh mà nó được gọi với
public class CommandLine {

   public static void main(String args[]) { 
      for(int i = 0; i<args.length; i++) {
         System.out.println("args[" + i + "]: " +  args[i]);
      }
   }
}
Hãy thử thực hiện chương trình này như được hiển thị ở đây

$java CommandLine this is a command line 200 -100

Điều này sẽ tạo ra kết quả sau

Đầu ra

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

Từ khóa này

đây là một từ khóa trong lập trình Java, được sử dụng làm tham chiếu đến đối tượng của lớp hiện tại, với một phương thức cá thể hoặc một hàm tạo. Sử dụng điều này, bạn có thể giới thiệu các thành viên của một lớp như hàm tạo, biến và phương thức.

Lưu ý - Từ khóa này chỉ được sử dụng trong các phương thức hoặc hàm tạo

Nói chung, từ khóa này được sử dụng để

Phân biệt các biến đối tượng với các biến cục bộ nếu chúng có cùng tên, trong một hàm tạo hoặc một phương thức.
class Student {
   int age;   
   Student(int age) {
      this.age = age; 
   }
}
Gọi một loại hàm tạo (hàm tạo tham số hoặc mặc định) từ loại khác trong một lớp. Nó được gọi là lời gọi hàm tạo rõ ràng.
class Student {
   int age
   Student() {
      this(20);
   }
   
   Student(int age) {
      this.age = age; 
   }
}
Thí dụ

Dưới đây là một ví dụ sử dụng từ khóa này để truy cập các thành viên của một lớp. Sao chép và dán chương trình sau vào một tệp có tên 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(); 
   }
}
Điều này sẽ tạo ra kết quả sau

Đầu ra

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

Đối số biến (var-args)

JDK 1.5 cho phép bạn truyền một số lượng đối số cùng loại cho một phương thức. Tham số trong phương thức được khai báo như sau

typeName... parameterName

Trong khai báo phương thức, bạn chỉ định loại theo dấu chấm lửng (...). Chỉ một tham số có độ dài thay đổi có thể được chỉ định trong một phương thức và tham số này phải là tham số cuối cùng. Bất kỳ tham số thường xuyên phải đi trước nó.
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);
   }
}
Điều này sẽ tạo ra kết quả sau

Đầu ra

The max value is 56.5
The max value is 3.0

Phương thức quyết toán ()

Có thể định nghĩa một phương thức sẽ được gọi ngay trước khi phá hủy cuối cùng của đối tượng bởi trình thu gom rác. Phương thức này được gọi là Finalize () và nó có thể được sử dụng để đảm bảo rằng một đối tượng chấm dứt sạch sẽ.

Ví dụ: bạn có thể sử dụng Finalize () để đảm bảo rằng một tệp đang mở thuộc sở hữu của đối tượng đó được đóng lại.

Để thêm một bộ hoàn thiện vào một lớp, bạn chỉ cần định nghĩa phương thức Finalize (). Thời gian chạy Java gọi phương thức đó bất cứ khi nào nó sắp tái chế một đối tượng của lớp đó.

Bên trong phương thức Finalize (), bạn sẽ chỉ định những hành động đó phải được thực hiện trước khi một đối tượng bị phá hủy.

Phương thức Finalize () có dạng tổng quát này

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

Ở đây, từ khóa được bảo vệ là một công cụ xác định ngăn chặn truy cập để hoàn thiện () bởi mã được xác định bên ngoài lớp của nó.

Điều này có nghĩa là bạn không thể biết khi nào hoặc thậm chí nếu hoàn thành () sẽ được thực thi. Ví dụ: nếu chương trình của bạn kết thúc trước khi thu gom rác xảy ra, thì việc hoàn tất () sẽ không thực thi.

Không có nhận xét nào:

Đăng nhận xét

Lập trình Java - Ngoại lệ

Một ngoại lệ (hoặc sự kiện đặc biệt) là một vấn đề phát sinh trong quá trình thực hiện chương trình. Khi xảy ra Ngoại lệ , luồng bình thường...