Latest web development tutorials

metode Java

Dalam beberapa bab pertama, kita sering menggunakan untuk System.out.println (), lalu apa itu?

println () adalah metode (Metode), dan Sistem adalah kelas sistem (Kelas), keluar adalah standar objek keluaran (Object). Penggunaan pernyataan ini adalah untuk memanggil Sistem kelas sistem output standar keberatan keluar metode println ().

Jadi apa cara untuk melakukan itu?

Metode java diatur pernyataan yang bersama-sama melakukan fungsi.

  • Metode ini merupakan kombinasi memerintahkan untuk memecahkan suatu kelas masalah langkah
  • Metode yang termasuk dalam kelas atau objek
  • Metode ini dibuat dalam program ini, dirujuk ke tempat lain

metode yang didefinisikan

Secara umum, definisi dari metode yang terdiri dari sintaks berikut:

修饰符 返回值类型 方法名 (参数类型 参数名){
    ...
    方法体
    ...
    return 返回值;
}

Metode ini mencakup header metode dan metode tubuh. Berikut adalah bagian dari sebuah proses:

  • Modifier: pengubah, yang opsional, untuk memberitahu compiler bagaimana memanggil metode. Ini mendefinisikan jenis akses metode ini.
  • Kembali Nilai Jenis: Metode mungkin mengembalikan nilai. returnValueType adalah metode yang mengembalikan tipe data dari nilai. Beberapa metode melakukan tindakan yang diinginkan, tapi tidak ada nilai kembali. Dalam hal ini, returnValueType kata kunci batal.
  • nama metode: nama sebenarnya dari metode ini. nama metode dan daftar parameter bersama-sama merupakan metode tanda tangan.
  • Parameter Jenis: parameter seperti placeholder. Ketika metode ini disebut, nilai dilewatkan ke parameter. Nilai ini disebut argumen atau variabel. daftar parameter adalah jumlah jenis parameter metode, urutan dan parameter. Parameter adalah opsional, metode ini mungkin tidak mengandung parameter apapun.
  • Metode tubuh: Metode ini terdiri dari sebuah pernyataan tertentu untuk menentukan fungsi dari metode ini.

Seperti:

public static int age(int birthday){...}

Anda dapat memiliki lebih dari satu parameter:

static float interest(float principal, int year){...}

Catatan: Dalam beberapa metode bahasa lain mengacu pada proses dan fungsi. Sebuah tipe kembali non-kekosongan nilai kembali dari metode fungsi yang disebut; metode mengembalikan nilai tipe void disebut proses.

contoh

Metode berikut berisi dua parameter num1 dan num2, ia mengembalikan nilai maksimum dua parameter ini.

/** 返回两个整型变量数据的较大值 */
public static int max(int num1, int num2) {
   int result;
   if (num1 > num2)
      result = num1;
   else
      result = num2;

   return result; 
}

metode Invocation

Java mendukung dua cara untuk memanggil sebuah metode, menurut apakah nilai kembali metode untuk memilih.

Ketika program panggilan metode, program untuk mengendalikan metode ini disebut. Ketika pernyataan kembali yang disebut metode ini dijalankan atau sampai tubuh metode saat penutupan kontrol kurung kembali ke program.

Ketika metode mengembalikan nilai, metode pemanggilan umumnya diperlakukan sebagai nilai. Sebagai contoh:

int larger = max(30, 40);

Jika nilai kembali metode batal, metode panggilan harus pernyataan. Misalnya, metode println kembali batal. Panggilan berikut adalah pernyataan:

System.out.println("Welcome to Java!");

contoh

Contoh berikut menunjukkan bagaimana mendefinisikan sebuah metode, dan bagaimana menyebutnya:

public class TestMax {
   /** 主方法 */
   public static void main(String[] args) {
      int i = 5;
      int j = 2;
      int k = max(i, j);
      System.out.println("The maximum between " + i +
                    " and " + j + " is " + k);
   }

   /** 返回两个整数变量较大的值 */
   public static int max(int num1, int num2) {
      int result;
      if (num1 > num2)
         result = num1;
      else
         result = num2;

      return result; 
   }
}

Contoh di atas hasil disusun adalah sebagai berikut:

The maximum between 5 and 2 is 5

Program ini berisi metode utama dan metode max. Metode JVM utama dipanggil, di samping itu, utama dan metode lainnya tidak ada perbedaan.

Kepala Metode utama adalah sama dengan contoh yang ditunjukkan, dengan pengubah publik dan statis, nilai jenis kembali batal, nama metode adalah utama, selain dengan String [] jenis parameter. String [] bahwa argumen adalah array dari string.


kata kunci batal

Bagian ini menjelaskan bagaimana cara mendeklarasikan dan memanggil metode kekosongan.

Contoh berikut mendeklarasikan metode bernama printGrade, dan menyebutnya untuk mencetak skor yang diberikan.

