Прежде чем опубликовать новый ответ, учтите, что на этот вопрос уже есть более 25 ответов. Пожалуйста, убедитесь, что ваш ответ содержит информацию, которой нет среди существующих ответов.
Янник
Ответы:
2684
Вы можете использовать либо объявление массива, либо литерал массива (но только если вы сразу же объявляете и воздействуете на переменную, литералы массива нельзя использовать для повторного назначения массива).
Для примитивных типов:
int[] myIntArray =newint[3];int[] myIntArray ={1,2,3};int[] myIntArray =newint[]{1,2,3};// Since Java 8. Doc of IntStream: https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.htmlint[] myIntArray =IntStream.range(0,100).toArray();// From 0 to 99int[] myIntArray =IntStream.rangeClosed(0,100).toArray();// From 0 to 100int[] myIntArray =IntStream.of(12,25,36,85,28,96,47).toArray();// The order is preserved.int[] myIntArray =IntStream.of(12,25,36,85,28,96,47).sorted().toArray();// Sort
Какова цель наличия второго и третьего способа сделать это?
Quazi Irfan
123
@iamcreasy Похоже, что второй способ не работает с операторами return. return {1,2,3}выдает ошибку, а return new int[]{1,2,3}работает нормально (при условии, конечно, что ваша функция возвращает целочисленный массив).
Скайлар Иттнер
1
@SkylarMT Но мы все еще можем использовать первый способ с оператором return.
Quazi Irfan
6
@iamcreasy Недавно я написал функцию, которая возвращает массив целых чисел. Если внутри функции произошла ошибка, я хотел, чтобы она возвращала определенное значение, но функция должна была возвращать массив. Какой способ работает для однострочного оператора возврата? Только третий.
Скайлар Иттнер
5
@apadana Во втором случае вы создаете анонимный объект, который определен только во входящей области (функция или что-то еще). После возврата его вызывающей стороне он больше не действителен. Используя ключевое слово new, вы выделяете новый объект из кучи, и он действителен вне определяемой области.
teukkam
280
Есть два типа массивов.
Одномерный Массив
Синтаксис для значений по умолчанию:
int[] num =newint[5];
Или (менее предпочтительно)
int num[]=newint[5];
Синтаксис с заданными значениями (инициализация переменной / поля):
int[] num ={1,2,3,4,5};
Или (менее предпочтительно)
int num[]={1,2,3,4,5};
Примечание: для удобства предпочтительным является int [] num, поскольку он четко говорит о том, что вы говорите здесь о массиве. Иначе без разницы. Не за что.
Не приведет ли первый к пустому / пустому массиву вместо массива со значениями по умолчанию?
vipin8169
Я согласен с этим, и мы можем добавить еще одну функцию, мы можем динамически изменять размер.
AdamIJK
Я мог бы поспорить с вами о том, что многомерный массив - это другой «тип» массива. Это просто термин, используемый для описания массива, который содержит другие массивы. И внешние массивы, и внутренние массивы (и промежуточные массивы, если они существуют) являются просто обычными массивами.
Я считаю полезным, если вы понимаете каждую часть:
Type[] name =newType[5];
Type[]это тип из переменной называется именем ( «имя» называется идентификатором ). Литерал «Тип» является базовым типом, а скобки означают, что это тип массива этой базы. Типы массивов, в свою очередь, являются собственными типами, что позволяет вам создавать многомерные массивы, такие как Type[][](тип массива Type []). Ключевое слово newговорит, чтобы выделить память для нового массива. Число между скобками говорит о том, насколько большим будет новый массив и сколько памяти выделяется. Например, если Java знает, что базовый типType занимает 32 байта, и вы хотите массив размером 5, ему нужно внутренне выделить 32 * 5 = 160 байтов.
Вы также можете создавать массивы с уже существующими значениями, такими как
int[] name ={1,2,3,4,5};
который не только создает пустое пространство, но и заполняет его этими значениями. Java может сказать, что примитивы являются целыми числами и их 5, поэтому размер массива можно определить неявно.
Ниже показано объявление массива, но массив не инициализирован:
int[] myIntArray =newint[3];
Ниже показано объявление, а также инициализация массива:
int[] myIntArray ={1,2,3};
Теперь следующее также показывает объявление и инициализацию массива:
int[] myIntArray =newint[]{1,2,3};
Но этот третий показывает свойство создания анонимного массива-объекта, на которое указывает ссылочная переменная "myIntArray", поэтому, если мы напишем просто "new int [] {1,2,3};" тогда это то, как анонимный массив-объект может быть создан.
Если мы просто напишем:
int[] myIntArray;
это не объявление массива, но следующее утверждение завершает вышеуказанное объявление:
Нет абсолютно никакой разницы между вторым и третьим подходами, за исключением того, что второй подход работает только тогда, когда вы также объявляете переменную. Непонятно, что вы подразумеваете под «показывает свойство создания анонимного массива-объекта», но они действительно являются эквивалентными частями кода.
Джон Скит
4
Кроме того , первый фрагмент делает инициализировать массив - это гарантированно иметь значение 0 для каждого элемента массива.
Джон Скит
Неужели нет разницы между вторым и третьим подходами?
Правда
27
С другой стороны,
// Either method worksString arrayName[]=newString[10];String[] arrayName =newString[10];
Это объявляет массив с именем arrayNameразмера 10 (у вас есть элементы от 0 до 9 для использования).
Какой стандарт для чего использовать? Я только что обнаружил первое, и я нахожу это ужасно вводящим в заблуждение: |
Анти-Земля
2
Мой профессор сказал, что второй способ более типичен для Java и лучше передает происходящее; как массив, связанный с типом, переменная была приведена как.
Celeritas
2
Для справки: язык, имеющий более одной семантики для объявления одной вещи, означающей плохой языковой дизайн.
Мухаммад Сулеман,
26
Кроме того, если вы хотите что-то более динамичное, есть интерфейс List. Это не будет работать так же хорошо, но будет более гибким:
List<String> listOfString =newArrayList<String>();
listOfString.add("foo");
listOfString.add("bar");String value = listOfString.get(0);
assertEquals( value,"foo");
@CyprUS Listявляется универсальным классом, он имеет тип в качестве параметра, заключенный в <>. Это помогает, потому что вам нужно определить универсальный тип только один раз, и затем вы можете использовать его с несколькими различными типами. Для более подробного объяснения посмотрите на docs.oracle.com/javase/tutorial/java/generics/types.html
Heimdall
15
Есть два основных способа сделать массив:
Этот для пустого массива:
int[] array =newint[n];// "n" being the number of spaces to allocate in the array
И этот, для инициализированного массива:
int[] array ={1,2,3,4...};
Вы также можете создавать многомерные массивы, например:
int[][] array2d =newint[x][y];// "x" and "y" specify the dimensionsint[][] array2d ={{1,2,3...},{4,5,6...}...};
Возьмите примитивный тип intнапример. Есть несколько способов объявить и intмассив:
int[] i =newint[capacity];int[] i =newint[]{value1, value2, value3, etc};int[] i ={value1, value2, value3, etc};
где во всем этом вы можете использовать int i[]вместо int[] i.
С отражением вы можете использовать (Type[]) Array.newInstance(Type.class, capacity);
Обратите внимание, что в параметрах метода, ...указывает variable arguments. По сути, любое количество параметров в порядке. Это проще объяснить с помощью кода:
Внутри метод, varargsрассматривается как нормальный int[]. Type...может использоваться только в параметрах метода, поэтому int... i = new int[] {}не будет компилироваться.
Обратите внимание, что при передаче int[]метода (или любого другого Type[]) вы не можете использовать третий способ. В этом утверждении int[] i = *{a, b, c, d, etc}*компилятор предполагает, что {...}означает int[]. Но это потому, что вы объявляете переменную. При передаче массива в метод, объявление должно быть new Type[capacity]илиnew Type[] {...} .
Многомерные массивы
С многомерными массивами гораздо сложнее иметь дело. По сути, двумерный массив является массивом массивов. int[][]означает массив int[]с. Ключ в том, что если int[][]объявлено как int[x][y], максимальный индекс i[x-1][y-1]. По сути, прямоугольник int[3][5]это:
int[] a =IntStream.iterate(10, x -> x <=100, x -> x +10).toArray();Out:[10,20,30,40,50,60,70,80,90,100]int[] b =IntStream.iterate(0, x -> x +1).takeWhile(x -> x <10).toArray();Out:[0,1,2,3,4,5,6,7,8,9]
classAnimal{}classHorseextendsAnimal{publicstaticvoid main(String[] args){/*
* Array of Animal can hold Animal and Horse (all subtypes of Animal allowed)
*/Animal[] a1 =newAnimal[10];
a1[0]=newAnimal();
a1[1]=newHorse();/*
* Array of Animal can hold Animal and Horse and all subtype of Horse
*/Animal[] a2 =newHorse[10];
a2[0]=newAnimal();
a2[1]=newHorse();/*
* Array of Horse can hold only Horse and its subtype (if any) and not
allowed supertype of Horse nor other subtype of Animal.
*/Horse[] h1 =newHorse[10];
h1[0]=newAnimal();// Not allowed
h1[1]=newHorse();/*
* This can not be declared.
*/Horse[] h2 =newAnimal[10];// Not allowed}}
В случае объектов, вам нужно либо назначить его, чтобы nullинициализировать их, используя new Type(..)классы, как Stringи Integerявляются особыми случаями, которые будут обрабатываться следующим образом
String[] a ={"hello","world"};// is equivalent toString[] a ={newString({'h','e','l','l','o'}),newString({'w','o','r','l','d'})};Integer[] b ={1234,5678};// is equivalent toInteger[] b ={newInteger(1234),newInteger(5678)};
В общем, вы можете создавать массивы, которые являются Mразмерными
int[][]..[] array =// ^ M times [] brackets{{..{// ^ M times { bracket// this is array[0][0]..[0]// ^ M times [0]}}..}// ^ M times } bracket;
Стоит отметить, что создание Mразмерного массива дорого с точки зрения пространства. Поскольку, когда вы создаете Mразмерный массив со Nвсеми измерениями, общий размер массива больше, чем N^M, так как у каждого массива есть ссылка, а в М-измерении имеется (M-1) -мерный массив ссылок. Общий размер следующий
Space= N^M + N^(M-1)+ N^(M-2)+..+ N^0// ^ ^ array reference// ^ actual data
-50 и / или +50 на самом деле включены? То есть внутреннее открытое на одном или обоих концах?
Питер Мортенсен
1
-50 включено и +50 исключено. Эта информация из Java Api "дано происхождение (включительно) и связано (эксклюзивно)". Я использую интервальное объявление из вики . Поэтому я думаю, что это будет более правильно [-50, 50)
Кирилл Подливаев
3
Еще один способ объявить и инициализировать ArrayList:
privateList<String> list =newArrayList<String>(){{
add("e1");
add("e2");}};
Здесь много ответов. Я добавляю несколько хитрых способов создания массивов (с точки зрения экзамена это полезно знать)
Объявить и определить массив
int intArray[]=newint[3];
Это создаст массив длиной 3. Поскольку он содержит тип примитива int, все значения по умолчанию установлены в 0. Например,
intArray[2];// Will return 0
Использование квадратных скобок [] перед именем переменной
int[] intArray =newint[3];
intArray[0]=1;// Array content is now {1, 0, 0}
Инициализируйте и предоставьте данные в массив
int[] intArray =newint[]{1,2,3};
На этот раз нет необходимости упоминать размер в скобках коробки. Даже простой вариант этого:
int[] intArray ={1,2,3,4};
Массив длины 0
int[] intArray =newint[0];int length = intArray.length;// Will return length 0
Аналогично для многомерных массивов
int intArray[][]=newint[2][3];// This will create an array of length 2 and//each element contains another array of length 3.// { {0,0,0},{0,0,0} }int lenght1 = intArray.length;// Will return 2int length2 = intArray[0].length;// Will return 3
Используя квадратные скобки перед переменной:
int[][] intArray =newint[2][3];
Это абсолютно нормально, если вы поставите одну коробку в конце:
int[] intArray []=newint[][]{{1,2,3},{4,5,6}};int[] intArray1 []=newint[][]{newint[]{1,2,3},newint[]{4,5,6}};int[] intArray2 []=newint[][]{newint[]{1,2,3},{4,5,6}}// All the 3 arrays assignments are valid// Array looks like {{1,2,3},{4,5,6}}
Не обязательно, чтобы каждый внутренний элемент был одинакового размера.
int[][] intArray =newint[2][];
intArray[0]={1,2,3};
intArray[1]={4,5};//array looks like {{1,2,3},{4,5}}int[][] intArray =newint[][2];// This won't compile. Keep this in mind.
Если вы используете вышеприведенный синтаксис, вы должны убедиться, что в прямом направлении вы должны указать значения в квадратных скобках. Иначе это не скомпилируется. Некоторые примеры:
Number[] numArray ={1,2,3,4};// java.lang.Number
numArray[0]=newFloat(1.5f);// java.lang.Float
numArray[1]=newInteger(1);// java.lang.Integer// You can store a subclass object in an array that is declared// to be of the type of its superclass.// Here 'Number' is the superclass for both Float and Integer.Number num[]=newFloat[5];// This is also valid
ВАЖНО: Для ссылочных типов значение по умолчанию, хранящееся в массиве, равно нулю.
Статический массив: массив фиксированного размера (его размер должен быть объявлен при запуске и не может быть изменен позже)
Динамический массив: для этого не учитывается ограничение по размеру. (Чистые динамические массивы не существуют в Java. Вместо этого рекомендуется использовать List)
Чтобы объявить статический массив Integer, string, float и т. Д., Используйте нижеприведенные объявления и операторы инициализации.
int[] intArray =newint[10];String[] intArray =newint[10];float[] intArray =newint[10];// here you have 10 index starting from 0 to 9
Чтобы использовать динамические функции, вы должны использовать List ... List - чистый динамический массив, и нет необходимости объявлять размер в начале. Сильфон - это правильный способ объявить список в JAVA>
Это очень легко объявить и инициализировать массив. Например, вы хотите сохранить в массиве пять целочисленных элементов 1, 2, 3, 4 и 5. Вы можете сделать это следующим образом:
а)
int[] a =newint[5];
или
б)
int[] a ={1,2,3,4,5};
поэтому основной шаблон для инициализации и объявления методом а):
Массив может содержать типы данных примитивов, а также объекты класса в зависимости от определения массива. В случае типов данных примитивов фактические значения хранятся в смежных местах памяти. В случае объектов класса фактические объекты хранятся в сегменте кучи.
Одномерные массивы:
общая форма объявления одномерного массива
type var-name[];
OR
type[] var-name;
Создание массива в Java
var-name =new type [size];
Например
int intArray[];//declaring array
intArray =newint[20];// allocating memory to array// the below line is equals to line1 + line2int[] intArray =newint[20];// combining both statements in oneint[] intArray =newint[]{1,2,3,4,5,6,7,8,9,10};// accessing the elements of the specified arrayfor(int i =0; i < intArray.length; i++)System.out.println("Element at index "+ i +" : "+ intArray[i]);
Хотя этот код может ответить на вопрос, было бы лучше объяснить, как он решает проблему, не представляя других и зачем его использовать. Ответы только для кода бесполезны в долгосрочной перспективе.
Ответы:
Вы можете использовать либо объявление массива, либо литерал массива (но только если вы сразу же объявляете и воздействуете на переменную, литералы массива нельзя использовать для повторного назначения массива).
Для примитивных типов:
Для классов, например
String
, это то же самое:Третий способ инициализации полезен, когда вы сначала объявляете массив, а затем инициализируете его. Актерский состав необходим здесь.
источник
return {1,2,3}
выдает ошибку, аreturn new int[]{1,2,3}
работает нормально (при условии, конечно, что ваша функция возвращает целочисленный массив).Есть два типа массивов.
Одномерный Массив
Синтаксис для значений по умолчанию:
Или (менее предпочтительно)
Синтаксис с заданными значениями (инициализация переменной / поля):
Или (менее предпочтительно)
Примечание: для удобства предпочтительным является int [] num, поскольку он четко говорит о том, что вы говорите здесь о массиве. Иначе без разницы. Не за что.
Многомерный массив
декларация
Или
Или
инициализация
Или
Рваный массив (или непрямоугольный массив)
Так что здесь мы определяем столбцы явно.
Другой путь:
Для доступа:
В качестве альтернативы:
Рваные массивы - это многомерные массивы.
Для объяснения смотрите детали многомерного массива в официальных уроках Java.
источник
также допустимо, но я предпочитаю скобки после типа, потому что легче увидеть, что тип переменной на самом деле является массивом.
источник
int[] a, b;
это не будет то же самоеint a[], b;
, что ошибка, которую легко сделать, если вы используете последнюю форму.Существует несколько способов объявить массив в Java:
Вы можете найти больше информации на учебном сайте Sun и в JavaDoc .
источник
Я считаю полезным, если вы понимаете каждую часть:
Type[]
это тип из переменной называется именем ( «имя» называется идентификатором ). Литерал «Тип» является базовым типом, а скобки означают, что это тип массива этой базы. Типы массивов, в свою очередь, являются собственными типами, что позволяет вам создавать многомерные массивы, такие какType[][]
(тип массива Type []). Ключевое словоnew
говорит, чтобы выделить память для нового массива. Число между скобками говорит о том, насколько большим будет новый массив и сколько памяти выделяется. Например, если Java знает, что базовый типType
занимает 32 байта, и вы хотите массив размером 5, ему нужно внутренне выделить 32 * 5 = 160 байтов.Вы также можете создавать массивы с уже существующими значениями, такими как
который не только создает пустое пространство, но и заполняет его этими значениями. Java может сказать, что примитивы являются целыми числами и их 5, поэтому размер массива можно определить неявно.
источник
int[] name = new int[5]
?Ниже показано объявление массива, но массив не инициализирован:
Ниже показано объявление, а также инициализация массива:
Теперь следующее также показывает объявление и инициализацию массива:
Но этот третий показывает свойство создания анонимного массива-объекта, на которое указывает ссылочная переменная "myIntArray", поэтому, если мы напишем просто "new int [] {1,2,3};" тогда это то, как анонимный массив-объект может быть создан.
Если мы просто напишем:
это не объявление массива, но следующее утверждение завершает вышеуказанное объявление:
источник
С другой стороны,
Это объявляет массив с именем
arrayName
размера 10 (у вас есть элементы от 0 до 9 для использования).источник
Кроме того, если вы хотите что-то более динамичное, есть интерфейс List. Это не будет работать так же хорошо, но будет более гибким:
источник
List
является универсальным классом, он имеет тип в качестве параметра, заключенный в<>
. Это помогает, потому что вам нужно определить универсальный тип только один раз, и затем вы можете использовать его с несколькими различными типами. Для более подробного объяснения посмотрите на docs.oracle.com/javase/tutorial/java/generics/types.htmlЕсть два основных способа сделать массив:
Этот для пустого массива:
И этот, для инициализированного массива:
Вы также можете создавать многомерные массивы, например:
источник
Возьмите примитивный тип
int
например. Есть несколько способов объявить иint
массив:где во всем этом вы можете использовать
int i[]
вместоint[] i
.С отражением вы можете использовать
(Type[]) Array.newInstance(Type.class, capacity);
Обратите внимание, что в параметрах метода,
...
указываетvariable arguments
. По сути, любое количество параметров в порядке. Это проще объяснить с помощью кода:Внутри метод,
varargs
рассматривается как нормальныйint[]
.Type...
может использоваться только в параметрах метода, поэтомуint... i = new int[] {}
не будет компилироваться.Обратите внимание, что при передаче
int[]
метода (или любого другогоType[]
) вы не можете использовать третий способ. В этом утвержденииint[] i = *{a, b, c, d, etc}*
компилятор предполагает, что{...}
означаетint[]
. Но это потому, что вы объявляете переменную. При передаче массива в метод, объявление должно бытьnew Type[capacity]
илиnew Type[] {...}
.Многомерные массивы
С многомерными массивами гораздо сложнее иметь дело. По сути, двумерный массив является массивом массивов.
int[][]
означает массивint[]
с. Ключ в том, что еслиint[][]
объявлено какint[x][y]
, максимальный индексi[x-1][y-1]
. По сути, прямоугольникint[3][5]
это:источник
В Java 9
Используя разные
IntStream.iterate
иIntStream.takeWhile
методы:В Java 10
Используя вывод типа локальной переменной :
источник
Если вы хотите создать массивы с использованием отражений, вы можете сделать это так:
источник
Объявление массива ссылок на объекты:
источник
Массив - это последовательный список элементов
Если это объект, то это та же концепция
В случае объектов, вам нужно либо назначить его, чтобы
null
инициализировать их, используяnew Type(..)
классы, какString
иInteger
являются особыми случаями, которые будут обрабатываться следующим образомВ общем, вы можете создавать массивы, которые являются
M
размернымиСтоит отметить, что создание
M
размерного массива дорого с точки зрения пространства. Поскольку, когда вы создаетеM
размерный массив соN
всеми измерениями, общий размер массива больше, чемN^M
, так как у каждого массива есть ссылка, а в М-измерении имеется (M-1) -мерный массив ссылок. Общий размер следующийисточник
В Java 8 вы можете использовать как это.
источник
Для создания массивов класса Objects вы можете использовать
java.util.ArrayList
. определить массив:Присвойте значения массиву:
Читать из массива:
Замечания:
variableName
является ссылкой на массив, означающий, что манипулированиеvariableName
будет манипулироватьarrayName
для петель:
цикл for, который позволяет редактировать
arrayName
(обычный цикл):источник
Объявите и инициализируйте для Java 8 и позже. Создайте простой целочисленный массив:
Создайте случайный массив для целых чисел от [-50, 50] и для двойников [0, 1E17]:
Степень двух последовательностей:
Для String [] вы должны указать конструктор:
Многомерные массивы:
источник
Еще один способ объявить и инициализировать ArrayList:
источник
Здесь много ответов. Я добавляю несколько хитрых способов создания массивов (с точки зрения экзамена это полезно знать)
Объявить и определить массив
Это создаст массив длиной 3. Поскольку он содержит тип примитива int, все значения по умолчанию установлены в 0. Например,
Использование квадратных скобок [] перед именем переменной
Инициализируйте и предоставьте данные в массив
На этот раз нет необходимости упоминать размер в скобках коробки. Даже простой вариант этого:
Массив длины 0
Аналогично для многомерных массивов
Используя квадратные скобки перед переменной:
Это абсолютно нормально, если вы поставите одну коробку в конце:
Некоторые примеры
Не обязательно, чтобы каждый внутренний элемент был одинакового размера.
Если вы используете вышеприведенный синтаксис, вы должны убедиться, что в прямом направлении вы должны указать значения в квадратных скобках. Иначе это не скомпилируется. Некоторые примеры:
Другая важная особенность - ковариантный
ВАЖНО: Для ссылочных типов значение по умолчанию, хранящееся в массиве, равно нулю.
источник
Вы также можете сделать это с
java.util.Arrays
:Этот довольно простой и понятный .
источник
С выводом типа локальной переменной вы должны указать тип только один раз:
Или
источник
var
.var
openjdk.java.net/jeps/286Массив имеет два основных типа.
Чтобы объявить статический массив Integer, string, float и т. Д., Используйте нижеприведенные объявления и операторы инициализации.
Чтобы использовать динамические функции, вы должны использовать List ... List - чистый динамический массив, и нет необходимости объявлять размер в начале. Сильфон - это правильный способ объявить список в JAVA>
источник
Объявить массив:
int[] arr;
Initialize Array:
int[] arr = new int[10];
10 представляет количество элементов, разрешенных в массивеОбъявить многомерный массив:
int[][] arr;
Инициализируйте многомерный массив:
int[][] arr = new int[10][17];
10 строк и 17 столбцов и 170 элементов, потому что 10 раз 17 равно 170.Инициализация массива означает определение его размера.
источник
Это очень легко объявить и инициализировать массив. Например, вы хотите сохранить в массиве пять целочисленных элементов 1, 2, 3, 4 и 5. Вы можете сделать это следующим образом:
а)
или
б)
поэтому основной шаблон для инициализации и объявления методом а):
datatype
должно быть в нижнем регистре.Таким образом, основной шаблон для инициализации и объявления методом a:
Если это строковый массив:
Если это массив символов:
Для float double формат массива будет таким же, как и целочисленный.
Например:
но когда вы объявляете и инициализируете массив «методом a», вам придется вводить значения вручную, циклом или чем-то еще.
Но когда вы делаете это «методом b», вам не придется вводить значения вручную.
источник
Массив может содержать типы данных примитивов, а также объекты класса в зависимости от определения массива. В случае типов данных примитивов фактические значения хранятся в смежных местах памяти. В случае объектов класса фактические объекты хранятся в сегменте кучи.
Одномерные массивы:
общая форма объявления одномерного массива
Создание массива в Java
Например
Ссылка: https://www.geeksforgeeks.org/arrays-in-java/
источник
один другой полный пример с классом фильмов 😋
источник
пример:
или
пример:
источник
источник