Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠœΠ°ΡΡΠΈΠ²Ρ‹ | Collections | Scala Documentation

ΠœΠ°ΡΡΠΈΠ²Ρ‹ особый Π²ΠΈΠ΄ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π² Scala. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, Scala массивы ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ массивам ΠΈΠ· Java. НапримСр, Scala массив Array[Int] Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ Java int[], Π° Array[Double] ΠΊΠ°ΠΊ Java double[] ΠΈ Array[String] ΠΊΠ°ΠΊ Java String[] Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Scala массивы Π΄Π°ΡŽΡ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС Ρ‡Π΅ΠΌ ΠΈΡ… Java Π°Π½Π°Π»ΠΎΠ³ΠΈ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Scala массивы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Ρ‹ (generic). Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ массив ΠΊΠ°ΠΊ Array[T], Π³Π΄Π΅ T Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€-Ρ‚ΠΈΠΏ массива ΠΈΠ»ΠΈ ΠΆΠ΅ абстрактный Ρ‚ΠΈΠΏ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Scala массивы совмСстимы со списками (Seq) Scala — Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Array[T] Π½Π° Π²Ρ…ΠΎΠ΄ Ρ‚ΡƒΠ΄Π°, Π³Π΄Π΅ трСбуСтся Seq[T]. Ну ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Scala массивы Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Ρƒ списков. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

scala> val a1 = Array(1, 2, 3)
a1: Array[Int] = Array(1, 2, 3)
scala> val a2 = a1 map (_ * 3)
a2: Array[Int] = Array(3, 6, 9)
scala> val a3 = a2 filter (_ % 2 != 0)
a3: Array[Int] = Array(3, 9)
scala> a3.
reverse res0: Array[Int] = Array(9, 3)

Учитывая Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Scala массивы ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ массивам ΠΈΠ· Java, ΠΊΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности массивов Π² Scala? РСализация массивов Π² Scala постоянно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСявныС прСобразования. Π’ Scala массив Π½Π΅ пытаСтся ΠΏΡ€ΠΈΡ‚Π²ΠΎΡ€ΡΡ‚ΡŒΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. Он ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ Π² основС массива Π½Π΅ являСтся ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠΌ Seq. ВмСсто этого, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ β€œΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π½ΠΈΠ΅β€, происходит нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ массивами ΠΈ экзСмплярами класса scala.collection.mutable.ArraySeq, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся подклассом

Seq. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

scala> val seq: collection.Seq[Int] = a1
seq: scala.collection.Seq[Int] = ArraySeq(1, 2, 3)
scala> val a4: Array[Int] = seq.toArray
a4: Array[Int] = Array(1, 2, 3)
scala> a1 eq a4
res1: Boolean = false

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ массивы совмСстимы с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ происходит нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· массивов Π² ArraySeqΡ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΎΡ‚ ArraySeq ΠΊ Array, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ toArray, описанный Π² Iterable

. ПослСдняя строка Π² консолС ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ Π·Π°Ρ‚Π΅ΠΌ распаковка с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ toArray создаСт копию исходного массива.

БущСствуСт Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ примСняСтся ΠΊ массивам. Π’Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ просто β€œΠ΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ‚β€ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ (Seq) ΠΊ массивам, Π½ΠΎ Π½Π΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сам массив Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. β€œΠ”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅β€ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ массив ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° ArrayOps, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ArrayOps Π½Π΅Π΄ΠΎΠ»Π³ΠΎΠ²Π΅Ρ‡Π½Ρ‹ΠΉ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ нСдоступСн послС обращСния ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ создания Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ двумя нСявными прСобразованиями Π½Π° массивах ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

scala> val seq: collection. Seq[Int] = a1
seq: scala.collection.Seq[Int] = ArraySeq(1, 2, 3)
scala> seq.reverse
res2: scala.collection.Seq[Int] = ArraySeq(3, 2, 1)
scala> val ops: collection.ArrayOps[Int] = a1
ops: scala.collection.ArrayOps[Int] = scala.collection.ArrayOps@2d7df55
scala> ops.reverse
res3: Array[Int] = Array(3, 2, 1)

Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ² reverse Π½Π° seq, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ArraySeq

, даст снова ArraySeq. Π­Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ массивы — это Seqs, ΠΈ Π²Ρ‹Π·ΠΎΠ² reverse Π½Π° любом Seq даст снова Seq. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π²Ρ‹Π·ΠΎΠ² reverse Π½Π° экзСмплярС класса ArrayOps даст Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Array, Π° Π½Π΅ Seq.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ArrayOps, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ искусствСнный ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ лишь, Ρ‡Ρ‚ΠΎΠ± ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ с ArraySeq. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ создаСтС экзСмпляры класса ArrayOps. Π’Ρ‹ просто Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Seq Π½Π° массивС:

scala> a1. reverse
res4: Array[Int] = Array(3, 2, 1)

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ArrayOps автоматичСски вставляСтся Ρ‡Π΅Ρ€Π΅Π· нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ строка Π²Ρ‹ΡˆΠ΅ эквивалСнтна

scala> intArrayOps(a1).reverse
res5: Array[Int] = Array(3, 2, 1)

Π³Π΄Π΅ intArrayOps — нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ вставлСно Ρ€Π°Π½Π΅Π΅. Π’ связи с этим Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос, ΠΊΠ°ΠΊ компилятор Π²Ρ‹Π±Ρ€Π°Π» intArrayOps вмСсто Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ нСявного прСобразования Π² ArraySeq Π² строкС Π²Ρ‹ΡˆΠ΅. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², ΠΎΠ±Π° прСобразования ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ массив Π² Ρ‚ΠΈΠΏ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ reverse. ΠžΡ‚Π²Π΅Ρ‚ Π½Π° этот вопрос Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π²Π° нСявных прСобразования ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ArrayOps ΠΈΠΌΠ΅Π΅Ρ‚ больший ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ArraySeq. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ опрСдСляСтся Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅

