JavaRush /Java blogi /Random-UZ /Kofe tanaffusi №116. Java-da funktsiya ko'rsatkichlaridan...

Kofe tanaffusi №116. Java-da funktsiya ko'rsatkichlaridan qanday foydalanish kerak. Java'da indexOf - Java'da satr indeksini qanday topish mumkin

Guruhda nashr etilgan

Java-da funktsiya ko'rsatkichlaridan qanday foydalanish kerak

Manba: Dev.to Pointerlar xotira manzilini saqlaydigan ob'ektlar bo'lib, qiymat bo'yicha o'tish o'rniga to'g'ridan-to'g'ri maqsadli ob'ekt, massiv yoki o'zgaruvchi manziliga ishora qilib, xotirani saqlashi mumkin. Afsuski, Java-da ko'rsatgichlarning "haqiqiy" tushunchasi yo'q. Yaxshiyamki, biz uchun haqiqiy narsaga yaqin bo'lgan usul havolalari yordamida vaqtinchalik yechim mavjud. Kofe tanaffusi №116.  Java-da funktsiya ko'rsatkichlaridan qanday foydalanish kerak.  Java'da indexOf - Java'da satr indeksini qanday topish mumkin - 1

Funktsiya ko'rsatkichlari

Funktsiya ko'rsatkichi - bu funktsiyaning manziliga ishora qiluvchi ko'rsatgich. Ba'zi foydalanish holatlariga uning bajarilishi asosida boshqa funktsiyani chaqiradigan funksiya yaratish yoki dinamik chaqirilgan usullar uchun funktsiya ko'rsatkichlari majmuasini saqlash (masalan, emulyator uchun protsessor ko'rsatmalarini saqlash) orqali qayta qo'ng'iroq qilish tartibini yaratish kiradi.

Funktsiya ko'rsatgich simulyatsiyasi

Usul havolalarining to'rt turi mavjud . Biz ma'lum bir ob'ektning namuna usuliga ishora qiluvchi turdan foydalanamiz. Keling, siz ko'rsatgan usullarning imzolarini belgilaydigan interfeysni aniqlashdan boshlaylik.
// Wrapping interface
private interface FunctionPointer {
  // Method signatures of pointed method
  void methodSignature(int a);
}
Keyin maqsadli usulning imzosi bilan usullarni yaratamiz.
public void method1(int b) {
  System.out.println("Called method1 with integer " + b);
}

public void method2(int v) {
  System.out.println("Called method2 with integer " + v);
}

public void method3(int a) {
  System.out.println("Called method3 with integer " + a);
}
Keyingi qadam o'rash interfeysi o'zgaruvchilarini yaratish va ularga usullarni belgilashdir. O'zgaruvchilar saqlanadigan yoki bajariladigan funktsiyaga ko'rsatgich sifatida ishlaydi.
// Create a variable of the interface and assign
// the method references
FunctionPointer pointer1 = this::method1;
FunctionPointer pointer2 = this::method2;

// Call both methods using their "pointer"
pointer1.methodSignature(3);
pointer2.methodSignature(2);

// Reassign and call pointer 1
pointer1 = this::method3;

pointer1.methodSignature(5);
Butun son 3 bilan metod1 chaqiriladi Butun son 2 bilan usul2 deb nomlanadi Butun son 5 bilan usul3 deb ataladi

Lambda ifodalaridan foydalanish

Usul havolalari lambda ifodalari yordamida tayinlanishi mumkin.
// Create a method reference and assign a methods using a lambda.
FunctionPointer pointer1 =
  (a) -> System.out.println("Called pointer1 with int " + a);

FunctionPointer pointer2 =
  (b) -> System.out.println("Called pointer2 with int " + b);

Funktsiya ko'rsatkichlari massivi

Usul havolalari massivining funksionalligini o'rash interfeysi massivini yaratish orqali taqlid qilish mumkin.
// Create an array of "pointers"
FunctionPointer[] functionPointersArray = new FunctionPointer[3];

// Assign methods
functionPointersArray[0] = this::method1;
functionPointersArray[1] = this::method2;
functionPointersArray[2] = this::method3;

// Call methods
functionPointersArray[0].methodSignature(3);
functionPointersArray[1].methodSignature(4);
functionPointersArray[2].methodSignature(5);

Funktsiya ko'rsatkichi va to'g'ridan-to'g'ri qo'ng'iroq

Agar ikkala variantni solishtirsangiz, usulni to'g'ridan-to'g'ri chaqirish, usul havolasidan foydalanishdan deyarli 5 baravar tezroq bo'ladi. Bularning barchasi saqlangan usulga nisbatan lambda ifodasini chaqirishning qo'shimcha qadami tufaylidir. Ammo, ehtimol, siz bir yil ichida unumdorlikni yo'qotishni sezmaysiz, shuning uchun bu haqda tashvishlanmang.

Xulosa

Ko'rsatkichlar qiymat emas, balki to'g'ridan-to'g'ri ob'ekt manziliga ishora qiluvchi o'zgaruvchilardir. Funktsiya ko'rsatkichi to'g'ridan-to'g'ri funktsiya manziliga ishora qiladi, bu esa xotira sarfini kamaytirishi mumkin. Java-da ko'rsatkichlar yo'q, lekin usul havolalari yoki lambda ifodalari yordamida xatti-harakatlarga taqlid qilishi mumkin. Usul ma'lumotnomasidan foydalanish usulni to'g'ridan-to'g'ri chaqirishdan ko'ra sekinroq, lekin bu uning ishlatilishiga to'sqinlik qilmaydi.

Java'da indexOf - Java'da satr indeksini qanday topish mumkin

Manba: FreeCodeCamp Satr qo'sh tirnoq ichiga olingan belgilar to'plamidir. indexOf usuli satrdagi belgilangan belgi yoki pastki qatorning indeks o'rnini qaytaradi. Ushbu maqolada biz turli xil indexOf usullarining sintaksisi haqida bilib olamiz . Shuningdek, biz Java kodidagi belgi yoki pastki qator indeksini qidirishni tushunish va undan samarali foydalanishga yordam beradigan misollarni ko'rib chiqamiz. Kofe tanaffusi №116.  Java-da funktsiya ko'rsatkichlaridan qanday foydalanish kerak.  Java-da indexOf - Java-da satr indeksini qanday topish mumkin - 2

indexOf usulining sintaksisi

indexOf usuli quyidagi usullarga ega:
public int indexOf(int char)
public int indexOf(int char, int fromIndex)
public int indexOf(String str)
public int indexOf(String str, int fromIndex)
Keling, ushbu parametrlarni tushuntiramiz:
  • char har bir satrda bitta belgini ifodalaydi.
  • fromIndex belgi yoki pastki qator indeksini qidirishni boshlash kerak bo'lgan pozitsiyani belgilaydi. Agar satrda bir xil qiymatga ega bo'lgan ikkita belgi/satr mavjud bo'lsa, bu muhim ahamiyatga ega. Ushbu parametr yordamida siz indexOf usulini qaerdan boshlashni aytishingiz mumkin .
  • str satrdagi pastki qatorni ifodalaydi.
Agar siz hali hammasi qanday ishlashini tushunmasangiz, tashvishlanmang - misollar hamma narsani aniq ko'rsatib beradi!

Java'da indexOf usulidan qanday foydalanish kerak

Birinchi misolda biz satrdagi bitta belgining indeksini topamiz. Bu bizga public int indexOf(int char) usulini tushunishga yordam beradi .

IndexOf(int Char) usuli misoli

public class Main {
  public static void main(String[] args) {
    String greetings = "Hello World";

    System.out.println(greetings.indexOf("o"));

    // 4
  }
}
Yuqoridagi kodda bizga qaytarilgan "o" belgisining indeksini oldik, bu 4. Bizda ikkita "o" belgisi bor, lekin faqat birinchisining indeksi qaytarildi. Quyidagi misolda biz ikkinchi "o" ning indeksini qanday qaytarishimiz mumkinligini ko'rib chiqamiz. Agar siz ketma-ketlik raqamlari qanday olinishiga qiziqsangiz, satrdagi birinchi belgining indeksi nolga teng ekanligini, ikkinchi belgining indeksi bitta ekanligini va hokazo.

indexOf(int Char, Int fromIndex) usuliga misol

Mana int indexOf(int char, int fromIndex) usulini tushuntiruvchi misol :
public class Main {
  public static void main(String[] args) {
    String greetings = "Hello World";

    System.out.println(greetings.indexOf("o", 5));

    // 7
  }
}
Yuqoridagi misolda biz indexOf usulini beshinchi indeksda ishlay boshlashini aytamiz. H => indeks 0 e => indeks 1 l => indeks 2 l => indeks 3 0 => indeks 4 E'tibor bering, indeks 5 "W" belgisi emas. Beshinchi indeks - "Salom" va "Dunyo" orasidagi bo'shliq. Shunday qilib, ushbu kodda beshinchi indeksdan oldingi barcha boshqa belgilar e'tiborga olinmaydi. 7 ikkinchi "o" belgisining indeksi sifatida qaytariladi.

Int indexOf(String Str) usuliga misol

Quyidagi misolda biz substring indeksini qaytaruvchi public int indexOf(String str) usuli qanday ishlashini tushunamiz.
public class Main {
  public static void main(String[] args) {
    String motivation = "Coding can be difficult but don't give up";

    System.out.println(motivation.indexOf("be"));

    // 11
  }
}
Qiziq, qanday qilib 11 ni qaytarib oldik? Indekslar qanday hisoblanishini va pastki satrlar orasidagi bo'shliqlar qanday indeks deb hisoblanishini tushunish uchun oxirgi qismni ko'rib chiqishingiz kerak. E'tibor bering, pastki qator parametr sifatida uzatilganda, qaytariladigan indeks pastki qatordagi birinchi belgi indeksidir. 11 - "b" belgisining indeksi.

indexOf(String Str, Int fromIndex) usuliga misol

Oxirgi usul - public int indexOf(String str, int fromIndex) - public int indexOf(int char, int fromIndex) usuli bilan bir xil . Belgilangan joydan indeksni qaytaradi.
public class Main {
  public static void main(String[] args) {
    String motivation = "The for loop is used for the following";

    System.out.println(motivation.indexOf("for", 5));

    // 21
  }
}
Ushbu misolda biz usul o'z ishini birinchi pastki qatordan keyin keladigan beshinchi indeksdan boshlashi kerakligini ko'rsatdik. 21 - for ning ikkinchi pastki qatori indeksi. Nihoyat, satrda bo'lmagan belgi yoki pastki qatorni o'tkazganimizda, indexOf usuli -1ni qaytaradi. Mana bir misol:
public class Main {
  public static void main(String[] args) {
    String motivation = "The for loop is used for the following";

    System.out.println(motivation.indexOf("code"));

    // -1
  }
}

Xulosa

Ushbu maqolada biz aniq misollar bilan to'rtta indexOf usulidan qanday foydalanishni bilib oldik. Shuningdek, biz ushbu usullarning har biri uchun sintaksis qanday ko'rinishini va ular indeksni qanday qaytarish kerakligini ko'rdik. Bundan tashqari, biz mavjud bo'lmagan belgi yoki pastki qator parametr sifatida berilganda nima sodir bo'lishini bilib oldik.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION