Вітання! Програмісти часто користуються методами на автоматі, не замислюючись, як вони працюють. Йдеться про базові методи, які ви повинні знати.
Для чого потрібний метод
Уявіть, що у вас є довгий рядок. Наприклад, лист, і вам потрібно знайти місце, де відбувається перше звернення до адресаата на ім'я, яке ви вже знаєте. Як ви це зробите? Скористаєтеся методом Варіанти методу
Метод №1.
Метод №2.
Метод №3.
Метод №4.
Метод
Що таке навантаження методів?
Перш, ніж ми розглянемо метод, про який згадали в заголовку, давайте згадаємо (а хтось і дізнається), що таке навантаження методів. Перевантаження методів Java дозволяє визначення всередині одного класу двох або більше методів з тим самим ім'ям. Це можливо тільки в тому випадку, якщо вони мають різні вхідні параметри. У цьому випадку методи називають перевантаженими, а сам процес — перевантаженням методів. Перевантаження методів - це один із основоположних принципів поліморфізму в Java.Для чого потрібний метод indexOf
класуString
Уявіть, що у вас є довгий рядок. Наприклад, лист, і вам потрібно знайти місце, де відбувається перше звернення до адресаата на ім'я, яке ви вже знаєте. Як ви це зробите? Скористаєтеся методом indexOf java
класу String
. Цей метод - типовий приклад навантаження методів, про яку ми говорабо вище.
Варіанти методуindexOf
Метод java string indexOf
має чотири різні варіації:
№1.indexOf(int ch)
Метод int indexOf(int ch)
повертає індекс у даному рядку першого входження вказаного символу. Іншими словами, ми отримаємо номер першого входження заданого символу, рахуючи ліворуч-праворуч. Приклад:
public static void main(String[] args) {
String str = "Diego, where is my money?";
int value = str.indexOf('e');
System.out.println(value);
}
Виведення в консоль:
2
Якщо ж символ, який ми шукаємо, відсутній у даному рядку, ми отримаємо -1.
public static void main(String[] args) {
String str = "Diego, where is my money?";
int value = str.indexOf('j');
System.out.println(value);
}
Виведення в консоль:
-1
PS Щоб нічого не переплутати, потрібно не забувати, що відлік символів у рядку йде не з 1,2,3 ..., а з 0,1,2 ...
№2.indexOf(int ch, int fromIndex)
Метод int indexOf(int ch, int fromIndex)
повертає індекс у цьому рядку першого входження вказаного символу, починаючи пошук за вказаним індексом. Цей метод є більш модернізованою версією попереднього. З різницею в тому, що ми вказуємо номер елемента, з якого, власне, і почнеться пошук. Приклад:
public static void main(String[] args) {
String str = "Diego, where is my money?";
int value = str.indexOf('e',5);
System.out.println(value);
}
Виведення в консоль:
9
Якщо індекс, з якого буде вестися пошук, перевищує довжину рядка, відповідь буде -1. Як ви напевно помітабо, в сигнатурі цих двох методів (те, що приймають методи як аргументи), тип для символу, що передається, вказаний як int
, а не char
. Проте ми передавали char
. Все тому, що рядки зберігаються у вигляді масиву байтів, де осередки відповідає певному символу типу char
. Відповідність між байтами char
проводиться за таблицею ASCII. ASCII (American standard code for information interchange) - таблиця, в якій поширені друковані та недруковані символи зіставлені з числовими кодами. Тому коли передається певний символchar
, він автоматично конвертується в число, яке представляє цей символ таблиці ASCII. Виходячи з цього, ми можемо передати до методу безпосередньо число ( int
), яке відповідає потрібному нам символу. Наприклад, символу 'e' у таблиці ASCII відповідає число 101, тому ми можемо повторити попередній приклад, але вже без char
:
public static void main(String[] args) {
String str = "Diego, where is my money?";
int value = str.indexOf(101,5);
System.out.println(value);
}
Висновок у консоль у нас не змінився:
9
PS У деяких випадках дані методи взаємозамінні, як наприклад str.indexOf('e');
буде аналогічний - str.indexOf('e', 0);
.
№3.indexOf(String str)
Метод int indexOf(String str)
повертає індекс у даному рядку першого входження зазначеного підрядка. Він кардинально відрізняється від першого варіанта тим, що даний метод шукає вже цілий підряд ( String
). Завдяки цьому ми можемо шукати вже щось конкретніше. Приклад:
public static void main(String[] args) {
String str = "Diego, where is my money? Diego,you made me very upset";
int value = str.indexOf("Diego");
System.out.println(value);
}
Виведення в консоль:
0
PS Усі варіації indexOf
чутливі до регістру: символи верхнього регістру (великі літери) та символи нижнього регістру (маленькі літери) вважаються різними. Будьте уважні.
№4.indexOf(String str, int fromIndex)
Метод indexOf(String str, int fromIndex)
повертає індекс у цьому рядку першого входження зазначеного підрядка, починаючи із зазначеного індексу. Даний варіант є знову ж таки більш модернізованим попереднім варіантом, але вже із зазначенням місця, з якого буде вестися пошук. Приклад:
public static void main(String[] args) {
String str = "Diego, where is my money? Diego,you made me very upset";
int value = str.indexOf("Diego", 1);
System.out.println(value);
}
Виведення в консоль:
26
PS Якщо задати негативний стартовий індекс, то метод indexOf
сприйме його як 0. У такому випадку метод знову ж таки стане аналогічним попередньому (у якому не вказано стартовий індекс). Це все на сьогодні. Тепер твій запас знань став більшим завдяки indexOf
Java!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