разница между массивом int [] и массивом int []

<p>недавно я думал о разнице между двумя способами определения массива:</p><ol> <li><code>int[] array</code></li> <li><code>int array[]</code></li> </ol><p>есть ли разница?</p>

<p>они семантически идентичны. синтаксис <code>int array[]</code> был добавлен только для того, чтобы помочь программистам c привыкнуть к java.</p><p><code>int[] array</code> гораздо предпочтительнее и менее запутан.</p>

<p>есть одно небольшое отличие, если вы объявляете более одной переменной в одном объявлении:</p><pre><code>int[] a, b; // both a and b are arrays of type int int c[], d; // warning: c is an array, but d is just a regular int </code></pre><p>обратите внимание, что это плохой стиль кодирования, хотя компилятор почти наверняка поймает вашу ошибку, как только вы попытаетесь использовать <code>d</code>.</p>

<p>нет никакой разницы.</p><p>я предпочитаю формат <code>type[] name</code>, в котором ясно, что переменная является массивом (меньше нужно оглядываться, чтобы узнать, что это такое).</p><p>правка:</p><p>ой, подождите, есть разница (я забыл, потому что я никогда не объявляю более одной переменной одновременно):</p><pre><code>int[] foo, bar; // both are arrays int foo[], bar; // foo is an array, bar is an int. </code></pre>

<p>нет, это одно и то же. тем не мение</p><pre><code>byte[] rowvector, colvector, matrix[]; </code></pre><p>эквивалентно:</p><pre><code>byte rowvector[], colvector[], matrix[][]; </code></pre><p>взято из <a href="http://java.sun.com/docs/books/jls/third\_edition/html/arrays.html">спецификация java</a> . это означает, что</p><pre><code>int a[],b; int[] a,b; </code></pre><p>разные. я бы не рекомендовал ни одну из этих многочисленных деклараций. легче всего читать (вероятно):</p><pre><code>int[] a; int[] b; </code></pre>

<p>с <a href="http://java.sun.com/docs/books/jls/third\_edition/html/arrays.html#10.2">раздел 10.2 спецификации языка java</a> :</p><blockquote> <p>[] может появиться как часть типа в начале объявления, или как часть объявления для определенной переменной, или и того и другого, как в этом примере:</p> <pre><code> byte[] rowvector, colvector, matrix[]; </code></pre> <p>эта декларация эквивалентна:</p> <pre><code>byte rowvector[], colvector[], matrix[][]; </code></pre></blockquote><p>лично почти <em> весь </em> код java, который я когда-либо видел, использует первую форму, которая имеет больше смысла, сохраняя всю информацию о типе о переменной в одном месте. хотелось бы, чтобы второй класс был запрещен, если честно ... но такова жизнь ...</p><p>к счастью, я не думаю, что <em> когда-либо </em> видел этот (действительный) код:</p><pre><code>string[] rectangular[] = new string[10][10]; </code></pre>

<p>две команды - это одно и то же.</p><p>вы можете использовать синтаксис для объявления нескольких объектов:</p><pre><code>int[] arrayone, arraytwo; //both arrays int arrayone[], intone; //one array one int </code></pre><p>см .: <a href="http://java.sun.com/docs/books/jls/second\_edition/html/arrays.doc.html">http://java.sun.com/docs/books/jls/second\_edition/html/arrays.doc.html</a> </p>

<p><strong> нет разницы. </strong></p><p>цитата из <a href="http://java.sun.com/docs/books/jls/second\_edition/html/arrays.doc.html">вс</a> :</p><blockquote> <p><code>[]</code> может отображаться как часть типа в начале объявления или как часть декларатора для определенной переменной или обоих, как в этом примере: <code>byte[] rowvector, colvector, matrix[];</code></p> <p>это объявление эквивалентно: <code>byte rowvector[], colvector[], matrix[][];</code></p> </blockquote>

<p>там нет никакой разницы между ними; оба объявляют массив <code>int</code>s. тем не менее, первое предпочтительнее, поскольку оно хранит информацию о типе в одном месте. последнее действительно поддерживается только для программистов на c/c++, переходящих на java.</p>

<p>здесь нет никакой разницы; тем не мение,</p><pre><code>double[] items = new double[10]; </code></pre><p>является предпочтительным, так как он четко указывает, что тип является массивом.</p>

<p>оба одинаково действительны. форма <code>int puzzle[]</code>, однако, не рекомендуется, <code>int[] puzzle</code> предпочтительнее в соответствии с <a href="http://www.oracle.com/technetwork/java/codeconvtoc-136057.html">соглашения о кодировании</a> . смотрите также официальный <a href="http://download.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html">учебник по java-массивам</a> :</p><blockquote> <p>точно так же вы можете объявить массивы других типов:</p> <pre><code>byte[] anarrayofbytes; short[] anarrayofshorts; long[] anarrayoflongs; float[] anarrayoffloats; double[] anarrayofdoubles; boolean[] anarrayofbooleans; char[] anarrayofchars; string[] anarrayofstrings; </code></pre> <p>вы также можете поместить квадратные скобки после имени массива:</p> <pre><code>float anarrayoffloats[]; // this form is discouraged </code></pre> <p>тем не менее, конвенция препятствует этой форме; скобки обозначают тип массива и должны отображаться с обозначением типа.</p> </blockquote><p>обратите внимание на последний абзац.</p><p>я рекомендую читать официальные руководства sun/oracle, а не некоторые сторонние. в противном случае вы рискуете получить плохую практику.</p>