Predef, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ — Π² классС scala.LowPriorityImplicits, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Predef наслСдуСт. НСявныС прСобразования Π² Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классах ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ прСобразованиями Π² Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классах. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли ΠΎΠ±Π° прСобразования ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹, выбираСтся Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π² Predef. ΠžΡ‡Π΅Π½ΡŒ похоТая схСма ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для строк.

Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ массивы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ совмСстимы с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ. А ΠΊΠ°ΠΊ ΠΆΠ΅ обобщСния? Π’ Java нСльзя Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

T[], Π³Π΄Π΅ T являСтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Ρ‚ΠΈΠΏΠ°. Как ΠΆΠ΅ прСдставлСн Scala Array[T]? На самом Π΄Π΅Π»Π΅ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ массив Ρ‚ΠΈΠΏΠ° Array[T] ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· восьми ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² массивов Java byte[], short[], char[], int[] , long[] , float[], double ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ массивом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ЕдинствСнным ΠΎΠ±Ρ‰ΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΌ всС эти Ρ‚ΠΈΠΏΡ‹, являСтся AnyRef (ΠΈΠ»ΠΈ, Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ java.lang.Object), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ это Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ компилятор Scala ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ Array[T]. Π’ΠΎ врСмя исполнСния, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ элСмСнту массива Ρ‚ΠΈΠΏΠ°
Array[T]
, происходит ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ‚ΠΈΠΏ массива, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ слСдуСт подходящая опСрация Π½Π° Java-массивС. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π·Π°ΠΌΠ΅Π΄Π»ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ массивов. МоТно ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ падСния скорости доступа ΠΊ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΌ массивам Π² Ρ‚Ρ€ΠΈ-Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ€Π°Π·Π°, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ массивами ΠΈΠ»ΠΈ массивами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° максимальная ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π²Π°ΠΌ слСдуСт Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ массивы, вмСсто ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ…. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ массив Π΅Ρ‰Π΅ ΠΏΠΎΠ» Π±Π΅Π΄Ρ‹, Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π΅Ρ‰Π΅ способ создания ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… массивов. Π­Ρ‚ΠΎ ΠΊΡƒΠ΄Π° Π±ΠΎΠ»Π΅Π΅ слоТная Π·Π°Π΄Π°Ρ‡Π°, которая Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, ΠΎΡ‚ вас, нСбольшой ΠΏΠΎΠΌΠΎΡ‰ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ написания ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт массив.

// это Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ!
def evenElems[T](xs: Vector[T]): Array[T] = {
  val arr = new Array[T]((xs.length + 1) / 2)
  for (i <- 0 until xs.length by 2)
    arr(i / 2) = xs(i)
  arr
}

ΠœΠ΅Ρ‚ΠΎΠ΄ evenElems Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ массив, состоящий ΠΈΠ· всСх элСмСнтов Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π° xs, находящихся Π² Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… позициях Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС Ρ‚Π΅Π»Π° evenElems создаСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ элСмСнта, Ρ‡Ρ‚ΠΎ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.

Π’ΡƒΡ‚ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΌΠΎΡ‡ΡŒ компилятору, ΡƒΠΊΠ°Π·Π°Π² ΠΊΠ°ΠΊΠΎΠΉ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° evenElems. Π­Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π²ΠΎ врСмя исполнСния ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒ манифСста класса Ρ‚ΠΈΠΏΠ° scala.view.ClassTag. ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚ класса — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ дСскриптор Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Ρƒ класса Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня. Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ манифСстам классов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π½Ρ‹Π΅ манифСсты Ρ‚ΠΈΠΏΠ° scala.Refect.Manifest, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ всС аспСкты Ρ‚ΠΈΠΏΠ°. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ для создания массива Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ манифСсты класса.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Scala автоматичСски создаст манифСсты классов, Ссли Π²Ρ‹ проинструктируСтС Π΅Π³ΠΎ Π½Π° это. β€œΠ˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅β€ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚Π΅ манифСст класса Π² качСствС нСявного ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

def evenElems[T](xs: Vector[T])(implicit m: ClassTag[T]): Array[T] = ...

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ синтаксис, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΈΠΏ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ» с манифСстом класса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ контСкстноС связываниС (context bound). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ связь с Ρ‚ΠΈΠΏΠΎΠΌ ClassTag ΠΈΠ΄ΡƒΡ‰ΠΈΠΌ послС двоСточия Π² описании Ρ‚ΠΈΠΏΠ°, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

import scala.reflect.ClassTag
// Ρ‚Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
def evenElems[T: ClassTag](xs: Vector[T]): Array[T] = {
  val arr = new Array[T]((xs.length + 1) / 2)
  for (i <- 0 until xs.length by 2)
    arr(i / 2) = xs(i)
  arr
}

ОбС ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ вСрсии evenElems ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅. Π§Ρ‚ΠΎ Π±Ρ‹ Π½Π΅ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, ΠΊΠΎΠ³Π΄Π° построСн Array[T], компилятор Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ манифСст класса для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ‚ΠΈΠΏΠ° T, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΡΠΊΠ°Ρ‚ΡŒ нСявноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (implicit value) Ρ‚ΠΈΠΏΠ° ClassTag[T]. Если Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, Ρ‚ΠΎ этот манифСст Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для построСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° массива. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ сообщСниС ΠΎΠ± ошибкС, Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π²Ρ‹ΡˆΠ΅.

Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· консоли, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ evenElems.

