- Java. Массивы строк. Одномерные и двумерные массивы строк. Инициализация массивов строк. Примеры решения задач
- Массивы строк в Java. Одномерные и двумерные массивы строк. Инициализация массивов строк. Примеры решения задач
- Связанные темы
- Многомерные массивы Java
- Как инициализировать двумерный массив Java?
- Как инициализировать многомерный массив Java?
Java. Массивы строк. Одномерные и двумерные массивы строк. Инициализация массивов строк. Примеры решения задач
Массивы строк в Java. Одномерные и двумерные массивы строк. Инициализация массивов строк. Примеры решения задач
Поиск на других ресурсах:
1. Понятие массива строк. Общая форма объявления одномерного массива строк
Как и любой язык программирования, язык программирования Java может реализовывать массивы строк. Любая строка в Java имеет тип String . Одномерный массив строк имеет тип String[] . Двумерный массив строк имеет тип String[][] .
Общая форма объявления и выделение памяти для одномерного массива строк
String[] arrayName = new String[size];
- String – встроенный в Java класс, который реализует строку символов. Объект типа String поддерживает большой набор операций, которые можно просмотреть здесьи здесь ;
- arrayName – имя объекта (экземпляра) типа String . Фактически, arrayName есть ссылкой на объект типа String ;
- size – размер массива (количество строк, количество элементов типа String ).
Объявление одномерного массива строк и выделение памяти для него можно реализовать и по другому
String[] arrayName;
arrayName = new String[size];
2. Каким образом объявляется одномерный массив строк? Пример
Ниже приведен пример объявления и использования одномерного массива строк.
// объявление одномерного массива строк
String[] array = new String[5];
// заполнение начальными значениями
array[0] = "abcd";
array[1] = "Hello";
array[2] = ""; // пустая строка
array[3] = "bestprog";
array[4] = ";:\\+ color: #008000;">// комбинация "\\" заменяется на "\"
// использование в выражениях
arrayS[4] = arrayS[1] + " " + arrayS[3]; // arrayS[4] = "Hello bestprog"
arrayS[4] += ".net"; // arrayS[4] = "Hello bestprog.net"
Как видно из примера, работа с массивами строк в Java есть довольно удобной и не требует сложных дополнительных преобразований на их обработку.
3. Двумерный массив строк. Общая форма
Возможно, в некоторых задачах возникнет потребность в объявлении двумерного массива строк.
Общая форма объявления двумерного массива строк следующая:
String[][] matrName = new String[n][m];
- matrName – имя объекта (ссылка на объект), который есть двумерным массивом типа String ;
- n – количество строк в массиве matrName ;
- m – количество столбцов в массиве matrName .
Возможен также другой способ объявления и выделения памяти для двумерного массива строк:
String[][] matrName; // объявление ссылки на двумерный массив строк
matrName = new String[n][m];
4. Пример объявления и использования двумерного массива строк
Ниже приведен пример объявления и использования двумерного массива строк
// объявление двумерного массива строк
String[][] matr = new String[2][3];
// заполнение массива значениями
for (int i=0; ilength; i++)
for (int j=0; jlength; j++)
matrS[i][j] = "matrS[" + i + "][" + j + "]";
// проверка
String s;
s = matrS[0][0]; // s = "matrS[0][0]"
s = matrS[1][1]; // s = "matrS[1][1]"
5. Как определяется длина массива строк? Свойство length . Пример
Чтобы определить количество строк в массиве используется свойство length .
Для одномерных массивов количество строк n определяется следующим образом:
String[] arrayS = new String[25];
int n;
n = array.length;
Для двумерных массивов количество строк и столбцов определяется следующим образом
// matr - двумерный массив строк
String[][] matrS = new String[2][3];
int n, m;
n = matr.length; // n = 2 - количество строк
m = matr[0].length; // m = 3 - количество столбцов
m = matr[1].length; // m = 3
6. Как осуществляется инициализация одномерного массива? Пример
Инициализация одномерного массива строк точно такая же как инициализация одномерого массива любого другого типа.
// инициализация одномерного массива строк
String[] M = "Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
>;
String s;
s = M[2]; // s = "Tuesday"
s = M[4]; // s = "Thursday"
7. Поиск заданной строки в одномерном массиве строк. Пример
// поиск заданной строки в массиве строк
// объявление массива строк
String M[] = new String[5];
String s = "May"; // строка, которую нужно найти
boolean f_is;
// заполнение массива значениями
M[0] = "January";
M[1] = "February";
M[2] = "May";
M[3] = "October";
M[4] = "December";
// поиск строки
f_is = false;
for (int i=0; ilength; i++)
if (M[i]==s) f_is = true;
break;
>
// вывод результата
if (f_is)
System.out.println("Искомая строка есть в массиве.");
else
System.out.println("Искомой строки нет в массиве.");
8. Сортировка одномерного массива строк по алфавиту методом вставки. Пример
Для сравнения двух строк в лексикографическом порядке в классе String разработан метод compareTo() . Общая форма метода следующая:
int compareTo(вторая_строка)
Фрагмент, который демонстрирует сортировку массива строк методом вставки:
// сортировка массива строк методом вставки
String[] M = "abc",
"bde",
"fgh",
"abcd",
"bcdef",
"cdef",
"fghij",
"aaa"
>;
String s;
// сортировка
for (int i=0; ilength-1; i++)
for (int j=i; j>=0; j--)
if (M[j].compareTo(M[j+1])>0) // обменять M[j] и M[j+1] местами
s = M[j];
M[j] = M[j+1];
M[j+1] = s;
>
// вывод результата
for (int i=0; ilength; i++)
System.out.println(M[i]);
В результате выполнения вышеприведенного кода, на экран будет выведено следующее
aaa
abc
abcd
bcdef
bde
cdef
fgh
fghij
9. Как осуществляется инициализация двумерного массива строк? Пример
Инициализация двумерного массива строк ничем не отличается от инициализации двумерного массива любого примитивного типа. Элементами массива есть обычные строки.
Ниже приведен пример инициализации двумерного массива строк с именем M
// объявление массива M с начальной инициализацией
String M[][] = new < "a1", "a2", "a3" >,
< "b1", "b2", "b3" >,
< "a1", "c2", "a1" >
>;
// проверка
String s;
s = M[0][1]; // s = "a2"
s = M[1][0]; // s = "b1"
10. Пример подсчета количества вхождений заданной строки в двумерном массиве строк
// вычисление количества вхождений заданной строки в двумерном массиве
// объявление массива M с начальной инициализацией
String M[][] = < "abcd", "abc", "bcd" >,
< "acd", "bcd", "abcd" >,
< "abc", "bc", "cde" >
>;
String s = "abc"; // строка, количество вхождений которой нужно вычислить
int k = 0; // количество вхождений, результат
for (int i=0; ilength; i++)
for (int j=0; jlength; j++)
if (M[i][j]==s)
k++;
// k = 2
11. Пример замены строки в двумерном массиве строк
- двумерный массив строк с именем matr ;
- строка s1 , которая ищется для замены;
- строка s2 , которая заменяет строку s1 .
Разработать программу, которая заменяет строку s1 в матрице matr новой строкой s2 . Фрагмент кода, который решает данную задачу:
// объявление двумерного массива строк
String[][] matr = new String[2][3];
// заполнение матрицы matr произвольными значениями
matrS[0][0] = "abc";
matrS[0][1] = "cba";
matrS[0][2] = "def";
matrS[1][0] = "abc";
matrS[1][1] = "fff";
matrS[1][2] = "qqq";
// заполнение значениями строк s1 и s2
String s1 = "abc"; // заменяемая строка
String s2 = "mmm"; // заменяющая строка
// цикл вычисления
for (int i=0; ilength; i++)
for (int j=0; jlength; j++)
if (matrS[i][j]==s1)
matr[i][j] = s2;
// вывод результата
for (int i=0; ilength; i++) for (int j=0; jlength; j++)
System.out.print(matrS[i][j] + " ");
System.out.println();
>
В результате выполнения вышеприведенного кода, на экран будет выведен следующий результат:
Связанные темы
Многомерные массивы Java
В Java можно объявить массив массивов, известный как многомерный массив. К примеру:
Здесь мы видим двухмерный массив Java , который может содержать до 12 элементов типа int :
Не забывайте, что индексирование в Java начинается с нуля, поэтому первые элементы массива имеют индекс 0 , а не 1 .
Аналогично можно объявить и трёхмерный ( 3D ) массив. Например:
String[][][] personalInfo = new String[3][4][2];
В примере выше personalInfo — это трёхмерный массив, в котором может быть до 24 (3*4*2) элементов типа String .
В Java составляющие многомерного массива — это тоже массивы. Если вы знаете C/C++ , то может показаться, что многомерные массивы в Java и C/C++ работают одинаково. Но это не совсем так — в Java ряды массивов могут быть разной длины. Разницу мы увидим во время инициализации.
Как инициализировать двумерный массив Java?
Ниже приводится пример инициализации двумерного массива Java :
Каждый компонент массива также представляет собой массив, и длина каждого ряда отличается:
Давайте напишем программу, чтобы это доказать:
class MultidimensionalArray < public static void main(String[] args) < int[][] a = < , , , >; System.out.println("Длина ряда 1: " + a[0].length); System.out.println("Длина ряда 2: " + a[1].length); System.out.println("Длина ряда 3: " + a[2].length); > >
При запуске этой программы мы получим:
Длина ряда 1: 3
Длина ряда 2: 4
Длина ряда 3: 1
Поскольку многомерный массив состоит из отдельных массивов (a[0], a[1] and a[2]) , можно использовать метод length для определения длины каждого ряда длины двумерного массива Java.
Пример: вывод на экран всех элементов двумерного массива с помощью циклов :
class MultidimensionalArray < public static void main(String[] args) < int[][] a = < , , , >; for (int i = 0; i < a.length; ++i) < for(int j = 0; j < a[i].length; ++j) < System.out.println(a[i][j]); >> > >
Всегда лучше использовать цикл for…each , когда нужно пройти по элементам массива. Пример сортировки двумерного массива Java можно записать с помощью цикла for…each следующим образом:
class MultidimensionalArray < public static void main(String[] args) < int[][] a = < , , , >; for (int[] innerArray: a) < for(int data: innerArray) < System.out.println(data); >> > >
При запуске этой программы мы получим следующий результат заполнения двумерного массива Java :
Как инициализировать многомерный массив Java?
Многомерный или трёхмерный массив инициализируется почти так же, как двухмерный:
// test — трёхмерный массив int[][][] test = < < , >, < , , > >;
Трёхмерный массив — это массив, состоящий из двумерных массивов. Как и у двумерных массивов Java , его ряды могут быть различной длины.
Пример: программа для вывода элементов трёхмерного массива с помощью циклов :
class ThreeArray < public static void main(String[] args) < // test – трёхмерный массив int[][][] test = < < , >, < , , > >; // цикл for..each проходит по элементам трёхмерного массива for (int[][] array2D: test) < for (int[] array1D: array2D) < for(int item: array1D) < System.out.println(item); >> > > >
При запуске программы вывода двумерного массива Java получаем следующий результат:
1 -2 3 2 3 4 -4 -5 6 9 1 2 3
МК Михаил Кузнецов автор-переводчик статьи «