<p>это альтернативная форма, заимствованная из <code>c</code>, на которой основана java.</p><p>любопытно, что есть <em>три</em> способа определения допустимого метода <code>main</code> в java:</p><ul> <li><code>public static void main(string[] args)</code></li> <li><code>public static void main(string args[])</code></li> <li><code>public static void main(string... args)</code></li> </ul>

<p>нет никакой разницы, но sun рекомендует поместить его рядом с типом, как объяснено <a href="https://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.html">здесь</a> </p>

<p>наиболее предпочтительным вариантом является <code>int[] a</code> - потому что <code>int[]</code> - это тип, а <code>a</code> - это имя. (ваш второй вариант такой же, как этот, с неуместным пространством)</p><p>функционально между ними нет разницы.</p>

<p> <a href="http://java.sun.com/docs/books/jls/second\_edition/html/arrays.doc.html">спецификация языка java</a> говорит:</p><pre><code>the [] may appear as part of the type at the beginning of the declaration, or as part of the declarator for a particular variable, or both, as in this example: byte[] rowvector, colvector, matrix[]; this declaration is equivalent to: byte rowvector[], colvector[], matrix[][]; </code></pre><p><strong> таким образом, они приведут к одинаковому байтовому коду. </strong></p>

<p>как уже говорилось, нет большой разницы (если вы объявляете только одну переменную на строку).</p><p>обратите внимание, что <a href="https://www.sonarqube.org">sonarqube</a> обрабатывает ваш второй случай как незначительный <em> запах кода: </em></p><blockquote> <p><strong> обозначения массива "[]" должны указывать на тип, а не на переменную (squid: s1197) </strong></p> <p>обозначения массива всегда должны быть расположены на типе для лучшей читаемости кода. в противном случае разработчики должны смотреть как на тип, так и на имя переменной, чтобы узнать, является ли переменная массивом.</p> <p><em> пример несовместимого кода </em></p> <pre><code>int matrix[][]; // noncompliant int[] matrix[]; // noncompliant </code></pre> <p><em> совместимое решение </em></p> <pre><code>int[][] matrix; // compliant </code></pre></blockquote>

<p>они одинаковы, но между этими утверждениями есть важное различие:</p><pre><code>// 1. int regular, array[]; // 2. int[] regular, array; </code></pre><p>в 1. регулярный - просто целое число, в отличие от 2. где регулярный и массив - это массивы целых чисел.</p><p>поэтому второе утверждение, которое вы имеете, является предпочтительным, поскольку оно более понятно. первая форма также не рекомендуется в соответствии с <a href="http://download.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html">это руководство по oracle</a> .</p>

<p>в java это просто разные синтаксические способы сказать одно и то же.</p>

<p>они одинаковые. один является более читабельным (для некоторых), чем другой.</p>

<p>они полностью эквивалентны. <code>int [] array</code> является предпочтительным стилем. <code>int array[]</code> только что представлен как эквивалентный c-совместимый стиль.</p>

<p>нет никакой разницы в функциональности между обоими стилями объявления. оба объявляют массив int.</p><p>но <code>int[] a</code> объединяет информацию о типах и является более подробным, поэтому я предпочитаю это.</p>

<p>оба имеют одинаковое значение. однако наличие этих вариантов также позволяет это:</p><pre><code>int[] a, b[]; </code></pre><p>что так же, как:</p><pre><code>int[] a; int[][] b; </code></pre><p>тем не менее, это ужасный стиль кодирования и никогда не должно быть сделано.</p>

<p>да, точно так же. лично я предпочитаю</p><pre><code>int[] integers; </code></pre><p>потому что для любого читающего ваш код сразу становится очевидным, что целые числа - это массив целых чисел, а не</p><pre><code>int integers[]; </code></pre><p>что не делает все это очевидным, особенно если у вас есть несколько объявлений в одной строке. но опять же, они эквивалентны, так что все сводится к личным предпочтениям.</p><p>проверьте <a href="http://java.sun.com/docs/books/jls/second\_edition/html/arrays.doc.html">эта страница о массивах в java</a> для более подробных примеров.</p>

<p>при объявлении ссылки на один массив между ними нет большой разницы. поэтому следующие два объявления одинаковы.</p><pre><code>int a[]; // comfortable to programmers who migrated from c/c++ int[] a; // standard java notation </code></pre><p>при объявлении нескольких ссылок на массивы мы можем найти разницу между ними. следующие два утверждения означают то же самое. на самом деле, это зависит от программиста, который следует. но рекомендуется использовать стандартную нотацию java.</p><pre><code>int a[],b[],c[]; // three array references int[] a,b,c; // three array references </code></pre>

<p>оба в порядке. я предлагаю выбрать один и придерживаться его. (я делаю второй)</p>

<p>в то время как решение <code>int integers[]</code> коренится в языке c (и поэтому его можно считать "нормальным" подходом), многие люди считают <code>int[] integers</code> более логичным, поскольку он не позволяет создавать переменные разных типов (например, int и массив) в одном объявлении (как в отличие от декларации в стиле c).</p>