scala> evenElems(Vector(1, 2, 3, 4, 5))
res6: Array[Int] = Array(1, 3, 5)
scala> evenElems(Vector("this", "is", "a", "test", "run"))
res7: Array[java.  Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС `evenElems` Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ наличия класса манифСста для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ‚ΠΈΠΏΠ° `U`, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ. Π§Ρ‚ΠΎΠ± Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ манифСст ΠΎΡ‚ нСявного класса `U`. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:
scala> def wrap[U: ClassTag](xs: Vector[U]) = evenElems(xs)
wrap: [U](xs: Vector[U])(implicit evidence$1: scala.reflect.ClassTag[U])Array[U]

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ контСкстноС связываниС с U, являСтся лишь сокращСниСм для нСявного ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π½Π°Π·Π²Π°Π½Π½ΠΎΠ³ΠΎ здСсь evidence$1 Ρ‚ΠΈΠΏΠ° ClassTag[U].

Подводя ΠΈΡ‚ΠΎΠ³, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ для создания ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… массивов Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ манифСсты классов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ создании массива ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠΎΠΌ T, Π²Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ нСявный класс манифСст для T. Π‘Π°ΠΌΡ‹ΠΉ простой способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это — ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° ClassTag с контСкстной привязкой, ΠΊΠ°ΠΊ [T: ClassTag].

Как Π·Π°Π΄Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива java

Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массивов Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌΠΈ чисСл

Π•ΡΡ‚ΡŒ Π»ΠΈ синтаксис/ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ быстро Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ массивы java с Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌΠΈ чисСл, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² perl?

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ прСдставляСт собой ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ n-ΠΉ Π½ΠΎΠΌΠ΅Ρ€ Π² Ρ‚Π°ΠΊΠΎΠΌ спискС чисСл, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅, Π±Π΅Π· фактичСского создания массива (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ)?

Π­Ρ‚ΠΎ Π½Π΅ слишком слоТно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ я ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ распространСно, поэтому, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сдСлано.

НС Ρ‚Π°ΠΊ чисто, ΠΊΠ°ΠΊ True Soft ΠΎΡ‚Π²Π΅Ρ‚, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Google Guava для Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ эффСкта:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для этого Π²Π°ΠΌ потрСбуСтся нСсколько статичСских ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅Ρ€ΠΎΠ².

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ всС Π΅Ρ‰Π΅ ΠΈΡ‰Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:

Π’ Java 8 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ вСрсии это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Streams Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ созданию массива с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΎΡ‚ 1 Π΄ΠΎ 10.

Π‘ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π½ΠΈΠΆΠ΅. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ произвСсти Π»ΡŽΠ±ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, модифицируя ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€.

Π§Ρ‚ΠΎ касаСтся ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ вопроса, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ массив значСниями Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°: Π½Π° самом Π΄Π΅Π»Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ этого с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Range, DiscreteDomain, ContiguousSet ΠΈ Ints ΠΈΠ· Guava:

И Π½Π΅ совсСм Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ упоминаСтся Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части вопроса, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ с элСмСнтами Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° дискрСтного Π΄ΠΎΠΌΠ΅Π½Π°:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Set Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ элСмСнты физичСски, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ логичСски (поэтому объСм памяти Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°Π»), Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это a Set ):

Π”Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ ΠΈ Π½Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Java 8 для ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… массивов:

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ массив Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅

Π― Ρ…ΠΎΡ‡Ρƒ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ массив Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΎΡ‚ 2000 Π΄ΠΎ 3000.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ» массив с ΠΏΠΎΠ»Π½Ρ‹ΠΌ 2999.

Π’ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°? Π—Π°Ρ€Π°Π½Π΅Π΅ спасибо!

5 ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²

Π’Ρ‹ снова ΠΈ снова заполняСтС ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ячСйку. Π Π°Π·ΠΌΠ΅Ρ€ вашСго массива составляСт 1000, Π½ΠΎ ваш Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ составляСт 1001: 3000-2000 + 1 = 1001

Для этого Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ».

Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ 2999, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ваш Ρ†ΠΈΠΊΠ» заканчиваСтся i<3000 , просто ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π½Π° i<=3000 , Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ Π΄Π»ΠΈΠ½Ρƒ массива Π΄ΠΎ

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ с 1 Ρ†ΠΈΠΊΠ»ΠΎΠΌ. Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» @silentprogrammer, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π½Π° 1.

А ΠΊΠ°ΠΊ насчСт Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Java 8?

ΠŸΠΎΠΌΠΎΠ³Π°Π΅Ρ‚, Ссли Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ пСрСвСсти свой ΠΊΠΎΠ΄ Π½Π° чСловСчСский язык.

Разбивая ΠΊΠΎΠ΄, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π΄Π²Π° Ρ†ΠΈΠΊΠ»Π°. Один:

Π’Π°ΡˆΠ° идСя Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ β€” ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ всю Π΄Π»ΠΈΠ½Ρƒ массива.

Π—Π°Ρ‚Π΅ΠΌ Ρƒ вас Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ» Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° массива:

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ число ΠΎΡ‚ 2000 Π΄ΠΎ 2999 Π² индСкс y массива.

«Π’ индСксС y массива помСститС значСния ΠΎΡ‚ 2000 Π΄ΠΎ 2999.»

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ значСния ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ значСния. Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ это заканчиваСтся Ρ‚Π°ΠΊ:

Β«ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ 2999 Π² индСкс y массива».

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΈΡ… вмСстС:

«Π”ля ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ индСкса y Π² массивС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ 2999.»

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массивов Π² Java

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ для сСбя Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массивов Π² Java.

  • Автор записи

1. ΠžΠ±Π·ΠΎΡ€

Π’ этом ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΌ руководствС ΠΌΡ‹ рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива ΠΈ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅:

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Java: Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ΅ руководство

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивами Π² Java

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ списка Java Π² ΠΎΠ΄Π½ΠΎΠΉ строкС

2. По ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнту Π·Π° Ρ€Π°Π·

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с простого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, основанного Π½Π° Ρ†ΠΈΠΊΠ»Π΅:

И Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ посмотрим, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнту Π·Π° Ρ€Π°Π·:

3. Π’ΠΎ врСмя дСкларирования

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ массив Π²ΠΎ врСмя объявлСния:

ΠŸΡ€ΠΈ создании экзСмпляра массива Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив послС объявлСния Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС компиляции.

4. ИспользованиС массивов.Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅()

Π€Π°ΠΉΠ» java.util.Класс Arrays ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с ΠΈΠΌΠ΅Π½Π΅ΠΌ fill () , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ вСсь массив ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ:

ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ массива Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ массив, индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта, количСство элСмСнтов ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

