Rumah  >  Artikel  >  Java  >  Analisis contoh penggunaan kaedah Java

Analisis contoh penggunaan kaedah Java

PHPz
PHPzke hadapan
2023-04-19 16:52:06626semak imbas

1. Konsep dan penggunaan kaedah

1.1. Apakah itu kaedah

Kaedah ialah serpihan kod. Fungsinya adalah seperti berikut:

1 Ia boleh menyusun kod secara modular (apabila saiz kod lebih kompleks

2 digunakan dalam penggunaan Berbilang Kedudukan.

3 Jadikan kod lebih mudah difahami dan lebih ringkas.

4. Panggil terus kaedah sedia ada untuk pembangunan tanpa mencipta semula roda.

1.2 . Definisi kaedah

Format definisi:

Analisis contoh penggunaan kaedah Java

Contoh: Tulis fungsi untuk mencari jumlah faktorial bagi berapa sebutan

public class TeseDemo220424 {
//    计算某一个数的阶乘
    public static int func(int n){
        int ret = 1;
        for(int i = 1;i <= n;i++){
            ret *= i;
        }
        return ret;
    }
//    计算前多少项阶乘之和
    public static int func1(int k){
        int sum = 0;
        for(int i = 1;i <= k;i++){
            sum += func(i);
        }
        return sum;
    }
    public static void main(String[] args) {
//        写函数来求阶乘之和
        Scanner myscanner = new Scanner(System.in);
        System.out.println("请输入你想要求取前多少项的阶乘的和:");
        int num = myscanner.nextInt();
        int sum = func1(num);
        System.out.println("前 " + num + "项的阶乘和为" + sum);
    }
}

Nota:

1 Pengubah suai: Pada peringkat ini, gabungan tetap statik awam digunakan secara langsung (kerana kaedah utama adalah statik awam, jadi hanya kaedah statik boleh dipanggil di dalamnya).

2. Jenis nilai pulangan: Jika kaedah mempunyai nilai pulangan, jenis nilai pulangan mesti konsisten dengan jenis entiti yang dikembalikan.

3. Nama kaedah: Gunakan sarung unta kecil untuk menamakannya.

4. Senarai parameter: Jika kaedah tidak mempunyai parameter, tulis apa-apa dalam ( Jika terdapat parameter, jenis parameter perlu ditentukan.

5. Badan kaedah: pernyataan yang akan dilaksanakan di dalam kaedah.

6 Dalam java, kaedah mesti ditulis dalam kelas.

7. Dalam java, kaedah tidak boleh bersarang.

8. Dalam java, tiada pengisytiharan kaedah. (Pengisytiharan dan takrifan tidak dibezakan)

1.3. Proses pelaksanaan kaedah panggilan

Proses panggilan:

Kaedah panggilan—>Pass parameter—>Cari alamat kaedah —>Badan kaedah yang melaksanakan kaedah yang dipanggil—>Kaedah yang dipanggil berakhir dan mengembalikan—>Kembali ke kaedah panggilan utama dan teruskan pelaksanaan

Imej:

Analisis contoh penggunaan kaedah Java

Nota:

1 Apabila mentakrifkan kaedah, kod kaedah itu hanya akan dilaksanakan apabila ia dipanggil

2 kaedah boleh Dipanggil berkali-kali. parameter adalah sebahagian daripada parameter sebenar Salinan sementara dibuat, yang bermaksud bahawa perubahan pada parameter formal tidak akan menjejaskan parameter sebenar.

Ilustrasi sebab tertentu: (Oleh kerana isu khusus yang berkaitan dengan bingkai tindanan fungsi adalah lebih rumit, berikut ialah penjelasan ringkas untuk anda)

Jadi, Seperti yang dapat dilihat dari rajah, apabila memanggil mengikut nilai, nilai parameter formal dan parameter sebenar tidak disimpan dalam ruang yang sama sama sekali, jadi mereka tidak akan mengganggu satu sama lain dalam bahasa C, jika anda mahu perubahan parameter formal untuk mempengaruhi parameter sebenar , maka ia mestilah panggilan dengan alamat, tetapi tidak ada perkara seperti panggilan dengan alamat dalam Java Penyelesaiannya hanya boleh menggunakan rujukan (yang akan diperkenalkan secara terperinci kemudian ).

Analisis contoh penggunaan kaedah Java2. Melebihkan kaedah

2.1. Mengapa kaedah terlebih muatan diperlukan

Lihat kod ini, kedua-dua kaedah addint dan adddouble mempunyai tujuan yang sama. untuk mencari jumlah dua nombor, anda perlu menentukan dua fungsi berbeza dengan nama fungsi yang berbeza, tetapi kadangkala penamaan adalah sakit kepala, jadi kerana fungsi penting kaedah adalah sama, mereka hanya mempunyai parameter yang mungkin berbeza, bolehkah kita semua menggunakan nama fungsi yang sama?

Jawapannya ialah ya, dan ini dipanggil kaedah terlebih muatan.
public class TestDemo220426 {
    public static int addInt(int x,int y){
        return x + y;
    }
    public static double addDouble(double x,double y){
        return x + y;
    }
    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        int ret = addInt(a,b);

        double c = 11.1;
        double d = 12.1;
        double ret1 = addDouble(c,d);
    }
}

2.2. Definisi lebihan kaedah

Di Java, jika berbilang kaedah mempunyai nama yang sama dan senarai parameter yang berbeza, ia dikatakan terlebih muatan. Iaitu, nama yang sama tetapi dengan maksud yang berbeza.

Tangkapan skrin program berjalan:

public class TestDemo220426 {
    public static int add(int x,int y){
        return x + y;
    }
    public static double add(double x,double y){
        return x + y;
    }
    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        int ret = add(a,b);
        System.out.println(ret);
        double c = 11.1;
        double d = 12.1;
        double ret1 = add(c,d);
        System.out.println(ret1);
    }
}

Seperti yang dapat dilihat daripada program di atas, mereka semua melaksanakan fungsi penambahan, tetapi dua adalah ditakrifkan Perlaksanaan fungsi yang berbeza hanya mempunyai nama fungsi yang sama Ini adalah fungsi lebihan. Pengkompil akan memanggil fungsi yang sepadan berdasarkan parameter yang anda masukkan.

Analisis contoh penggunaan kaedah JavaNota:

1. Nama kaedah mestilah sama.

2. Senarai parameter mestilah berbeza (bilangan parameter berbeza, jenis parameter berbeza, susunan jenis mesti berbeza) (perlu dibezakan mengikut parameter)

3. Sama ada ia sama dengan jenis nilai pulangan Serupa dan tidak relevan

4 Anda tidak boleh menentukan dua fungsi yang hanya dibezakan oleh nilai pulangannya 5. Apabila pengkompil menyusun kod, ia akan menyimpulkan jenis parameter sebenar Tentukan kaedah mana yang hendak dipanggil berdasarkan hasil potongan

2.3 Tandatangan kaedah

Tandatangan kaedah ialah: nama akhir kaedah selepas disusun dan diubah suai oleh pengkompil. Kaedah khusus ialah: nama laluan penuh kaedah + senarai parameter + jenis nilai pulangan, yang membentuk nama lengkap kaedah. Digunakan untuk membezakan fungsi terlampau beban

Bagaimana kita boleh melihat tandatangan kaedah kami:

1 Mula-mula susun projek untuk menjana fail .class bytecode

2. masukkan direktori di mana .kelas yang anda ingin lihat terletak

3 Masukkan: nama fail javap -v bytecode

3. Rekursi

3.1

Definisi: Kaedah yang memanggil dirinya sendiri semasa pelaksanaan dipanggil "rekursi."

Syarat yang diperlukan untuk rekursi:

1 Formula rekursi.

2. Syarat penamatan rekursi.

3.2、递归过程分析

    public static  int func(int num){
        if(num == 1){
            return 1;
        }
        return num*func(num - 1);
    }
    public static void main(String[] args) {
//        递归求阶乘
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个数:");
        int num = scan.nextInt();
        int ret = func(num);
        System.out.println("阶乘为:" + ret);
    }
}

在这里我们以求一个数的阶乘的代码为例来分析一个递归的过程:

Analisis contoh penggunaan kaedah Java

递归的过程其实不复杂,看成两个部分,一个是递出去,而是归回来,上面的蓝色箭头是递的过程,红色箭头是归的过程。

3.3、递归小练习

  • 按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)

public class TestDemo220427 {
    public static void myprint(int num){
        if(num < 10){
            System.out.println(num%10);
            return;
        }
        myprint(num/10);
        System.out.println(num%10);
        return;
    }
    public static void main(String[] args) {
//        递归实现按顺序打印数字的每一位
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个数:");
        int num = scan.nextInt();
        myprint(num);
    }
}
  • 求斐波那契数列的第 N 项

public class TestDemo220428 {
    public static int fib1(int n){
        int f1 = 1;
        int f2 = 1;
        int f3 = 1;
        for(int i = 3;i <= n;i++){
            f3 = f1 + f2;
            f1 = f2;
            f2 = f3;
        }
        return f3;
    }
    public static int fib(int n){
        if(n == 1 || n == 2){
            return 1;
        }
        return fib(n-1) + fib(n-2);
    }
    public static void main(String[] args) {
//        递归求斐波那契数列的第n项
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入您想要求取的项数:");
        int n = scan.nextInt();
        int ret = fib1(n);
        System.out.println("第" + n + "项为:" + ret);
    }
}

利用递归求斐波那契数列的第n项的话,其实是一个双路递归,不推荐这种求解的方法,因为会算很多重复的项,效率很低,一般都是选择循环迭代的方式来生成斐波那契数即可。

Analisis contoh penggunaan kaedah Java

Atas ialah kandungan terperinci Analisis contoh penggunaan kaedah Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam