Привет!
Программисты часто пользуются методами на автомате, не задумываясь, как они работают. Речь идет о базовых методах, которые вы обязаны знать.
Для чего нужен метод
Представьте, что у вас есть длинная строка. К примеру, письмо, и вам нужно найти место, в котором происходит первое обращение к адресату по имени, которое вы уже знаете. Как вы это сделаете? Воспользуетесь методом Варианты метода
Метод № 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
P. S. Чтобы ничего не перепутать, нужно не забывать, что отсчет символов в строке идет не с «1,2,3…», а с «0,1,2...»№ 2. indexOf(int ch, int fromIndex)
Метод int indexOf(int ch, int fromIndex)
возвращает индекс в этой строке первого вхождения указанного символа, начиная поиск по указанному индексу.
Данный метод является более модернизированной версией предыдущего. C разницей в том, что мы указываем номер элемента, с которого собственно и начнется поиск.
Пример:
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
P. S. В некоторых случаях данные методы взаимозаменяемые, как вот например 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
P. S. Все вариации 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
P. S. Если задать отрицательный стартовый индекс, то метод indexOf
воспримет его как 0. В таком случае метод опять же станет аналогичен предыдущему (в котором не указан стартовый индекс).
Это все на сегодня. Теперь твой запас знаний стал больше благодаря indexOf
Java!
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