5. ИспользованиС массивов.copyOf()

ΠœΠ΅Ρ‚ΠΎΠ΄ Arrays.copyOf() создаСт Π½ΠΎΠ²Ρ‹ΠΉ массив ΠΏΡƒΡ‚Π΅ΠΌ копирования Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ массива. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

НСсколько Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ здСсь:

  • ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ исходный массив ΠΈ Π΄Π»ΠΈΠ½Ρƒ создаваСмой ΠΊΠΎΠΏΠΈΠΈ
  • Если Π΄Π»ΠΈΠ½Π° большС Π΄Π»ΠΈΠ½Ρ‹ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ массива, Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ с использованиСм ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
  • Если исходный массив Π½Π΅ Π±Ρ‹Π» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ NullPointerException
  • Если Π΄Π»ΠΈΠ½Π° исходного массива ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Π°, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ NegativeArraySizeException

6.

ИспользованиС массивов.setAll()

ΠœΠ΅Ρ‚ΠΎΠ΄ Arrays.setAll() устанавливаСт всС элСмСнты массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

Если функция Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ€Π°Π²Π½Π° Π½ΡƒΠ»ΡŽ, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ NullPointerException .

7. ИспользованиС ArrayUtils.clone()

НаконСц, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ArrayUtils.clone() API ΠΈΠ· Apache Commons Lang 3, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ массив, создавая ΠΏΡ€ΡΠΌΡƒΡŽ копию Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ массива:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½ для всСх ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

8. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массивов Π² Java.

ΠœΠ°ΡΡΠΈΠ²Ρ‹. Π§Π°ΡΡ‚ΡŒ 1 – Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅.

Массив – это упорядочСнная ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ, ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ список, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ссылка Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся ΠΏΠΎ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ значСния, Ρ‚Π°ΠΊ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ массивы, ΠΎΠ΄Π½Π°ΠΊΠΎ всС значСния массива Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ. Π’ΠΈΠΏ массива ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ Ρ‚ΠΈΠΏΡƒ содСрТащихся Π² Π½Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ относятся ΠΊ ссылочным Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, собствСнно ΠΊΠ°ΠΊ ΠΈ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ…. Напомню Π΅Ρ‰Π΅ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎ Π² Java всС являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ лишь ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания массива ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Ρ‚Ρ€ΠΈ этапа:

  • ОбъявлСниС (declaration)
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ (instantation)
  • Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡΒ  (initialization)

ОбъявлСниС (declaration) массива

На этом этапС опрСдСляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрСмСнная Ρ‚ΠΈΠΏΠ° ссылка (reference) Π½Π° массив, содСрТащая Ρ‚ΠΈΠΏ массива. Для этого записываСтся имя Ρ‚ΠΈΠΏΠ° элСмСнтов массива, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ скобками указываСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ссылка Π½Π° массив, Π° Π½Π΅ простая пСрСмСнная, ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ссылочного Ρ‚ΠΈΠΏΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

int

[] numbers; // numbers ссылка Π½Π° массив int-ΠΎΠ²
String[] str; // str ссылка Π½Π° массив строк
byte[][] twoBytes; // twoBytes ссылка Π½Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π±Π°ΠΉΡ‚ΠΎΠ²
char[] letters, digits; //letters ΠΈ digits ссылки Π½Π° массивы символов

По сущСству объявлСниС массивов, Ρ‚ΠΎΡ‡Π½ΠΎ такая ΠΆΠ΅ опСрация ΠΊΠ°ΠΊ ΠΈ объявлСниС Π»ΡŽΠ±Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π°Π²Π΄Π° ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ свой синтаксис, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это всС Ρ‚Π°ΠΊΠΈ массивы.

Java ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ синтаксис объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° массив, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Π‘ ΠΈ Π‘++. Богласно этому синтаксису, ΠΎΠ΄Π½Π° ΠΈΠ»ΠΈ нСсколько ΠΏΠ°Ρ€ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π·Π° ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π½Π΅ Π·Π° ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΈΠΏΠ°:

byte

arrayOfBytes[]; // Π’ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ byte[] arrayOfBytes
byte arrayOfArrayOfBytes[][]; // Π’ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ byte[][] arrayOfArrayOfBytes
byte[] arrayOfArrayOfBytes[]; // Π’ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ byte[][] arrayOfArrayOfBytes

Однако Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Ρ‚Π°ΠΊΠΎΠΉ синтаксис сбиваСт с Ρ‚ΠΎΠ»ΠΊΡƒ, поэтому Π΅Π³ΠΎ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π»Π΅Π³ΠΊΠΎ ΡΠΏΡƒΡ‚Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ имСлось Π² Π²ΠΈΠ΄Ρƒ:

float

rates[], maxRate; // ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΄Π²Π° массива?

Π’Π°ΠΊΠΎΠΉ синтаксис Π½Π΅ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ сбиваСт  с Ρ‚ΠΎΠ»ΠΊΡƒ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² соглашСния ΠΏΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΡŽ Java ΠΊΠΎΠ΄Π°, рСкомСндуСтся синтаксис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ сразу Π·Π° Ρ‚ΠΈΠΏΠΎΠΌ объявляСмого массива.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° float с ΠΈΠΌΠ΅Π½Π΅ΠΌ rates ΠΈ пСрСмСнная Ρ‚ΠΈΠΏΠ° float – maxRate.

Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки стоят сразу послС Ρ‚ΠΈΠΏΠ° объявляСмого массива, Ρ‚ΠΎ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² этой строкС ΡΠ²Π»ΡΡŽΡ‚ΡΡ ссылками Π½Π° массивы объявляСмого Ρ‚ΠΈΠΏΠ°, Π° Ссли ΠΆΠ΅ скобки стоят справа ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½Π° являСтся ссылкой Π½Π° массив объявлСнного Ρ‚ΠΈΠΏΠ°.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ данная опСрация объявлСния массива Π΅Ρ‰Π΅ Π½Π΅ создаСт массив, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΡΠ²Π»ΡΡŽΡ‰ΡƒΡŽΡΡ ссылкой Π½Π° Π½Π΅Π³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±Π΅Π· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ компилятор выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‡Ρ‚ΠΎ пСрСмСнная массива Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°.