contoh

public class TestVoidMethod {

   public static void main(String[] args) {
      printGrade(78.5);
   }

   public static void printGrade(double score) {
      if (score >= 90.0) {
         System.out.println('A');
      }
      else if (score >= 80.0) {
         System.out.println('B');
      }
      else if (score >= 70.0) {
         System.out.println('C');
      }
      else if (score >= 60.0) {
         System.out.println('D');
      }
      else {
         System.out.println('F');
      }
   }
}

Contoh di atas hasil disusun adalah sebagai berikut:

C

Berikut metode printGrade adalah metode tipe void, itu tidak mengembalikan nilai.

Sebuah metode void panggilan harus pernyataan. Oleh karena itu, metode utama dari baris ketiga panggilan dalam bentuk pernyataan. Seperti pernyataan apapun diakhiri dengan titik koma seperti.


Passing parameter dengan nilai

Memanggil metode ketika Anda harus memberikan parameter, Anda harus memberikan daftar parameter sesuai dengan urutan tertentu.

Misalnya, metode berikut terus menerus n Times mencetak pesan:

public static void nPrintln(String message, int n) {
  for (int i = 0; i < n; i++)
    System.out.println(message);
}

contoh

Contoh berikut menggambarkan efek lewat nilai.

Program ini menciptakan sebuah metode yang digunakan untuk pertukaran dua variabel.

public class TestPassByValue {

   public static void main(String[] args) {
      int num1 = 1;
      int num2 = 2;

      System.out.println("Before swap method, num1 is " +
                          num1 + " and num2 is " + num2);

      // 调用swap方法
      swap(num1, num2);
      System.out.println("After swap method, num1 is " +
                         num1 + " and num2 is " + num2);
   }
   /** 交换两个变量的方法 */
   public static void swap(int n1, int n2) {
      System.out.println("\tInside the swap method");
      System.out.println("\t\tBefore swapping n1 is " + n1
                           + " n2 is " + n2);
      // 交换 n1 与 n2的值
      int temp = n1;
      n1 = n2;
      n2 = temp;

      System.out.println("\t\tAfter swapping n1 is " + n1
                           + " n2 is " + n2);
   }
}

Contoh di atas hasil disusun adalah sebagai berikut:

Before swap method, num1 is 1 and num2 is 2
        Inside the swap method
                Before swapping n1 is 1 n2 is 2
                After swapping n1 is 2 n2 is 1
After swap method, num1 is 1 and num2 is 2

Melewati dua parameter untuk memanggil metode swap. Menariknya, setelah metode ini disebut, nilai argumen tidak berubah.


metode kelebihan beban

Metode max menggunakan atas hanya berlaku untuk tipe data int. Tetapi jika Anda ingin mendapatkan nilai maksimum dua floating-point tipe data itu?

Solusinya adalah dengan membuat parameter lain dengan nama yang sama tetapi metode yang berbeda, seperti yang ditunjukkan pada kode berikut:

public static double max(double num1, double num2) {
  if (num1 > num2)
    return num1;
  else
    return num2;
}

Jika Anda memanggil metode max dilewatkan parameter int, metode max dari int argumen dipanggil;

Jika melewati parameter tipe ganda, jenis metode pengalaman max ganda disebut, ini disebut metode overloading;

Bahwa dua metode kelas memiliki nama yang sama, tetapi dengan daftar parameter yang berbeda.

compiler Java sesuai dengan metode tanda tangan untuk menentukan metode yang harus disebut.

Metode overloading dapat membuat program lebih mudah dibaca. Metode eksekusi adalah erat tugas-tugas terkait harus menggunakan nama yang sama.

metode kelebihan beban harus memiliki daftar parameter yang berbeda. Anda tidak bisa hanya berdasarkan pada berbagai jenis pengubah atau kembali ke metode kelebihan beban.


Cakupan variabel

variabel rentang adalah bagian dari program dimana variabel dapat dirujuk.

Variabel dalam definisi metode yang disebut variabel lokal.

Ruang lingkup dari deklarasi variabel lokal dari awal sampai akhir blok berisi itu.

variabel lokal harus dideklarasikan sebelum mereka dapat digunakan.

Metode yang mencakup seluruh rentang metode parameter. Parameter sebenarnya variabel lokal.

Inisialisasi variabel bagian dari untuk pernyataan loop, ruang lingkup perannya dalam siklus.

Tapi pernyataan loop tubuh variabel adalah pernyataan dari ruang lingkup dari itu ke akhir loop. Ini berisi variabel dinyatakan sebagai berikut:

Anda dapat dengan cara, blok non-bersarang berbeda berulang kali mendeklarasikan variabel lokal dengan nama yang sama, tetapi Anda tidak dapat bersarang dalam blok dua kali untuk mendeklarasikan variabel lokal.

Menggunakan parameter baris perintah

