Java-da funksiýa görkezijilerini nädip ulanmaly
Çeşme: Dev.to Pointers - ýat salgysyny saklaýan we bahadan geçmegiň ýerine gönüden-göni maksat obýektine, massiwine ýa-da üýtgeýän adrese yşarat edip ýady ýatda saklap bilýän obýektlerdir. Gynansagam, Java-da görkezijiler barada “hakyky” düşünje ýok. Emma, bagtymyza, hakyky zada ýakyn bolan usul salgylanmalaryny ulanyp, bir çözgüt bar.Funksiýa görkezijileri
Funksiýa görkezijisi, funksiýanyň salgysyny görkezýän görkeziji. Käbir ulanylyş ýagdaýlary, ýerine ýetirilişine esaslanýan başga bir funksiýa çagyrýan bir funksiýa döretmek ýa-da dinamiki diýilýän usullar üçin köp sanly funksiýa görkezijisini saklamak arkaly yzyna çagyryş düzgünini döretmegi öz içine alýar (mysal üçin, emulýator üçin prosessor görkezmelerini saklamak).Funksiýa görkezijisiniň simulýasiýasy
Usul salgylanmalarynyň dört görnüşi bar . Belli bir obýektiň mysal usulyna degişli görnüşi ulanýarys. Geliň, görkezýän usullaryňyzyň gollaryny kesgitleýän interfeýsi kesgitlemekden başlalyň.// Wrapping interface
private interface FunctionPointer {
// Method signatures of pointed method
void methodSignature(int a);
}
Soňra maksatly usulyň goly bilen usullary dörederis.
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);
}
Indiki ädim, örtük interfeýs üýtgeýjilerini döretmek we olara usullary bellemek. Üýtgeýjiler saklanjak ýa-da ýerine ýetirilmeli funksiýa görkeziji hökmünde çykyş eder.
// 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);
3-nji bitewi bilen 1-nji usul diýilýär
Lambda aňlatmalaryny ulanmak
Usul salgylanmalaryny lambda aňlatmalary ulanyp belläp bolýar.// 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);
Funksiýa görkezijileriniň hatary
Usul salgylanmalarynyň toplumynyň işleýşini, interfeýs massiwini döretmek arkaly öýkünip bolýar.// 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);
Funksiýa görkezijisi vs göni jaň
Iki warianty deňeşdirseňiz, usuly göni çagyrmak, usul salgylanmasyny ulanmakdan 5 esse çaltdyr. Bularyň hemmesi, saklanylýan usul bilen deňeşdirilende lambda aňlatmasyny çagyrmagyň goşmaça ädimi sebäpli. Probablyöne bir ýyldan öndürijilik ýitgisini duýmarsyňyz, şonuň üçin alada etme.Netije
Görkezijiler baha däl-de, obýektiň salgysyna gönüden-göni görkezýän üýtgeýjilerdir. Funksiýa görkezijisi ýadyň sarp edilişini azaldyp bilýän funksiýa salgysyna gönüden-göni görkezýär. Java-da görkezijiler ýok, ýöne usul salgylanmalaryny ýa-da lambda aňlatmalaryny ulanyp, özüni alyp barşyny öýkünip bilýär. Usul salgylanmasyny ulanmak usuly gönüden-göni çagyrmakdan has haýal, ýöne bu onuň ulanylmagyna päsgel bermeýär.JavaOx-da indexOf - Java-da setiriň indeksini nädip tapmaly
Çeşme: FreeCodeCamp Bir setir goşa dyrnakda ýerleşdirilen nyşanlaryň toplumydyr. “IndexOf” usuly görkezilen simwolyň ýa-da setirdäki aşaky görkezijini görkezýär. Bu makalada dürli indexOf usullarynyň sintaksisini öwreneris . Şeýle hem, bir nyşan indeksini ýa-da Java kodundaky substringi gözlemäge düşünmäge we netijeli ulanmaga kömek etjek mysallara serederis.IndexOf usulynyň sintaksis
IndexOf usulynyň aşakdaky usullary bar:public int indexOf(int char)
public int indexOf(int char, int fromIndex)
public int indexOf(String str)
public int indexOf(String str, int fromIndex)
Geliň, bu parametrleri düşündireliň:
- char her setirde bir nyşan görkezýär.
- fromIndex, nyşanlaryň ýa-da aşaky görkezijileriň gözleginiň başlamaly ýerini kesgitleýär. Bir setirde deň bahasy bolan iki simwol / setir bar bolsa bu möhümdir. Bu parametr bilen, nireden başlamalydygyny indexOf usulyna aýdyp bilersiňiz .
- str setirdäki aşaky bölegi aňladýar.
Java-da indexOf usulyny nädip ulanmaly
Ilkinji mysalda bir simwolyň görkezijisini setirde taparys. Bu , köpçülige açyk int indexOf (int char) usulyna düşünmäge kömek eder .IndexOf (int Char) usulynyň mysaly
public class Main {
public static void main(String[] args) {
String greetings = "Hello World";
System.out.println(greetings.indexOf("o"));
// 4
}
}
Aboveokardaky kodda, “o” harpynyň indeksini aldyk, bu bolsa 4-e deňdir. Iki sany “o” harpymyz bar, ýöne diňe birinjisiniň görkezijisi yzyna gaýtaryldy. Aşakdaky mysalda ikinji "o" indeksini nädip yzyna gaýtaryp boljakdygyny göreris. Yzygiderlilik sanlarynyň nädip alynýandygy bilen gyzyklanýan bolsaňyz, setirdäki birinji harpyň nol görkezijisine, ikinji simwolyň bir görkezijisine we ş.m.
IndexOf (int Char, Int fromIndex) usulynyň mysaly
Ine , int indexOf (int char, int fromIndex) usulyny düşündirýän mysal :public class Main {
public static void main(String[] args) {
String greetings = "Hello World";
System.out.println(greetings.indexOf("o", 5));
// 7
}
}
Aboveokardaky mysalda, indexOf usulyna bäşinji indeksde işe başlamagy aýdýarys. H => indeks 0 e => indeks 1 l => indeks 2 l => indeks 3 0 => indeks 4 5 indeksiň “W” nyşan däldigine üns beriň. Bäşinji görkeziji “Salam” bilen “Dünýä” arasyndaky boşluk. Şeýlelik bilen, bu kodda bäşinji indeksden öňki beýleki nyşanlaryň hemmesi hasaba alynmaz. 7 “o” ikinji belginiň görkezijisi hökmünde yzyna gaýtarylýar.
Int indexOf (String Str) usulynyň mysaly
Aşakdaky mysalda, substringiň indeksini yzyna gaýtarýan köpçülikleýin int indexOf (String str) usulynyň nähili işleýändigine düşüneris .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
}
}
11-ni nädip yzyna aldyk? Indeksleriň nädip sanalýandygyna we aşaky bölekleriň arasyndaky boşluklaryň hem indeks hasaplanýandygyna düşünmek üçin soňky bölümi gözden geçirmeli. Substring parametr hökmünde geçende, yzyna gaýtarylan indeks substringdäki birinji harpyň görkezijisidir. 11 “b” harpynyň görkezijisidir.
IndexOf (String Str, Int fromIndex) usulynyň mysaly
Iň soňky usul köpçülikleýin int indexOf (String str, int fromIndex) - köpçülikleýin int indexOf (int char, int fromIndex) usuly bilen deňdir . Indeks görkezilen ýagdaýdan gaýtarylýar.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
}
}
Bu mysalda, usulyň öz işine birinji substratdan soň gelýän bäşinji indeksde başlamalydygyny kesgitledik. 21 üçin ikinji aşaky görkezijiniň görkezijisidir. Ahyrynda, setirde bolmadyk bir nyşan ýa-da aşaky ýazgydan geçenimizde, indexOf usuly -1 gaýdyp geler. Ine bir mysal:
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
}
}
GO TO FULL VERSION