Пока объявлСнная пСрСмСнная массива Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ (Ссли Π²Ρ‹ присвоитС) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null. И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС опрСдСлСния ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ссылку Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ массива ΠΏΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ массива Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ являСтся строго Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° массива, Π° Π½Π΅ ссылки Π½Π° Π½Π΅Π³ΠΎ.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ссылкой Π½Π° массив (имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ массива) ΠΈ самим массивом, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ эта ссылка.

БозданиС (instantation) массива

На этом этапС указываСтся количСство элСмСнтов массива, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ, выдСляСтся мСсто для массива Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-ссылкС присваиваСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ = адрСс массива. ВсС эти дСйствия производятся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ new Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Ρ‚ΠΈΠΏ элСмСнтов массива. НапримСр:

letters

= new char[10]; // создали массив char-ΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π² 10 элСмСнтов

Но стоит Π΅Ρ‰Π΅ Ρ€Π°Π· Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄ΠΎ этого пСрСмСнная letters, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ объявлСна ΠΊΠ°ΠΊ массив. Π§Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ Π±ΠΎΠ»Π΅Π΅ понятно, это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

char

[] letters; // объявили letters ΠΊΠ°ΠΊ ссылку Π½Π° массив символов char
letters = new char[10]; // создали массив char-ΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π² 10 элСмСнтов

ΠŸΡ€ΠΈ создании массива с Ρ‚Π°ΠΊΠΈΠΌ синтаксисом всС элСмСнты массива автоматичСски ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΎ false для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ boolean, ‘\u0000’Β  для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ char, 0 для Ρ†Π΅Π»Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, 0.0 для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈ null для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ массивов.

Π’ Java Ρ€Π°Π·ΠΌΠ΅Ρ€ массива фиксирован. Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ массив нСльзя ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ. Π–Π΅Π»Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ создаваСмого массива задаСтся Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ числом. Но Π² любоС врСмя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° массива ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сопоставлСн Π½ΠΎΠ²Ρ‹ΠΉ массив Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСна ссылка Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ массив Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ° Ρ‡Ρ‚ΠΎ ΠΈ объявлСнная пСрСмСнная.

Π˜Π½Π΄Π΅ΠΊΡΡ‹ массивов всСгда Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с 0.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: объявлСниС ΠΈ созданиС массива ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. НапримСр:

char

[] letters = new char[10];

Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ эквивалСнтСн Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅.

ПослС Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ пСрСмСнная letters Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΆΠ΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ссылку Π½Π° массив ΠΈ Ссли ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ вывСсти Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ [C@659e0bfd. А всС элСмСнты массива, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для объявлСнного Ρ‚ΠΈΠΏΠ°.

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° new, Π½ΠΎ ссылку Π½Π° ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ массив ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ссылкС Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°. НапримСр:

int

[] a = new int[4];
int[] b =a;

Но Π½Π°Π΄ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ a ΠΈ b ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ массив. По Π½Π°Ρ‡Π°Π»Ρƒ это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±ΠΈΠ²Π°Ρ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ, Π½ΠΎ Ссли ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с ссылочными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ всС становится Π½Π° свои мСста. Если этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅ понятСн, Ρ‚ΠΎ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ‹ всС это Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ….

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚, Ρ‚Π°ΠΊ ΠΆΠ΅, Π΅Ρ‰Π΅ Ρ€Π°Π· ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ссылкС (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ массива) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ «ΠΏΡƒΡΡ‚ΠΎΠ΅» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null, Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π½ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ адрСс ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти:

a

=null;

ПослС этого массив, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»Π° данная ссылка, тСряСтся, Ссли Π½Π° Π½Π΅Π³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ссылок.

Π Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Ρƒ массива ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ константы length, которая ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρƒ. ΠœΡ‹ Π΅ΠΉ ΡƒΠΆΠ΅ Π½Π΅ Ρ€Π°Π· пользовались Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС.

МоТно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массивы Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ (пустой массив). НапримСр:

boolean

[] bits = new boolean[0];

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ массив нСльзя, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ Π½Π΅Π³ΠΎ просто Π½Π΅Ρ‚ элСмСнтов ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π‘Ρ€Π°Π·Ρƒ ΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос, Π° Π½Π° ΠΊΠΎΠΉ ляд ΠΎΠ½ΠΈ Ρ‚ΠΎΠ³Π΄Π° Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Ρ‹ эти пустыС массивы? Но ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹!

ΠŸΡƒΡΡ‚ΠΎΠΉ массив принято ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ… мСстах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π³Π΄Π΅ Π·Π°Ρ€Π°Π½Π΅Π΅ нСизвСстно, Π±ΡƒΠ΄ΡƒΡ‚ элСмСнты ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Если элСмСнты Π±ΡƒΠ΄ΡƒΡ‚, Ρ‚ΠΎ возвращаСтся нСпустой массив, Ссли элСмСнтов Π½Π΅Ρ‚ — пустой массив. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ массив строк ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСдаСтся Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ main() ΠΈ содСрТит Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π° Ссли ΠΈΡ… Π½Π΅Ρ‚, Ρ‚ΠΎ возвращаСтся пустой массив.

ΠŸΡƒΡΡ‚ΠΎΠΉ массив Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ null, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ if’Π° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ΠΎ ΠΆΠ΅ Π²Π΅Ρ€Π½ΠΎ для списков ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. ИмСнно поэтому ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Collections.emptyList, emptySet, emptyMap.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ (initialization) массива

На этом этапС элСмСнты массива ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты массива значСниями ΠΌΠΎΠΆΠ½ΠΎ нСсколькими способами:

  1. ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту массива ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Ρ†ΠΈΠΊΠ»Π΅, Π½ΠΎ Π΄ΠΎ этого массив ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ объявлСн ΠΈ создан)
  2. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ пСрСчислСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΅Π³ΠΎ элСмСнтов Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках (это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π½Π° этапС объявлСния, Ρ‚Π°ΠΊ ΠΈ Π½Π° этапС создания, Π½ΠΎ синтаксис ΠΏΡ€ΠΈ этом Ρ€Π°Π·Π½Ρ‹ΠΉ)

ΠžΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚ΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ элСмСнту массива ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ Π΅Π³ΠΎ индСксу, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ начинаСтся с нуля, ΠΊΠ°ΠΊ это ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ.

Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌΠΈ цСлочислСнными выраТСниями, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΈΠΏΠ° long, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ a[i+j] , a[i%5] , a[++i] . Π˜ΡΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ систСма Java слСдит Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ значСния этих Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π΄Π»ΠΈΠ½Ρ‹ массива. Если ΠΆΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄ всС ΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Java Π² Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π½Π° консоль сообщСниС ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ индСкса массива Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π΅Π³ΠΎ опрСдСлСния (ArrayIndexOutOfBoundsException).

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ способа ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

int

[] ar = new int[2];
ar[0]=1;
ar[1]=2;

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Ρ€Π°Π·Π½ΠΎΠΌΡƒ.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ массива ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ с этапом создания, Π½ΠΎ Π΄ΠΎ этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ массив ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ объявлСн. НапримСр:

int

[] ar; // объявлСниС массива
ar = new int[]{1,2}; // созданиС ΠΈ инициализация

Π”ΠΎ создания ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива ar ΠΎΠ½ ΡƒΠΆΠ΅ Π±Ρ‹Π» объявлСн.

Π’Π°ΠΊ ΠΆΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΌΠΎΠΆΠ½ΠΎ Π½Π° этапС Π΅Π³ΠΎ объявлСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ синтаксисом:

int

[] ar = {1,2}; // объявлСниС, созданиС ΠΈ инициализация массива

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Π­Ρ‚ΠΎΡ‚ синтаксис ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ объявлСнии массива ΠΈ совмСщаСт сразу всС Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ объявлСниС, созданиС ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Если массив ΡƒΠΆΠ΅ объявлСн, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ синтаксис ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСльзя. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π’ΠΎ Π΅ΡΡ‚ΡŒ:

int[] ar; // объявлСниС массива
ar = {1,2}; // ΠžΠ¨Π˜Π‘ΠšΠ!!! созданиС ΠΈ инициализация массива

Π’Π°ΠΊΠΎΠ΅ дСйство Π½Π΅ ΠΏΡ€ΠΎΠΊΠ°Ρ‚ΠΈΡ‚.

Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° этапС объявлСния ΠΈ Ρ‡ΡƒΡ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ:

int

[] ar = new int[]{1,2}; // объявлСниС, созданиС ΠΈ инициализация

Π₯отя этот синтаксис Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ. Если Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ синтаксис это Ρ‚ΠΎΠΆΠ΅ совмСщСниС всСх Ρ‚Ρ€Π΅Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ: объявлСния, создания ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π’ Java прСдусмотрСн синтаксис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ массивы (ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρƒ Π½ΠΈΡ… Π½Π΅Ρ‚ ΠΈΠΌΠ΅Π½). Иногда массив Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ лишь ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ), ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° присваиваниС Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, поэтому ΠΌΠΎΠΆΠ½ΠΎ сразу ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° new. НапримСр:

System

.out.println(new char[] { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’ });

Бинтаксис ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массивов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок называСтся Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ массив-Π»ΠΈΡ‚Π΅Ρ€Π°Π».

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ массивы-Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π½Π΅ Π²ΠΎ врСмя Π΅Π΅ компиляции. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ массив-Π»ΠΈΡ‚Π΅Ρ€Π°Π»:

int

[] perfectNumbers = {6, 28};

Он компилируСтся Π² Ρ‚Π°ΠΊΠΎΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java:

int

[] perfectNumbers = new int[2];
perfectNumbers[0] = 6;
perfectNumbers[1] = 28;

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Java ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…, Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΡ… нСпосрСдствСнно Π² массив, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ компилятору Java придСтся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ΠΎΠ² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ Java Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΡ€ΠΎΠΏΠΎΡ‚Π»ΠΈΠ²ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ вСсь этот ΠΊΠΎΠ΄. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎ внСшнСм Ρ„Π°ΠΉΠ»Π΅ ΠΈ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²ΠΎ врСмя Π΅Π΅ выполнСния.

Однако Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Java ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ массив Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π°ΠΆΠ½Ρ‹Π΅ послСдствия. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ элСмСнты массива-Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ выраТСниями, вычисляСмыми Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π½Π΅ постоянными выраТСниями, вычисляСмыми компилятором. НапримСр:

Point

[] points = { circle1.getCenterPoint(), circle2.getCenterPoint() };

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ попрактикуСмся.

Π’ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π½Π°ΠΌ извСстном ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ main(), ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° массива Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ Ссли Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π½Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° null, Π΄Π°Π±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибки Π²ΠΎ врСмя исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ сразу ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив Π² Ρ†ΠΈΠΊΠ»Π΅, ΠΏΡ€Π°Π²Π΄Π° соблюдая ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ максимального индСкса.

Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ массива, Π° Π·Π°Ρ‚Π΅ΠΌ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ всС значСния элСмСнтов массива. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ†ΠΈΠΊΠ» Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Π½ΠΎ ΠΈΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΌ способом.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ я ΠΏΡ€ΠΈΠ²Π΅Ρ‚ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ€Π°Π΄ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΌΠΎΠ·Π³ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ вашС сознаниС  Π²Π°ΠΌ Π½Π΅ Π±Ρ‹Π»ΠΎ скучно Π·Π½Π°Π»ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Π½ΠΎ ΠΊΠ°ΠΊ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Π½Ρƒ ΠΈ чисто Π² ΡƒΡ‡Π΅Π±Π½ΠΎ-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… цСлях. ΠœΠΎΠΆΠ΅Ρ‚ Π½Π° досугС Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ΡΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ†ΠΈΠΊΠ».

Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄:

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС ΠΌΡ‹ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΠ»ΠΈ Π½ΠΈ ΠΊΠ°ΠΊΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², поэтому ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ массив Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π±Ρ‹Π» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² Ρ†ΠΈΠΊΠ»Π°Ρ…, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ удовлСтворяСт условиям Ρ†ΠΈΠΊΠ»ΠΎΠ².

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ массив Π±Ρ‹Π» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² Ρ†ΠΈΠΊΠ»Π°Ρ….

ДокумСнтация JDK 19 β€” Главная

  1. Главная
  2. Π―Π²Π°
  3. Java SE
  4. 19

ΠžΠ±Π·ΠΎΡ€

  • ΠŸΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ мСня
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΊ выпуску
  • Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ
  • Руководство ΠΏΠΎ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ
  • Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ JDK
  • Руководство ΠΏΠΎ установкС
  • Π€ΠΎΡ€ΠΌΠ°Ρ‚ строки вСрсии

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

  • ВСхничСскиС характСристики инструмСнтов JDK
  • Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ JShell
  • Руководство ΠΏΠΎ JavaDoc
  • Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ срСдства ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ

Π―Π·Ρ‹ΠΊ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

  • ОбновлСния языка
  • ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
  • HTTP-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ JDK
  • Π£Ρ‡Π΅Π±Π½ΠΈΠΊΠΈ ΠΏΠΎ Java
  • ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ JDK
  • Руководство программиста API Π±ΠΎΡ€Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ рСгистратора
  • Руководство ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ВСхничСскиС характСристики

  • ДокумСнтация API
  • Π―Π·Ρ‹ΠΊ ΠΈ Π’Πœ
  • ИмСна стандартных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² бСзопасности Java
  • Π±Π°Π½ΠΎΠΊ
  • БобствСнный интСрфСйс Java (JNI)
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс JVM (JVM TI)
  • БСриализация
  • ΠŸΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Java (JDWP)
  • БпСцификация ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для стандартного Π΄ΠΎΠΊΠ»Π΅Ρ‚Π°
  • ΠŸΡ€ΠΎΡ‡ΠΈΠ΅ характСристики

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ

  • Руководство ΠΏΠΎ бСзопасному ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ
  • Руководство ΠΏΠΎ бСзопасности

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина HotSpot

  • Руководство ΠΏΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Java
  • Настройка сборки мусора

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ устранСниС Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ

  • Руководство ΠΏΠΎ ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ
  • Руководство ΠΏΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ
  • Руководство ΠΏΠΎ JMX

Client Technologies

  • Руководство ΠΏΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ возмоТностям Java

ΠœΠ΅Ρ‚ΠΎΠ΄ Arrays.

Fill (Java.Util) | Microsoft Π£Π·Π½Π°ΠΉΡ‚Π΅

Π’Π²ΠΈΡ‚Ρ‚Π΅Ρ€ LinkedIn ЀСйсбук Π­Π». адрСс

  • β„– ΠΏΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½:
Java.Util
Π‘Π±ΠΎΡ€ΠΊΠ°:
Mono.Android.dll

Π’Π°ΠΆΠ½Ρ‹ΠΉ

НСкоторая информация относится ΠΊ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ вСрсии ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сущСствСнно ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π΄ΠΎ Π΅Π³ΠΎ выпуска. Microsoft Π½Π΅ Π΄Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… явных ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌΡ‹Ρ… Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ прСдставлСнной здСсь ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Int64[], Int32, Int32, Int64)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… чисСл.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Int32[], Int32, Int32, Int32)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ int ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива Ρ†Π΅Π»Ρ‹Ρ… чисСл.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ[], Int32, Int32, ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива ΠΏΠΎΠΏΠ»Π°Π²ΠΊΠΎΠ².

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Int16[], Int32, Int32, Int16)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива ΡˆΠΎΡ€Ρ‚.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Π”Π²ΠΎΠΉΠ½ΠΎΠΉ[], Int32, Int32, Π”Π²ΠΎΠΉΠ½ΠΎΠΉ)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΎΠ².

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Char[], Int32, Int32, Char)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ char ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива символов.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ (Π±Π°ΠΉΡ‚ [], Int32, Int32, SByte)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Π°ΠΉΡ‚Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива Π±Π°ΠΉΡ‚ΠΎΠ².

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ (логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ [], Int32, Int32, логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива логичСских Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(ΠžΠ±ΡŠΠ΅ΠΊΡ‚[], Int32, Int32, ΠžΠ±ΡŠΠ΅ΠΊΡ‚)

НазначаСт ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ (Π±Π°ΠΉΡ‚ [], SByte)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Π°ΠΉΡ‚Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива Π±Π°ΠΉΡ‚.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Int64[], Int64)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива Π΄Π»ΠΈΠ½Π½Ρ‹Ρ….

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Int32[], Int32)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ int ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива ΠΌΠ΅ΠΆΠ΄.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Int16[], Int16)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива ΡˆΠΎΡ€Ρ‚.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Π”Π²ΠΎΠΉΠ½ΠΎΠΉ[], Π”Π²ΠΎΠΉΠ½ΠΎΠΉ)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массив Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΎΠ².

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Π‘ΠΈΠΌΠ²ΠΎΠ»[], Π‘ΠΈΠΌΠ²ΠΎΠ»)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ char ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива символов.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ (логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ [], логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массив Π±ΡƒΠ»Π΅Π²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(ΠžΠ±ΡŠΠ΅ΠΊΡ‚[], ΠžΠ±ΡŠΠ΅ΠΊΡ‚)

НазначаСт ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ[], ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ)

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива ΠΏΠΎΠΏΠ»Π°Π²ΠΊΠΎΠ².

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Int64[], Int32, Int32, Int64)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Int32[], Int32, Int32, Int32)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Int16[], Int32, Int32, Int16)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Π”Π²ΠΎΠΉΠ½ΠΎΠΉ[], Int32, Int32, Π”Π²ΠΎΠΉΠ½ΠΎΠΉ)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Char[], Int32, Int32, Char)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ (Π±Π°ΠΉΡ‚ [], Int32, Int32, SByte)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ (логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ [], Int32, Int32, логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(ΠžΠ±ΡŠΠ΅ΠΊΡ‚[], Int32, Int32, ΠžΠ±ΡŠΠ΅ΠΊΡ‚)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ (Π±Π°ΠΉΡ‚ [], SByte)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Int64[], Int64)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Int32[], Int32)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Int16[], Int16)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Π”Π²ΠΎΠΉΠ½ΠΎΠΉ[], Π”Π²ΠΎΠΉΠ½ΠΎΠΉ)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(Π‘ΠΈΠΌΠ²ΠΎΠ»[], Π‘ΠΈΠΌΠ²ΠΎΠ»)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ (логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ [], логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ(ΠžΠ±ΡŠΠ΅ΠΊΡ‚[], ΠžΠ±ΡŠΠ΅ΠΊΡ‚)

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ошибки: JDK-4809552 ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Arrays.

fill(…)
  • Π’ΠΈΠΏ: Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅
  • ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚: Ρ‚ΠΎΡ‡ΠΊΠ° доступа
  • ΠŸΠΎΠ΄ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚: компилятор
  • Затронутая вСрсия: 1.4.1
  • ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚: P4
  • Бтатус: Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: фиксированноС
  • ОБ: windows_2000
  • ЦП: x86
  • Подано: 28 января 2003 Π³.
  • ОбновлСно: 23 апрСля 2011 Π³.
  • РСшСно: 23 апрСля 2011 Π³.

ВСрсии (Π½Π΅Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅/Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅/исправлСнныС)

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ вСрсий содСрТатся свСдСния ΠΎ выпускС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒΡΡ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°/RFE.

ΠΠ΅Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΉ : Выпуск, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½Π° эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°/RFE.
РСшСно : Выпуск, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°/RFE Π±Ρ‹Π»Π° Ρ€Π΅ΡˆΠ΅Π½Π°.
Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ : ВСрсия, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°/RFE Π±Ρ‹Π»Π° исправлСна. Выпуск, содСрТащий это исправлСниС, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ доступСн для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠ°ΠΊ выпуск для Ρ€Π°Π½Π½Π΅Π³ΠΎ доступа ΠΈΠ»ΠΈ общСдоступный выпуск.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ JDK, Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ здСсь.

6u21pЀиксированный 7 Ѐиксированный hs19Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ

БвязанныС ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹

ΠžΡ‚Π½ΠΎΡΠΈΡ‚ΡΡ : Β 

JDK-6982370 β€” SIGBUS Π² jbyte_fill

ΠžΡ‚Π½ΠΎΡΠΈΡ‚ΡΡ : Β 

JDK-6302620 β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π² Arrays. fill() ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ всСго массива

ΠžΡ‚Π½ΠΎΡΠΈΡ‚ΡΡ : Β 

JDK-6981773 β€” Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ заполнСния с OptimizeFill

ОписаниС

 НаимСнованиС: rmT116609 Π”Π°Ρ‚Π°: 28.01.2003
ΠžΠŸΠ˜Π‘ΠΠΠ˜Π• ΠŸΠ ΠžΠ‘Π›Π•ΠœΠ«:
System.arraycopy() блСстящС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° процСссорах Intel/AMD, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сопоставляСтся с ΠΎΠ΄Π½ΠΎΠΉ инструкциСй REP MOVS. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π° порядок быстрСС, Ρ‡Π΅ΠΌ Ρ‚ΠΎ ΠΆΠ΅ самоС Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅.
МнС Π½ΡƒΠΆΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ System.arrayfill(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ REP STOS.
(БСгодня я ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽ Π±ΡƒΡ„Π΅Ρ€Ρ‹ для b-Π΄Π΅Ρ€Π΅Π²Π°. НуТно Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ тСкстовый Π±ΡƒΡ„Π΅Ρ€ пустыми строками β€” довольно распространСнная Π²Π΅Ρ‰ΡŒ. Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ индСкса ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π‘Π”, поэтому здСсь Π²Π°ΠΆΠ½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ.)
(Код ΠΎΡ‚Π·Ρ‹Π²Π°: 180473)
================================================== =====================

 

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

ΠžΠ¦Π•ΠΠšΠ http://hg. openjdk.java.net/hsx/hsx19/baseline/rev/d64a8c7aa9d5


ΠžΠ¦Π•ΠΠšΠ 4809552: ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Arrays.fill(…) ΠžΡ‚Π·Ρ‹Π²: kvn Π­Ρ‚ΠΎ добавляСт Π½ΠΎΠ²ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ для распознавания Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… ΠΈΠ΄ΠΈΠΎΠΌ ΠΈ прСобразования ΠΈΡ… Π² Π²Ρ‹Π·ΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ заполнСния. ΠŸΡ€Π΅Π΄ΠΈΠΊΠ°Ρ†ΠΈΡ Ρ†ΠΈΠΊΠ»Π° Π»Π΅Π³ΠΊΠΎ создаСтся сопоставлСнныС Ρ†ΠΈΠΊΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просто Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ Π½ΠΎΠ²ΠΎΠΉ сборки Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ. Π’ настоящСС врСмя ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏΡ‹ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 1,2 ΠΈ 4 Π±Π°ΠΉΡ‚Π°. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ longs/double Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ·ΠΆΠ΅. ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ с runthese, nsk ΠΈ ctw плюс jbb2005.


ΠžΠ¦Π•ΠΠšΠ http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/d6f45b55c972


ΠžΠ¦Π•ΠΠšΠ http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/d6f45b55c972


ΠžΠ¦Π•ΠΠšΠ Π― ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π½Π° java/hotspot/compiler2.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *