Каков наиболее эффективный способ инициализации массива со значениями? [Дубликат]

Как насчет этого ?

fmt.Printf("%c","HELLO"[1])

Как указывает Питер, чтобы разрешить больше, чем просто ASCII:

fmt.Printf("%c", []rune("HELLO")[1])

69
задан Zach Scrivena 23 February 2009 в 09:07
поделиться

8 ответов

Вы также можете сделать это как часть декларации:

int[] a = new int[] {0, 0, 0, 0};
56
ответ дан Chad Birch 18 August 2018 в 16:14
поделиться
  • 1
    Это то, о чем я думал, спасибо! – William 23 February 2009 в 09:09
  • 2
    int [] a = new int [4] выполнит одно и то же, поскольку значение 0 по умолчанию. – Zach Scrivena 23 February 2009 в 09:10
  • 3
    Или int [] a = {0, 0, 0, 0}; , Вам понадобится только новый int [], если константа не используется сразу в объявлении. – starblue 23 February 2009 в 09:23
  • 4
    это не полезно, если у вас большой массив. Ответ @ cdmckay лучше. – Felipe Leão 3 February 2014 в 20:07
  • 5
    Не забывайте правило векового программирования: «Если вы обнаружите, что вы копируете / вставляете код, вы делаете что-то неправильно». Число нулей или любое другое значение по умолчанию просто копируется и вставляется здесь. – HoldOffHunger 19 September 2016 в 23:58

Элементы массива в Java инициализируются значениями по умолчанию при создании. Для чисел это означает, что они инициализируются равными 0, для ссылок они являются нулевыми, а для логических - ложными.

Чтобы заполнить массив чем-то другим, вы можете использовать Arrays.fill () или как часть декларации

int[] a = new int[] {0, 0, 0, 0};

В Java нет ярлыков для заполнения массивов арифметическими рядами, как на некоторых языках сценариев.

2
ответ дан Bombe 18 August 2018 в 16:14
поделиться
Arrays.fill(arrayName,value);

в java

int arrnum[] ={5,6,9,2,10};
for(int i=0;i<arrnum.length;i++){
  System.out.println(arrnum[i]+" ");
}
Arrays.fill(arrnum,0);
for(int i=0;i<arrnum.length;i++){
  System.out.println(arrnum[i]+" ");
}

Выход

5 6 9 2 10
0 0 0 0 0
9
ответ дан Cherryishappy 18 August 2018 в 16:14
поделиться

Массив можно инициализировать с помощью синтаксиса new Object {}.

Например, массив из String может быть объявлен либо:

String[] s = new String[] {"One", "Two", "Three"};
String[] s2 = {"One", "Two", "Three"};

. Примитивы могут также аналогичным образом инициализируется либо:

int[] i = new int[] {1, 2, 3};
int[] i2 = {1, 2, 3};

, либо массивом некоторых Object:

Point[] p = new Point[] {new Point(1, 1), new Point(2, 2)};

Все подробности о массивах в Java записаны в Глава 10: Массивы в Спецификации языка Java, третье издание .

5
ответ дан coobird 18 August 2018 в 16:14
поделиться

В Java-8 вы можете использовать IntStream для создания потока чисел, который вы хотите повторить, а затем преобразовать в массив. Этот подход дает выражение, подходящее для использования в инициализаторе:

int[] data = IntStream.generate(() -> value).limit(size).toArray();

Выше size и value являются выражениями, которые производят количество элементов, которые вы хотите повторить tot, и повторяющееся значение.

Демонстрация.

12
ответ дан dasblinkenlight 18 August 2018 в 16:14
поделиться
int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
-2
ответ дан Emir Hadzimahmutovic 18 August 2018 в 16:14
поделиться
  • 1
    Добро пожаловать на сайт! Этот ответ был бы улучшен, если бы вы могли добавить какое-то объяснение, а не просто клонировать какой-то код. Почему это было бы предпочтительнее любых других ответов, уже предоставленных по этому 7-летнему вопросу? – Mogsdad 2 March 2016 в 21:05

Проверьте методы Arrays.fill .

int[] array = new int[4];
Arrays.fill(array, 0);
238
ответ дан Pacerier 18 August 2018 в 16:14
поделиться
  • 1
    +1, потому что я не знал о методе Arrays.fill (). Я всегда делал это с помощью цикла for. : D – Spoike 23 February 2009 в 09:11
  • 2
    @GrantGalitz Я на самом деле не уверен в этом, у вас есть ссылка на статью или smt? Поскольку в отличие от классов System, java.util.Arrays - это класс, реализованный Java, и просмотр источника показывает, что не отличается от нормального цикла. – Pacerier 20 November 2011 в 20:24
  • 3
    Массивы ints инициализируются 0, поэтому вторая строка не нужна в приведенном выше примере. – Patrick Brinich-Langlois 9 January 2013 в 03:08
  • 4
    @ PatrickBrinich-Langlois: Это может быть полезно, чтобы указать на то, что вы намерены обнулить его. – cdmckay 12 February 2014 в 10:29
  • 5
    Это должен быть принятый ответ. – ghosting999 20 October 2017 в 20:08

Arrays.fill() . Метод перегружен для разных типов данных, и существует даже вариация, которая заполняет только определенный диапазон индексов.

15
ответ дан Zach Scrivena 18 August 2018 в 16:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: