Объявление переменной типа массив
Объявление переменной типа массив c инициализацией
Объявление и инициализация массива
Анонимные массивы
Анонимный массив
Передача ссылки на массив функции
Длина массива
Выход за пределы массива
Цикл “for each” или “enhanced for”
Копирование массивов
Копирование массивов
Сортировка массивов
Сортировка массивов
Как распечатывать массивы
Строковое представления массивов
Строковое представление
Как проверять массивы на равенство
Проверка на равенство
Проверка на равенство
Объявление переменной типа массив массивов
Объявление переменной c инициализацией
Объявление и инициализация
Объявление с инициализацией
Как распечатывать многомерные массивы
Строковое представление
Как проверять многомерные массивы на равенство
Проверка на равенство
771.43K
Category: programmingprogramming

Типы, переменные, управляющие инструкции. Массивы. (Тема 2.5)

1.

II. Типы, переменные,
управляющие инструкции
5. Массивы
1

2.

Массив это объект который содержит фиксированное число значений одного
типа. Длина массива задаётся в момент создания массива и после создания
не меняется. Значения хранящиеся в массиве называются элементами
массива. Доступ к элементам массива осуществляется с помощью
целочисленного индекса. Первый элемент массива имеет индекс 0. Тип
значений элементов массива может быть любым примитивным или
ссылочным типом. Сам тип массива независимо от того является ли он
массивом значений примитивного типа или ссылочного типа является
ссылочным типом.
2

3. Объявление переменной типа массив

 type[] variable; 
 type[] variable; 
При объявлении переменной типа массив необходимо
указать тип значений элементов массива. Переменная
типа массив может хранить ссылку на массив
значений заданного типа. Объявление перменной типа
массив не создаёт массив.
3

4. Объявление переменной типа массив c инициализацией

   type[] variable
type[] variable == new type[size]; 
new type[size]; 
   type[] variable
type[] variable == new type[] { val
new type[] { val11, val
, val22, ..., val
, ..., valnn }; 
 }; 
   type[] variable
type[] variable == { val
{ val11, val
, val22, ..., val
, ..., valnn }; 
 }; 
Для создания массива можно использовать оператор
new. При создании массива значения элементов массива
можно
явно
проинициализировать
заданными
значениями. Если элементы массива явно не
инициализируются их значения задаются равными
значениям по умолчанию.
4

5. Объявление и инициализация массива

package arrays;
package arrays;
public class DeclDemo {
public class DeclDemo {
   public static void main(String[] args) {
   public static void main(String[] args) {
      int[] anArray;
      int[] anArray;
      anArray = new int[10];
      anArray = new int[10];
      for (int i = 0; i < 10; i++) {
      for (int i = 0; i < 10; i++) {
         anArray[i] = 100 * i;
         anArray[i] = 100 * i;
      }
      }
      for (int i = 0; i < 10; i++) {
      for (int i = 0; i < 10; i++) {
         System.out.println(anArray[i]);
         System.out.println(anArray[i]);
      }
      }
   }
   }
}}
00
100
100
200
200
300
300
400
400
500
500
600
600
700
700
800
800
900
900
5

6. Анонимные массивы

someObject.someMethod( new type[] { val
someObject.someMethod( new type[] { val11, val
, val22, ..., val
, ..., valnn })
 })
Анонимные массивы можно создавать без присваивания
ссылки переменной. Ссылку на созданный анонимный
массив можно передавать как параметр в методы.
6

7. Анонимный массив

public class AnonymousDemo {
public class AnonymousDemo {
    public static void main(String[] args) {
    public static void main(String[] args) {
        System.out.println("first sum: "
        System.out.println("first sum: "
                + sum(new int[] { 1, 2, 3, 4, 5 }));
                + sum(new int[] { 1, 2, 3, 4, 5 }));
        System.out.println("second sum: "
        System.out.println("second sum: "
                + sum(new int[] { 1, 2, 3, 4, 5, 6 }));
                + sum(new int[] { 1, 2, 3, 4, 5, 6 }));
        System.out.println("third sum: "
        System.out.println("third sum: "
                + sum(new int[] { 1, 2, 3, 4, 5, 6, 7}));
                + sum(new int[] { 1, 2, 3, 4, 5, 6, 7}));
    }
    }
    public static int sum(int[] numbers) {
    public static int sum(int[] numbers) {
        int total = 0;
        int total = 0;
        for (int i : numbers) {
        for (int i : numbers) {
            total = total + i;
            total = total + i;
        }
        }
        return total;
        return total;
    }
    }
}}
first sum: 15
first sum: 15
second sum: 21
second sum: 21
third sum: 28
third sum: 28
7

8.

Массив это ссылочный тип
8

9. Передача ссылки на массив функции

public class RefDemo {
public class RefDemo {
   public static void main(String[] args) {
   public static void main(String[] args) {
      String[] b = { "Apple", "Mango", "Orange" };
      String[] b = { "Apple", "Mango", "Orange" };
      System.out.println("Before Function Call: " + b[0]);
      System.out.println("Before Function Call: " + b[0]);
      changeElement(b);
      changeElement(b);
      System.out.println("After Function Call: " + b[0]);
      System.out.println("After Function Call: " + b[0]);
   }
   }
   public static void changeElement(String[] a) {
   public static void changeElement(String[] a) {
      a[0] = "Changed";
      a[0] = "Changed";
   }
   }
}}
Before Function Call: Apple
Before Function Call: Apple
After Function Call: Changed
After Function Call: Changed
9

10.

Длина массива и обход массива
10

11.

Попытка обратиться к элементу массива с индексом за пределами
диапазона индексов элементов массива приведёт к исключению.
Минимальный индекс элемента в массиве 0. Максимальный индекс
элемента в массиве на единицу меньше длины массива. Длину массива
можно получить с помощью свойства length.
11

12. Длина массива

public class LengthDemo {
public class LengthDemo {
   public static void main(String[] args) {
   public static void main(String[] args) {
      int[] anArray = { 0, 100, 200, 300, 400, 500, 600, 700, 800, 900 };
      int[] anArray = { 0, 100, 200, 300, 400, 500, 600, 700, 800, 900 };
      for (int i = 0; i < anArray.length; i++) {
      for (int i = 0; i < anArray.length; i++) {
         System.out.println(anArray[i]);
         System.out.println(anArray[i]);
      }
      }
      System.out.println();
      System.out.println();
      System.out.println("Array length is: " + anArray.length);
      System.out.println("Array length is: " + anArray.length);
   }
   }
}}
00
100
100
200
200
300
300
400
400
500
500
600
600
700
700
800
800
900
900
Array length is: 10
Array length is: 10
12

13. Выход за пределы массива

public class OutOfBoundsDemo {
public class OutOfBoundsDemo {
   public static void main(String[] args) {
   public static void main(String[] args) {
      int[] anArray = { 0, 100, 200, 300, 400, 500, 600, 700, 800, 900 };
      int[] anArray = { 0, 100, 200, 300, 400, 500, 600, 700, 800, 900 };
           
           
      for (int i = 0; i <= 10; i++) {
      for (int i = 0; i <= 10; i++) {
         System.out.println(anArray[i]);
         System.out.println(anArray[i]);
      }
      }
      System.out.println();
      System.out.println();
      System.out.println("Array length is: " + anArray.length);
      System.out.println("Array length is: " + anArray.length);
   }
   }
}}
00
100
100
200
200
300
300
400
400
500
500
600
600
700
700
800
800
900
900
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at arrays.OutOfBoundsDemo.main(OutOfBoundsDemo.java:12)
at arrays.OutOfBoundsDemo.main(OutOfBoundsDemo.java:12)
13

14. Цикл “for each” или “enhanced for”

public class EnhancedDemo {
public class EnhancedDemo {
   public static void main(String[] args) {
   public static void main(String[] args) {
      int[] anArray = {0, 100, 200, 300, 400, 500, 600, 700, 800, 900 };
      int[] anArray = {0, 100, 200, 300, 400, 500, 600, 700, 800, 900 };
      for (int a : anArray) {
      for (int a : anArray) {
         System.out.println(a);
         System.out.println(a);
      }
      }
   }
   }
}}
00
100
100
200
200
300
300
400
400
500
500
600
600
700
700
800
800
900
900
14

15.

Копирование массивов
15

16. Копирование массивов

package java.util;
package java.util;
public class Arrays {
public class Arrays {
    ...
    ...
  
  
     public static int[] copyOf(int[] original, int newLength) {
     public static int[] copyOf(int[] original, int newLength) {
        int[] copy = new int[newLength];
        int[] copy = new int[newLength];
        System.arraycopy(original, 0, copy, 0,
        System.arraycopy(original, 0, copy, 0,
                         Math.min(original.length, newLength));
                         Math.min(original.length, newLength));
        return copy;
        return copy;
    }
    }
    public static int[] copyOfRange(int[] original, int from, int to) {
    public static int[] copyOfRange(int[] original, int from, int to) {
        int newLength = to - from;
        int newLength = to - from;
        if (newLength < 0)
        if (newLength < 0)
            throw new IllegalArgumentException(from + " > " + to);
            throw new IllegalArgumentException(from + " > " + to);
        int[] copy = new int[newLength];
        int[] copy = new int[newLength];
        System.arraycopy(original, from, copy, 0,
        System.arraycopy(original, from, copy, 0,
                         Math.min(original.length - from, newLength));
                         Math.min(original.length - from, newLength));
        return copy;
        return copy;
    }
    }
    ...
    ...
}}
package java.lang;
package java.lang;
public final class System {
public final class System {
    
    
   public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
   public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
   ...
   ...
}}
C
В классе Arrays из пакета java.util есть методы copyOf и copyOfRange
которые создают новый массив содержащий часть элементов другого
массива и возвращают ссылку на этот новый массив. Внутри эти методы для
копирования массивов используют метод arraycopy из класса System.
16

17. Копирование массивов

public class CopyDemo {
public class CopyDemo {
   public static void main(String[] args) {
   public static void main(String[] args) {
      char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' };
      char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' };
      char[] copyTo = new char[7];
      char[] copyTo = new char[7];
      System.out.println("Initial array: ");
      System.out.println("Initial array: ");
      System.out.println(copyFrom);
      System.out.println(copyFrom);
      System.out.println("Copying Array using arraycopy...");
      System.out.println("Copying Array using arraycopy...");
      System.arraycopy(copyFrom, 2, copyTo, 0, 7);
      System.arraycopy(copyFrom, 2, copyTo, 0, 7);
      System.out.println(copyTo);
      System.out.println(copyTo);
      System.out.println("Copying Array using copyOfRange...");
      System.out.println("Copying Array using copyOfRange...");
      copyTo = Arrays.copyOfRange(copyFrom, 2, 9);
      copyTo = Arrays.copyOfRange(copyFrom, 2, 9);
      System.out.println(copyTo);
      System.out.println(copyTo);
   }
   }
}}
Initial array: 
Initial array: 
decaffeinated
decaffeinated
Copying Array using arraycopy...
Copying Array using arraycopy...
caffein
caffein
Copying Array using copyOfRange...
Copying Array using copyOfRange...
caffein
caffein
17

18.

Сортировка массивов
18

19. Сортировка массивов

package java.util;
package java.util;
public class Arrays {
public class Arrays {
    ...
    ...
  
  
    public static void sort(int[] a)
    public static void sort(int[] a)
    public static void sort(int[] a, int fromIndex, int toIndex)
    public static void sort(int[] a, int fromIndex, int toIndex)
     public static void sort(Object[] a) {
     public static void sort(Object[] a) {
        Object[] aux = (Object[])a.clone();
        Object[] aux = (Object[])a.clone();
        mergeSort(aux, a, 0, a.length, 0);
        mergeSort(aux, a, 0, a.length, 0);
    }
    }
    public static void sort(Object[] a, int fromIndex, int toIndex) {
    public static void sort(Object[] a, int fromIndex, int toIndex) {
        rangeCheck(a.length, fromIndex, toIndex);
        rangeCheck(a.length, fromIndex, toIndex);
        Object[] aux = copyOfRange(a, fromIndex, toIndex);
        Object[] aux = copyOfRange(a, fromIndex, toIndex);
        mergeSort(aux, a, fromIndex, toIndex, -fromIndex);
        mergeSort(aux, a, fromIndex, toIndex, -fromIndex);
    }
    }
    ...
    ...
}}
C
В классе Arrays из пакета java.util есть методы sort
для сортировки массива или диапазона элементов
массива. Для сортировки массива ссылочного типа
необходимо чтобы тип реализовывал интерфейс
Comparable.
19

20. Сортировка массивов

