JavaRush /Java блогу /Random-KY /Кофе-брейк №116. Java'да функция көрсөткүчтөрүн кантип ко...

Кофе-брейк №116. Java'да функция көрсөткүчтөрүн кантип колдонсо болот. Javaдагы indexOf - Javaда саптын индексин кантип тапса болот

Группада жарыяланган

Java'да функция көрсөткүчтөрүн кантип колдонуу керек

Source: Dev.to Көрсөткүчтөрү – эстутум дарегин сактаган an objectтер жана маани боюнча өтүүнүн ордуна максаттуу an objectке, массивге же өзгөрмө даректи түздөн-түз көрсөтүү менен эстутумду сактай алат. Тилекке каршы, Java тorнде көрсөткүчтөрдүн "чыныгы" түшүнүгү жок. Бирок, биздин бактыга жараша, реалдуу нерсеге жакын болгон шилтемелерди колдонуу менен чечүүчү жол бар. Кофе-брейк №116.  Java'да функция көрсөткүчтөрүн кантип колдонуу керек.  Javaдагы indexOf - Javaда саптын индексин кантип тапса болот - 1

Функция көрсөткүчтөрү

Функциянын көрсөткүчү – функциянын дарегин көрсөткөн көрсөткүч. Кээ бир колдонуу учурлары анын аткарылышынын негизинде башка функцияны чакырган функцияны түзүү же динамикалык деп аталган методдор үчүн функция көрсөткүчтөрүнүн массивдерин сактоо (мисалы, эмулятор үчүн процессордун көрсөтмөлөрүн сактоо) аркылуу кайра чалуу тартибин түзүүнү камтыйт.

Функция көрсөткүчүнүн симуляциясы

Метод шилтемелеринин төрт түрү бар . Биз белгилүү бир an objectтин инстанция ыкмасына тиешелүү типти колдонобуз. Келиңиз, сиз көрсөткөн ыкмалардын кол тамгаларын аныктаган интерфейсти аныктоодон баштайлы.
// Wrapping interface
private interface FunctionPointer {
  // Method signatures of pointed method
  void methodSignature(int a);
}
Андан кийин максаттуу ыкманын кол тамгасы менен методдорду түзөбүз.
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);
}
Кийинки кадам - ​​орогуч интерфейсинин өзгөрмөлөрүн түзүү жана аларга методдорду дайындоо. Өзгөрмөлөр сактала турган же аткарыла турган функцияга көрсөткүч катары кызмат кылат.
// 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 бүтүн сан менен метод1 деп аталат 2 бүтүн сан менен метод2 деп аталат 5 бүтүн сан менен метод3 деп атады

Lambda туюнтмаларын колдонуу

Метод шилтемелери lambda туюнтмаларын колдонуу менен дайындалышы мүмкүн.
// 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);

Функция көрсөткүчтөрүнүн массиви

Метод шилтемелеринин массивинин функционалдуулугун орогуч интерфейсинин массивин түзүү аркылуу эмуляциялоого болот.
// 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);

Функция көрсөткүчү жана түз чалуу

Эгер сиз эки вариантты тең салыштырсаңыз, ыкманы түз чакыруу метод шилтемесин колдонууга караганда дээрлик 5 эсе тезирээк болот. Мунун баары сакталган ыкмага салыштырмалуу ламбда туюнтмасын чакыруунун кошумча кадамы менен байланыштуу. Бирок, балким, сиз бир жылдын ичинде эч кандай өндүрүмдүүлүктү жоготууну байкабай каласыз, андыктан кабатыр болбоңуз.

Корутунду

Көрсөткүчтөр мааниге эмес, an objectтин дарегине түздөн-түз көрсөткөн өзгөрмөлөр. Функциянын көрсөткүчү түздөн-түз функциянын дарегин көрсөтөт, ал эстутум керектөөсүн азайтат. Java көрсөткүчтөрү жок, бирок метод шилтемелерин же ламбда туюнтмаларын колдонуу менен жүрүм-турумду эмуляциялай алат. Метод шилтемесин колдонуу методду түздөн-түз чакырууга караганда жайыраак, бирок бул аны колдонууга тоскоолдук кылbyte.

Javaдагы indexOf - Javaда саптын индексин кантип тапса болот