Kadang-kadang Anda ingin menjalankan program ketika kemudian diteruskan pesan. Hal ini tergantung pada lewat argumen baris perintah untuk) Fungsi utama (untuk mencapai.

Argumen baris perintah diikuti dengan informasi waktu eksekusi setelah nama program.

contoh

Program berikut mencetak semua argumen baris perintah:

public class CommandLine {

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

Seperti ditunjukkan di bawah, menjalankan program:

java CommandLine this is a command line 200 -100

Hasilnya adalah sebagai berikut:

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

pembina

Ketika sebuah objek dibuat ketika konstruktor digunakan untuk menginisialisasi objek. Dan dalam konstruktor kelas dengan nama yang sama, tetapi konstruktor tidak memiliki nilai kembali.

Sering menggunakan konstruktor untuk kelas contoh nilai awal variabel, atau melakukan langkah-langkah lain yang diperlukan untuk membuat objek yang lengkap.

Apakah atau tidak Anda seorang konstruktor kustom, semua kelas memiliki konstruktor karena Java secara otomatis menyediakan konstruktor default, yang semua anggota diinisialisasi ke nol.

Setelah Anda mendefinisikan konstruktor Anda sendiri, constructor default akan gagal.

contoh

Berikut adalah contoh penggunaan constructor:

// 一个简单的构造函数
class MyClass {
   int x;
   
   // 以下是构造函数
   MyClass() {
      x = 10;
   }
}

Anda dapat menyebutnya seperti konstruktor ini untuk menginisialisasi objek:

public class ConsDemo {

   public static void main(String args[]) {
      MyClass t1 = new MyClass();
      MyClass t2 = new MyClass();
      System.out.println(t1.x + " " + t2.x);
   }
}

Sebagian besar waktu membutuhkan parameter konstruktor.

contoh

Berikut adalah contoh penggunaan constructor:

// 一个简单的构造函数
class MyClass {
   int x;
   
   // 以下是构造函数
   MyClass(int i ) {
      x = i;
   }
}

Anda dapat menyebutnya seperti konstruktor ini untuk menginisialisasi objek:

public class ConsDemo {

   public static void main(String args[]) {
      MyClass t1 = new MyClass( 10 );
      MyClass t2 = new MyClass( 20 );
      System.out.println(t1.x + " " + t2.x);
   }
}

Hasilnya adalah sebagai berikut:

10 20

parameter variabel

Pada JDK 1.5, dukungan Java melewati jenis yang sama dari parameter variabel untuk sebuah metode.

Mendeklarasikan parameter variabel dari metode ini adalah sebagai berikut:

typeName... parameterName

Dalam pernyataan metode, yang ditentukan jenis parameter setelah menambahkan elipsis (...).

Sebuah metode dapat menentukan hanya satu parameter variabel, itu harus menjadi metode parameter terakhir. Parameter umum harus dideklarasikan sebelum.

contoh

public class VarargsDemo {

   public static void main(String 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);
   }
}

Contoh di atas hasil disusun adalah sebagai berikut:

The max value is 56.5
The max value is 3.0

menyelesaikan () metode

Java memungkinkan Anda untuk menentukan metode di mana obyek dipanggil sebelum destructor sampah (daur ulang), metode ini disebut menyelesaikan (), yang digunakan untuk membersihkan benda-benda pulih.

Misalnya, Anda dapat menggunakan menyelesaikan () untuk memastikan bahwa sebuah objek file yang terbuka ditutup.

Dalam metode menyelesaikan (), Anda harus menentukan operasi yang akan dilakukan ketika objek dihancurkan.

finalisasi () adalah format umum:

protected void finalize()
{
   // 在这里终结代码
}

Kata kunci yang dilindungi adalah kualifikasi, itu memastikan bahwa metode menyelesaikan () tidak pernah disebut kode di luar kelas.

Tentu saja, pengumpulan sampah Jawa dapat dilakukan secara otomatis oleh JVM. Jika Anda menggunakan manual, Anda dapat menggunakan metode di atas.

contoh

public class FinalizationDemo {  
    public static void main(String[] args) {  
        Cake c1 = new Cake(1);  
        Cake c2 = new Cake(2);  
        Cake c3 = new Cake(3);  
          
        c2 = c3 = null;  
        System.gc(); //调用Java垃圾收集器
    }  
}  
  
class Cake extends Object {  
    private int id;  
    public Cake(int id) {  
        this.id = id;  
        System.out.println("Cake Object " + id + "is created");  
    }  
      
    protected void finalize() throws java.lang.Throwable {  
        super.finalize();  
        System.out.println("Cake Object " + id + "is disposed");  
    }  
}  

Jalankan kode di atas, hasil output adalah sebagai berikut:

C:\1>java FinalizationDemo  
Cake Object 1is created  
Cake Object 2is created  
Cake Object 3is created  
Cake Object 3is disposed  
Cake Object 2is disposed