public class SortDemo {
public class SortDemo {
   public static void main(String[] args) {
   public static void main(String[] args) {
      int[] anArray = { 900, 200, 1000, 700, 500, 600, 400, 800, 300, 100 };
      int[] anArray = { 900, 200, 1000, 700, 500, 600, 400, 800, 300, 100 };
      for (int i = 0; i < 10; i++) {
      for (int i = 0; i < 10; i++) {
         System.out.print(anArray[i] + " ");
         System.out.print(anArray[i] + " ");
      }
      }
      System.out.println();
      System.out.println();
      System.out.println("Sorting Array...");
      System.out.println("Sorting Array...");
      Arrays.sort(anArray);
      Arrays.sort(anArray);
      for (int a : anArray) {
      for (int a : anArray) {
         System.out.print(a + " ");
         System.out.print(a + " ");
      }
      }
      System.out.println();
      System.out.println();
   }
   }
}}
900 200 1000 700 500 600 400 800 300 100 
900 200 1000 700 500 600 400 800 300 100 
Sorting Array...
Sorting Array...
100 200 300 400 500 600 700 800 900 1000 
100 200 300 400 500 600 700 800 900 1000 
20

21.

Строковое представление
21

22. Как распечатывать массивы

Массивы наследуют метод toString из класса Object, при этом тип массива
печатается как ‘[‘, плюс сокращённое название типа элемента, плюс хеш
код. Для получение строкового представления содержащего информацию
об элементах массива необходимо использовать статический метод
toString из класса Arrays.
22

23. Строковое представления массивов

package java.util;
package java.util;
public class Arrays {
public class Arrays {
    ...
    ...
  
  
    public static String toString(int[] a)
    public static String toString(int[] a)
    
    
    public static String toString(Object[] a) {
    public static String toString(Object[] a) {
        if (a == null)
        if (a == null)
            return "null";
            return "null";
        int iMax = a.length - 1;
        int iMax = a.length - 1;
        if (iMax == -1)
        if (iMax == -1)
            return "[]";
            return "[]";
   
   
        StringBuilder b = new StringBuilder();
        StringBuilder b = new StringBuilder();
        b.append('[');
        b.append('[');
        for (int i = 0; ; i++) {
        for (int i = 0; ; i++) {
            b.append(String.valueOf(a[i]));
            b.append(String.valueOf(a[i]));
            if (i == iMax)
            if (i == iMax)
                return b.append(']').toString();
                return b.append(']').toString();
            b.append(", ");
            b.append(", ");
        }
        }
    }
    }
 ...
 ...
}}
C
В классе Arrays из пакета java.util есть методы
toString для получения строкового представления
массивов примитивных типов и ссылочных типов.
23

24. Строковое представление

public class PrintDemo {
public class PrintDemo {
   public static void main(String[] args) {
   public static void main(String[] args) {
      int[] anArray = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 };
      int[] anArray = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 };
      System.out.println(anArray.getClass().getName() + "@" + Integer.toHexString(anArray.hashCode()));
      System.out.println(anArray.getClass().getName() + "@" + Integer.toHexString(anArray.hashCode()));
      System.out.println(anArray);
      System.out.println(anArray);
      System.out.println("ToString from Arrays: \n" + Arrays.toString(anArray));
      System.out.println("ToString from Arrays: \n" + Arrays.toString(anArray));
   }
   }
}}
[I@190d11
[I@190d11
[I@190d11
[I@190d11
ToString from Arrays: 
ToString from Arrays: 
[100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
[100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
24

25.

Проверка на равенство
25

26. Как проверять массивы на равенство

Массивы наследуют метод equals из класса Object, этот метод просто
проверяет ссылки на равенство. Для проверки массивов на равенство
необходимо использовать статический метод equals из класса Arrays.
26

27. Проверка на равенство

package java.util;
package java.util;
public class Arrays {
public class Arrays {
    ...
    ...
  
  
    public static boolean equals(int[] a, int[] a2)
    public static boolean equals(int[] a, int[] a2)
    public static boolean equals(Object[] a, Object[] a2) {
    public static boolean equals(Object[] a, Object[] a2) {
        if (a==a2)
        if (a==a2)
            return true;
            return true;
        if (a==null || a2==null)
        if (a==null || a2==null)
            return false;
            return false;
        int length = a.length;
        int length = a.length;
        if (a2.length != length)
        if (a2.length != length)
            return false;
            return false;
        for (int i=0; i<length; i++) {
        for (int i=0; i<length; i++) {
            Object o1 = a[i];
            Object o1 = a[i];
            Object o2 = a2[i];
            Object o2 = a2[i];
            if (!(o1==null ? o2==null : o1.equals(o2)))
            if (!(o1==null ? o2==null : o1.equals(o2)))
                return false;
                return false;
        }
        }
        return true;
        return true;
    }
    }
    ...
    ...
}}
27

28. Проверка на равенство

public class EqualsDemo {
public class EqualsDemo {
    public static void main(String[] args) {
    public static void main(String[] args) {
        
        
        int[] one = { 1, 2, 3, 4, 5 };
        int[] one = { 1, 2, 3, 4, 5 };
        int[] two = { 1, 2, 3, 4, 5 };
        int[] two = { 1, 2, 3, 4, 5 };
        
        
        System.out.println("Array one: " + Arrays.toString(one));
        System.out.println("Array one: " + Arrays.toString(one));
        System.out.println("Array two: " + Arrays.toString(two));
        System.out.println("Array two: " + Arrays.toString(two));
        
        
        System.out.println("Comparing arrays one and two.....");
        System.out.println("Comparing arrays one and two.....");
        
        
        System.out.println("Using equals(): " + one.equals(two));
        System.out.println("Using equals(): " + one.equals(two));
        System.out.println("Using Arrays.equals(): " + Arrays.equals(one,two));
        System.out.println("Using Arrays.equals(): " + Arrays.equals(one,two));
    }
    }
}}
Array one: [1, 2, 3, 4, 5]
Array one: [1, 2, 3, 4, 5]
Array two: [1, 2, 3, 4, 5]
Array two: [1, 2, 3, 4, 5]
Comparing arrays one and two.....
Comparing arrays one and two.....
Using equals(): false
Using equals(): false
Using Arrays.equals(): true
Using Arrays.equals(): true
28

29.

Многомерные массивы
29

30.

Многомерные массивы строятся на основе одномерных массивов. Таким образом
многомерный массив это массив массивов. У двумерных массивов например строки
могут быть разной длины и каждая строка является отдельным объектом и может
быть независимо использована.
30

31. Объявление переменной типа массив массивов

 type[][]  variable; 
 type[][]  variable; 
При объявлении переменной типа массив массивов
необходимо указать тип значений элементов массива.
Объявление переменной типа массив массивов не
создаёт ни один массив.
31

32. Объявление переменной c инициализацией

 type[][]  variable
 type[][]  variable = new type[size][]; 
= new type[size][]; 
 type[][]  variable
 type[][]  variable = new type[size
= new type[size11][size
][size22]; 
]; 
   type[][]  variable
, val , ..., val
},{val , val
, ..., val }}; 
type[][]  variable = new type[][]{{val
= new type[][]{{val11
11, val12
12, ..., val1n
1n},{val21
21, val22
22, ..., val2m
2m}}; 
   type[][]  variable
, val , ..., val
},{val , val
, ..., val }}; 
type[][]  variable = {{val
= {{val11
11, val12
12, ..., val1n
1n},{val21
21, val22
22, ..., val2m
2m}}; 
Для создания массива можно использовать оператор
new. При создании массива значения элементов массива
можно
явно
проинициализировать
заданными
значениями. Если элементы массива явно не
инициализируются их значения задаются равными
значениям по умолчанию.
32

33. Объявление и инициализация

public class Init2dDemo {
public class Init2dDemo {
   public static void main(String[] args) {
   public static void main(String[] args) {
      int[][] anArray;
      int[][] anArray;
      anArray = new int[2][3];
      anArray = new int[2][3];
      anArray[0][0] = 0;
      anArray[0][0] = 0;
      anArray[0][1] = 1;
      anArray[0][1] = 1;
      anArray[0][2] = 2;
      anArray[0][2] = 2;
      anArray[1][0] = 3;
      anArray[1][0] = 3;
      anArray[1][1] = 4;
      anArray[1][1] = 4;
      anArray[1][2] = 5;
      anArray[1][2] = 5;
      for (int i = 0; i < 2; i++) {
      for (int i = 0; i < 2; i++) {
         for (int j = 0; j < 3; j++) {
         for (int j = 0; j < 3; j++) {
            System.out.print(anArray[i][j] + " ");
            System.out.print(anArray[i][j] + " ");
         }
         }
         System.out.println();
         System.out.println();
      }
      }
   }
   }
}}
0 1 2 
0 1 2 
3 4 5 
3 4 5 
33

34. Объявление с инициализацией

public class Decl2dDemo {
public class Decl2dDemo {
   public static void main(String[] args) {
   public static void main(String[] args) {
      int[][] anArray = new int[3][];
      int[][] anArray = new int[3][];
      anArray[0] = new int[] { 0, 1, 2 };
      anArray[0] = new int[] { 0, 1, 2 };
      anArray[1] = new int[] { 3, 4, 5, 6, 7 };
      anArray[1] = new int[] { 3, 4, 5, 6, 7 };
      anArray[2] = new int[] { 8, 9, 10 };
      anArray[2] = new int[] { 8, 9, 10 };
      for (int i = 0; i < anArray.length; i++) {
      for (int i = 0; i < anArray.length; i++) {
         for (int j = 0; j < anArray[i].length; j++) {
         for (int j = 0; j < anArray[i].length; j++) {
            System.out.print(anArray[i][j] + " ");
            System.out.print(anArray[i][j] + " ");
         }
         }
         System.out.println();
         System.out.println();
      }
      }
   }
   }
}}
0 1 2 
0 1 2 
3 4 5 6 7 
3 4 5 6 7 
8 9 10
8 9 10
34

35.

Строковое представление
многомерного массива
35

36. Как распечатывать многомерные массивы

Массивы наследуют метод toString из класса Object, при этом тип массива
печатается как ‘[‘ плюс сокращённое название типа элемента плюс хеш код. Для
получения строкового представления многомерного массива содержащего
информацию об элементах массива необходимо использовать статический
метод deepToString из класса Arrays.
36

37. Строковое представление

public class Print2dDemo {
public class Print2dDemo {
   public static void main(String[] args) {
   public static void main(String[] args) {
      int[][] anArray = { { 1 }, { 1, 2 }, { 1, 2, 3 }, { 1, 2, 3, 4 }, { 1, 2, 3, 4 ,5} };
      int[][] anArray = { { 1 }, { 1, 2 }, { 1, 2, 3 }, { 1, 2, 3, 4 }, { 1, 2, 3, 4 ,5} };
      System.out.println(anArray.getClass().getName() + "@" + Integer.toHexString(anArray.hashCode()));
      System.out.println(anArray.getClass().getName() + "@" + Integer.toHexString(anArray.hashCode()));
      System.out.println(anArray);
      System.out.println(anArray);
      System.out.println(Arrays.toString(anArray));
      System.out.println(Arrays.toString(anArray));
      System.out.println(Arrays.deepToString(anArray));
      System.out.println(Arrays.deepToString(anArray));
   }
   }
}}
[[I@190d11
[[I@190d11
[[I@190d11
[[I@190d11
[[I@a90653, [I@de6ced, [I@c17164, [I@1fb8ee3, [I@61de33]
[[I@a90653, [I@de6ced, [I@c17164, [I@1fb8ee3, [I@61de33]
[[1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5]]
[[1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5]]
37

38.

Проверка на равенство многомерных массивов
38

39. Как проверять многомерные массивы на равенство

Массивы наследуют метод equals из класса Object, этот метод просто
проверяет ссылки на равенство. Для проверки многомерных массивов на
равенство необходимо использовать статический метод deepEquals из
класса Arrays.
39

40. Проверка на равенство

public class DeepEqualsDemo {
public class DeepEqualsDemo {
    public static void main(String[] args) {
    public static void main(String[] args) {
        int[][] one = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
        int[][] one = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
        int[][] two = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
        int[][] two = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
        System.out.println("Array one: " + Arrays.deepToString(one));
        System.out.println("Array one: " + Arrays.deepToString(one));
        System.out.println("Array two: " + Arrays.deepToString(two));
        System.out.println("Array two: " + Arrays.deepToString(two));
        System.out.println("Comparing arrays one and two.....");
        System.out.println("Comparing arrays one and two.....");
        System.out.println("Using equals(): " + one.equals(two));
        System.out.println("Using equals(): " + one.equals(two));
        System.out.println("Using Arrays.equals(): " + Arrays.equals(one, two));
        System.out.println("Using Arrays.equals(): " + Arrays.equals(one, two));
        System.out.println("Using Arrays.deepEquals(): "
        System.out.println("Using Arrays.deepEquals(): "
                + Arrays.deepEquals(one, two));
                + Arrays.deepEquals(one, two));
    }
    }
}}
Array one: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Array one: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Array two: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Array two: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Comparing arrays one and two.....
Comparing arrays one and two.....
Using equals(): false
Using equals(): false
Using Arrays.equals(): false
Using Arrays.equals(): false
Using Arrays.deepEquals(): true
Using Arrays.deepEquals(): true
40
English     Русский Rules