Булак: FreeCodeCamp Сап - кош тырмакчага алынган символдордун жыйындысы. indexOf ыкмасы сапта көрсөтүлгөн символдун же субсаптын индексинин абалын кайтарат. Бул макалада биз ар кандай indexOf ыкмаларынын синтаксиси жөнүндө билебиз . Ошондой эле биз Java codeундагы символдун же субсаптын индексин издөөнү түшүнүүгө жана натыйжалуу пайдаланууга жардам бере турган мисалдарды карап чыгабыз. Кофе-брейк №116.  Java'да функция көрсөткүчтөрүн кантип колдонуу керек.  Javaдагы indexOf - Java'да саптын индексин кантип тапса болот - 2

indexOf методунун синтаксиси

indexOf методунда төмөнкү ыкмалар бар:
public int indexOf(int char)
public int indexOf(int char, int fromIndex)
public int indexOf(String str)
public int indexOf(String str, int fromIndex)
Келгиле, бул параметрлерди түшүндүрүп көрөлү:
  • char ар бир сапта бир символду билдирет.
  • fromIndex символдун же субсаптын индексин издөө баштала турган позицияны аныктайт. Бул сизде сапта бирдей мааниге ээ болгон эки белги/сап болгондо маанилүү. Бул параметр менен сиз indexOf ыкмасына кайдан баштоону айта аласыз .
  • str саптагы ички сапты билдирет.
Мунун баары кантип иштээрин түшүнө элек болсоңуз, кабатыр болбоңуз — мисалдар баарын ачык-айкын көрсөтүп берет!

Java'да indexOf ыкмасын кантип колдонсо болот

Биринчи мисалда биз саптагы бир символдун индексин табабыз. Бул бизге public int indexOf(int char) ыкмасын түшүнүүгө жардам берет .

IndexOf(int Char) методунун мисалы

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

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

    // 4
  }
}
Жогорудагы codeдо биз “o” символунун индексин алдык, бул 4. Бизде “o” эки символу бар, бирок биринчисинин гана индекси кайтарылды. Кийинки мисалда биз экинчи "o" индексин кантип кайтара аларыбызды көрөбүз. Эгерде сиз ырааттуу номерлер кантип чыгарылат деп кызыгып жатсаңыз, саптын биринчи символунун индекси нөлгө барабар экенин, экинчи символдун индекси бир экенин жана башкаларды байкайсыз.

indexOf(int Char, Int fromIndex) методунун мисалы

Бул жерде int indexOf(int char, int fromIndex) ыкмасын түшүндүргөн мисал :
public class Main {
  public static void main(String[] args) {
    String greetings = "Hello World";

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

    // 7
  }
}
Жогорудагы мисалда биз indexOf ыкмасына бешинчи индексте иштей баштоону айтабыз. H => индекс 0 e => индекс 1 l => индекс 2 l => индекс 3 0 => индекс 4 5 индекси “W” белгиси эмес экенине көңүл буруңуз. Бешинчи индекс "Салам" жана "Дүйнө" ортосундагы боштук болуп саналат. Ошентип, бул codeдо бешинчи индекстин алдындагы бардык башка белгилер этибарга алынbyte. 7 экинчи "o" символунун индекси катары кайтарылат.

Int indexOf(String Str) методунун мисалы

Төмөнкү мисалда биз substring индексин кайтарган public int indexOf(String str) ыкмасы кандайча иштээрин түшүнөбүз.
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ди кантип кайтарып алдык? Индекстердин кантип саналаарын жана ички саптардын ортосундагы боштуктар да индекс катары каралышын түшүнүү үчүн акыркы бөлүмдү карап чыгышыңыз керек. Кошумча сап параметр катары берилгенде, кайтарылган индекс подсаптагы биринчи символдун индекси экенин эске алыңыз. 11 - "б" белгисинин индекси.

indexOf(String Str, Int fromIndex) методунун мисалы

Акыркы ыкма public int indexOf(String str, int fromIndex) - public int indexOf(int char, int fromIndex) методу менен бирдей . Ал көрсөтүлгөн позициядан индексти кайтарат.
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
  }
}
Бул мисалда биз метод өз ишин бешинчи индекстен башташы керек экенин көрсөттүк, ал биринчи саб саптан кийин келет. 21 for экинчи сабынын индекси. Акырында, сапта жок символду же субсапты өткөргөндө, indexOf ыкмасы -1 кайтып келет. Бул жерде бир мисал:
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
  }
}

Корутунду

Бул макалада биз ачык мисалдар менен төрт indexOf ыкмасын кантип колдонууну үйрөндүк . Биз ошондой эле бул ыкмалардын ар биринин синтаксиси кандай экенин жана алар индексти кантип кайтарууну айтышканын көрдүк. Кошумчалай кетсек, биз жок символ же субсап параметр катары берилгенде эмне болорун биле алдык.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION