Как передать массив в метод java
Чтобы передать массив в метод Java , нужно в качестве аргумента указать имя массива, который нужно передать. Например:
public void myMethod(int[] myArray) // some code here >
В данном примере myMethod принимает аргумент myArray типа int[] .
Чтобы вызвать этот метод и передать в него массив, можно сделать так:
int[] myArray = 1, 2, 3, 4, 5>; myMethod(myArray);
В этом примере мы создаем массив myArray и инициализируем его некоторыми значениями, а затем передаем его в метод myMethod вызовом myMethod(myArray)
Передача массива из одного класса в другой
Есть 2 файла классов и в одном объявляется массив n элементов.
Как его передать во второй класс? При обращении к элементам массива мне выдается ошибка non static variable.
Лучшие ответы ( 2 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Переменную из одного класса в другой
Здравствуйте. Сам я новичок со стажем учил все языки программирования, ни в одном не разбираюсь, но.
Передать число из одного класса в другой
Решил проверить, получится ли написать вычислялку по формуле. Вроде все сделал, но не могу передать.
Как передать переменную из одного класса в другой
Есть окружность, а по ней в свою очередь движется точка. Часть кода: import javax.swing.*; .
Как можно передать значения переменных из одного класса в другой?
1) Не могу понять, почему в Borland JBuilder создавая два Фрейма в разных классах при запуске я.
27 / 27 / 24
Регистрация: 23.04.2011
Сообщений: 64
Если возможно, покажите код.
Возможный вариант решения:
Добавить к объявлению ссылки на массив ключевое слово static:
public static int[] array = new int[n];
Регистрация: 03.05.2015
Сообщений: 7
Первый класс (GUI)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
package winbyms; import java.awt.Color; import java.awt.Dimension; import java.awt.Insets; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.JButton; import javax.swing.JFrame; import static javax.swing.JFrame.EXIT_ON_CLOSE; import javax.swing.JPanel; public class Window extends JFrame{ public int i; public int enemies = new Random().nextInt(19) + 6; public JButton[] jar = new JButton[enemies + 1]; public int[][] rar = new int[enemies + 1][3]; public JButton s = new JButton(); Window() { super("Война с кнопками"); setSize(600, 600); setLocation (Math.round((Screen(0) - 600) / 2), Math.round((Screen(1) - 600) / 2)); setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout (null); for (i = 1; i = enemies; i++) { JButton myBut = new JButton (Integer.toString(enemies)); jar[i] = myBut; rar[i][0] = 1; switch (new Random().nextInt(1)) { case 0: rar[i][1] = 1; case 1: rar[i][1] = 0; } switch (new Random().nextInt(1)) { case 0: rar[i][2] = 1; case 1: rar[i][2] = 0; } myBut.setFocusPainted(false); myBut.setLocation(new Random().nextInt(526) + 4, new Random().nextInt(503) + 4); myBut.setSize(50, 50); myBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Update(myBut, i); } }); panel.add(myBut); } setContentPane(panel); } private void Update(JButton acBut, int op) { enemies--; s.setVisible(false); s = acBut; s.setBackground(Color.red); rar[op][0] = 0; } private int Screen(int what) { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Insets scnMax = Toolkit.getDefaultToolkit().getScreenInsets(getGraphicsConfiguration()); int taskBarSize = scnMax.bottom; int width = screenSize.width; int height = screenSize.height - taskBarSize; switch (what) { case 0: return width; case 1: return height; } return 0; } }
второй файл
1 2 3 4 5 6 7 8 9 10 11 12 13
package winbyms; import java.util.Random; import javax.swing.JFrame; public class WinByMS{ public static void main(String[] args) { JFrame window = new Window(); window.setVisible(true); } }
вот что нужно добавить во 2-й файл (движение кнопок)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
public void UPD() int x, y, randX = new Random().nextInt(100), randY = new Random().nextInt(100); while (true) if (randX >= 20) randX = rar[i][1]; else randX = -1 * rar[i][1]; if (randY >= 20) randY = rar[i][2]; else randY = -1 * rar[i][2]; jar[i].setText(Integer.toString(enemies)); jar[i].setLocation(x + randX, y + randY); } } } }
16. Java – Массивы
Массивы в Java – это структура данных, которая хранит упорядоченные коллекции фиксированного размера элементов нужного типа. В Java массив используется для хранения коллекции данных, но часто бывает полезно думать о массиве как о совокупности переменных одного типа.
Вместо объявления отдельных переменных, таких как number0, number1, . и number99, Вы объявляете одну переменную массива, например, numbers и используете numbers[0], numbers[1], . и numbers[99], для отображения отдельных переменных.
Данная статья ознакомит Вас как в Java объявить массив переменных, создать и обрабатывать массив с помощью индексированных переменных.
Объявление массива
Чтобы использовать массив в программе, необходимо объявить переменную для ссылки на массив, и Вы должны указать тип массива, который может ссылаться на переменную. Синтаксис для объявления переменной массива:
dataType[] arrayRefVar; // Предпочтительный способ. или dataType arrayRefVar[]; // Работает, но не является предпочтительным способом.
Примечание: стиль dataType[] arrayRefVar является предпочтительным. Стиль dataType arrayRefVar[] происходит из языка C/C++ и был принят в Java для C/C++-программистов.
Пример
Следующие фрагменты кода примеры использования данного синтаксиса:
double[] myList; // Предпочтительный способ. или double myList[]; // Работает, но не является предпочтительным способом.
Создание массива
В Java создать массив можно с помощью оператора new с помощью следующего синтаксиса:
arrayRefVar = new dataType[arraySize];
Вышеуказанное объявление делает две вещи:
- Создает массив, используя new dataType[arraySize];
- Ссылка на недавно созданный массив присваивается переменной arrayRefVar.
Объявление переменной, создание и присвоение переменной ссылки массива могут быть объединены в одном операторе, как показано ниже:
dataType[] arrayRefVar = new dataType[arraySize];
В качестве альтернативы массивы в Java можно создавать следующим образом:
dataType[] arrayRefVar = ;
Элементы массива доступны через индекс. Отсчет индексов ведется от 0; то есть они начинают от 0 и до arrayRefVar.length-1.
Пример
Следующий оператор объявляет массив переменных myList, создает массив из 10 элементов типа double и присваивает ссылку myList:
double[] myList = new double[10];
Изображение отображает массив myList. Здесь myList имеет десять значений double и индексы от 0 до 9.
Работа с массивами
При работе с элементами массива, часто используют цикл for или цикл foreach потому, что все элементы имеют одинаковый тип и известный размер.
Пример
Полный пример, показывающий, как создавать, инициализировать и обработать массив:
public class TestArray < public static void main(String[] args) < double[] myList = ; // Вывести на экран все элементы массива for (int i = 0; i < myList.length; i++) < System.out.println(myList[i] + " "); >// Сумма элементов массива double total = 0; for (int i = 0; i < myList.length; i++) < total += myList[i]; >System.out.println("Сумма чисел массива: " + total); // Нахождение среди элементов массива наибольшего double max = myList[0]; for (int i = 1; i < myList.length; i++) < if (myList[i] >max) max = myList[i]; > System.out.println("Наибольший элемент: " + max); > >
Получим следующий результат:
1.9 2.9 3.4 3.5 Сумма чисел массива: 11.7 Наибольший элемент: 3.5
Цикл foreach
JDK 1.5 представила новый цикл for, известный как цикл foreach или расширенный цикл for, который позволяет последовательно пройти весь массив без использования индекса переменной.
Пример
Следующий код отображает все элементы в массиве myList:
public class TestArray < public static void main(String[] args) < double[] myList = ; // Вывести массив на экран for (double element: myList) < System.out.println(element); >> >
Получим следующий результат:
1.9 2.9 3.4 3.5
Передача массива в метод
Также как можно передать значение примитивного типа в метод, можно также передать массив в метод. Например, следующий метод отображает элементы в int массиве:
public static void printArray(int[] array) < for (int i = 0; i < array.length; i++) < System.out.print(array[i] + " "); >>
Его можно вызвать путем передачи массива. Например, следующий оператор вызывает метод printArray для отображения 3, 1, 2, 6, 4 и 2:
printArray(new int[]);
Возврат массива из метода
Метод может также возвращать массив. Например, метод, показанный ниже, возвращает массив, который является реверсирование другого массива:
public static int[] reverse(int[] list) < int[] result = new int[list.length]; for (int i = 0, j = result.length - 1; i < list.length; i++, j--) < result[j] = list[i]; >return result; >
Методы для массива
Класс java.util.Arrays содержит различные статические методы для поиска, сортировки, сравнения и заполнения элементов массива. Методы перегружаются для всех примитивных типов.
№ | Описание |
1 | public static int binarySearch(Object[] a, Object key) Ищет заданный массив объектов (byte, int, double, и т.д.) для указанного значения, используя алгоритм двоичного поиска. Массив должен быть отсортирован до выполнения этого вызова. Это возвращает индекс ключа поиска, если он содержится в списке; в противном случае (-(точка вставки + 1). |
2 | public static boolean equals(long[] a, long[] a2) Возвращает значение true, если два указанных массивах равны друг другу. Два массива считаются равными, если оба массива содержат одинаковое количество элементов, и все соответствующие пары элементов в двух массивах равны. Такой же метод может быть использован всеми другими примитивными типами данных (byte, short, int и т.д.). |
3 | public static void fill(int[] a, int val) Присваивает определенное значение int к каждому элементу указанного целочисленного массива. Такой же метод может быть использован всеми другими примитивными типами данных (byte, short, int и т.д.). |
4 | public static void sort(Object[] a) Этот метод сортировки сортирует указанный массив объектов в порядке возрастания, в соответствии с естественным порядком его элементов. Такой же метод может быть использован всеми другими примитивными типами данных (byte, short, int и т.д.). |
Пример 1: создание, объявление переменных, определение (выделение памяти) и инициализация массива
В качестве примера возьмем тип данных int. Вы же можете использовать любой другой тип данных.
public class Test < public static void main(String[] args) < // Создание массивов myArrayInt1 и myArrayInt2 типа int и объявление переменных int[] myArrayInt1; int myArrayInt2[]; // Определение массива или выделение памяти // Массив myArrayInt3 из 10 элементов с начальным значением 0 для каждого элемента int[] myArrayInt3; myArrayInt3 = new int[10]; // Массив myArrayInt4 из 20 элементов с начальным значением 0 для каждого элемента int[] myArrayInt4 = new int[20]; //Инициализация массива // Массив myArrayInt5 из 5 элементов со значениями элементов 1, 3, 8, 10, 4 int[] myArrayInt5 = ; // Массив myArrayInt6 из 10 элементов с начальным значением 0 для каждого элемента int[] myArrayInt6 = new int[10]; // Присвоение второму элементу myArrayInt6 значения 14 myArrayInt6[2] = 14; // Присвоение пятому элементу myArrayInt6 значения 8 myArrayInt6[5] = 8; > >
Пример 2: длина массива
Узнать размер массива в Java можно с помощью метода length(). Данный метод позволяет определить размерность массива.
public class Test < public static void main(String[] args) < // Массив myArray1 из 5 элементов типа double. double[] myArray1 = ; // Вывод длины массива myArray1 на экран. System.out.println("Количество элементов в массиве myArray1: " + myArray1.length); // Массив myArray2 из 4 элементов типа String. String[] myArray2 = ; // Вывод размера массива myArray2 на экран. System.out.println("Количество элементов в массиве myArray2: " + myArray2.length); > >
Получим следующий результат:
Количество элементов в массиве myArray1: 5 Количество элементов в массиве myArray2: 4
Пример 3: максимальный элемент массива
Простые способы для того, чтобы найти максимальное число в массиве в Java. Сперва воспользуемся методом Math.max().
public class Test < public static void main(String[] args) < // Нахождение максимального элемента в массиве myArray из 4 элементов типа double. double[] myArray = ; // Переменной max задаем минимальное double-значение. double max = Double.MIN_VALUE; // Перебираем все элементы массива. for (int i = 0; i < myArray.length; i++) < // Переменной max с помощью метода Math.max() присваиваем максимальное значение // путем выбора наибольшего из двух значений ("старого" значения max и значения элемента). max = Math.max(max, myArray[i]); >// Выводим на экран наибольшее число массива myArray. System.out.println("Максимальный элемент в массиве myArray: " + max); > >
Получим следующий результат:
Максимальный элемент в массиве myArray: 11.1
Ещё один пример нахождения максимального числа в массиве в Java. Здесь мы не будем использовать какие-либо методы.
public class Test < public static void main(String[] args) < // Нахождение максимального значения в массиве myArray из 4 элементов типа double. double[] myArray = ; // Переменной max задаем значение нулевого элемента. double max = myArray[0]; // Перебираем все элементы массива. for (int i = 1; i < myArray.length; i++) < // Сравниваем значение переменной max со значениями элемента массива. // Если значение элемента массива больше значения переменной max, // то новое значение переменной max будет равно значению этого элемента. if (myArray[i] >max) < max = myArray[i]; >> // Выводим на экран наибольший элемент массива myArray. System.out.println("Максимальное значение в массиве myArray: " + max); > >
Получим следующий результат:
Максимальное значение в массиве myArray: 11.1
Пример 4: минимальный элемент массива
Написанный ниже код практически ничем не отличается от кода, описанного в примере 3. Он в точности наоборот, просто здесь мы ищем минимальное число в массиве в Java. В первом способе воспользуемся методом Math.min().
public class Test < public static void main(String[] args) < // Нахождение минимального элемента в массиве myArray из 4 элементов типа double. double[] myArray = ; // Переменной min задаем максимальное double-значение. double min = Double.MAX_VALUE; // Перебираем все элементы массива. for (int i = 0; i < myArray.length; i++) < // Переменной min с помощью метода Math.min() присваиваем минимальное значение // путем выбора наименьшего из двух значений ("старого" значения min и значения элемента). min = Math.min(min, myArray[i]); >// Выводим на экран наименьшее число массива myArray. System.out.println("Минимальный элемент в массиве myArray: " + min); > >
Получим следующий результат:
Минимальный элемент в массиве myArray: 5.8
Ещё один пример нахождения максимального числа в массиве в Java. Здесь мы не будем использовать какие-либо методы.
public class Test < public static void main(String[] args) < // Нахождение минимального значения в массиве myArray из 4 элементов типа double. double[] myArray = ; // Переменной min задаем значение нулевого элемента. double min = myArray[0]; // Перебираем все элементы массива. for (int i = 1; i < myArray.length; i++) < // Сравниваем значение переменной min со значениями элемента массива. // Если значение элемента массива меньше значения переменной min, // то новое значение переменной min будет равно значению этого элемента. if (myArray[i] < min) < min = myArray[i]; >> // Выводим на экран наименьший элемент массива myArray. System.out.println("Минимальное значение в массиве myArray: " + min); > >
Получим следующий результат:
Минимальное значение в массиве myArray: 5.8
Пример 5: сумма массива
В этом примере рассмотрим как получить сумму элементов массива в Java.
public class Test < public static void main(String[] args) < // Нахождение суммы элементов в массиве myArray из 5 элементов типа double. double[] myList = ; // Инициализируем переменную total. double total = 0; // Прибавляем к переменной total каждый элемент массива. for (int i = 0; i < myList.length; i++) < total += myList[i]; >// Вывод результата на экран. System.out.println("Сумма элементов массива myList: " + total); > >
Получим следующий результат:
Сумма элементов массива myList: 34.9
А в этом примере используем улучшенный цикл for, чтобы найти сумму массива.
public class Test < public static void main(String[] args) < // Получение суммы элементов в массиве myArray из 5 элементов типа double. double[] myList = ; // Инициализируем переменную total. double total = 0; // Прибавляем к переменной total каждый элемент массива с помощью улучшенного цикла for. for(double element : myList) < total += element; >// Вывод результата на экран. System.out.println("Сумма массива myList: " + total); > >
Получим следующий результат:
Сумма массива myList: 34.9
Пример 6: вывод массива
В данном примере рассмотрим как вывести массив на экран в Java.
public class Test < public static void main(String[] args) < // Вывод на экран массива myArray из 5 элементов типа double. double[] myList = ; // Вывод массива на экран с помощью улучшенного цикла for. System.out.print("Вывод элементов массива myList: "); for(double element : myList) < System.out.print(element + ", "); >// Вывод элементов массива на экран. System.out.print("\nВывод элементов массива myList: "); for (int i = 0; i < myList.length; i++) < System.out.print(myList[i] + ", "); >> >
Получим следующий результат:
Вывод элементов массива myList: 11.5, 1.9, 5.32, 8.8, 15.8, Вывод элементов массива myList: 11.5, 1.9, 5.32, 8.8, 15.8,
Пример 7: вывод четных и нечетных элементов массива
В примере показано как вывести четные и нечетных элементы массива в Java.
public class Test < public static void main(String[] args) < // Массива myArray из 5 элементов типа double. double[] myList = ; // Вывод четных элементов массива на экран. System.out.print("Четные элементы массива myList: "); for (int i = 0; i < myList.length; i++) < if(myList[i]%2 == 0)< System.out.print(myList[i] + ", "); >> // Вывод нечетных элементов массива на экран. System.out.print("\nНечетные элементы массива myList: "); for (int i = 0; i < myList.length; i++) < if(myList[i]%2 != 0)< System.out.print(myList[i] + ", "); >> > >
Получим следующий результат:
Четные элементы массива myList: 2.0, 12.0, Нечетные элементы массива myList: 2.7, 3.0, 23.8,
Пример 8: вывод элементов массива с четным и нечетным индексом
В примере показано как вывести на экран элементы массива с четным и нечетным индексом.
public class Test < public static void main(String[] args) < // Массив myArray из 5 элементов типа double. double[] myList = ; // Вывод элементов массива с четным индексом на экран. System.out.print("Элементы массива myList с четным индексом: "); for (int i = 0; i < myList.length; i++) < if(i%2 == 0)< System.out.print("индекс " + i + " = " + myList[i] + ", "); >> // Вывод элементов массива с нечетным индексом на экран. System.out.print("\nЭлементы массива myList с нечетным индексом: "); for (int i = 0; i < myList.length; i++) < if(i%2 != 0)< System.out.print("индекс " + i + " = " + myList[i] + ", "); >> > >
Получим следующий результат:
Элементы массива myList с четным индексом: индекс 0 = 11.5, индекс 2 = 5.32, индекс 4 = 15.8, Элементы массива myList с нечетным индексом: индекс 1 = 1.9, индекс 3 = 8.8,
Оглавление
- 1. Java – Самоучитель для начинающих
- 2. Java – Обзор языка
- 3. Java – Установка и настройка
- 4. Java – Синтаксис
- 5. Java – Классы и объекты
- 6. Java – Конструкторы
- 7. Java – Типы данных и литералы
- 8. Java – Типы переменных
- 9. Java – Модификаторы
- 10. Java – Операторы
- 11. Java – Циклы и операторы цикла
- 11.1. Java – Цикл while
- 11.2. Java – Цикл for
- 11.3. Java – Улучшенный цикл for
- 11.4. Java – Цикл do..while
- 11.5. Java – Оператор break
- 11.6. Java – Оператор continue
- 12. Java – Операторы принятия решений
- 12.1. Java – Оператор if
- 12.2. Java – Оператор if..else
- 12.3. Java – Вложенный оператор if
- 12.4. Java – Оператор switch..case
- 12.5. Java – Условный оператор (? 🙂
- 13. Java – Числа
- 13.1. Java – Методы byteValue(), shortValue(), intValue(), longValue(), floatValue(), doubleValue()
- 13.2. Java – Метод compareTo()
- 13.3. Java – Метод equals()
- 13.4. Java – Метод valueOf()
- 13.5. Java – Метод toString()
- 13.6. Java – Метод parseInt()
- 13.7. Java – Метод Math.abs()
- 13.8. Java – Метод Math.ceil()
- 13.9. Java – Метод Math.floor()
- 13.10. Java – Метод Math.rint()
- 13.11. Java – Метод Math.round()
- 13.12. Java – Метод Math.min()
- 13.13. Java – Метод Math.max()
- 13.14. Java – Метод Math.exp()
- 13.15. Java – Метод Math.log()
- 13.16. Java – Метод Math.pow()
- 13.17. Java – Метод Math.sqrt()
- 13.18. Java – Метод Math.sin()
- 13.19. Java – Метод Math.cos()
- 13.20. Java – Метод Math.tan()
- 13.21. Java – Метод Math.asin()
- 13.22. Java – Метод Math.acos()
- 13.23. Java – Метод Math.atan()
- 13.24. Java – Метод Math.atan2()
- 13.25. Java – Метод Math.toDegrees()
- 13.26. Java – Метод Math.toRadians()
- 13.27. Java – Метод Math.random()
- 14. Java – Символы
- 14.1. Java – Метод Character.isLetter()
- 14.2. Java – Метод Character.isDigit()
- 14.3. Java – Метод Character.isWhitespace()
- 14.4. Java – Метод Character.isUpperCase()
- 14.5. Java – Метод Character.isLowerCase()
- 14.6. Java – Метод Character.toUpperCase()
- 14.7. Java – Метод Character.toLowerCase()
- 14.8. Java – Метод Character.toString()
- 15. Java – Строки
- 15.1. Java – Метод charAt()
- 15.2. Java – Метод compareTo()
- 15.3. Java – Метод compareToIgnoreCase()
- 15.4. Java – Метод concat()
- 15.5. Java – Метод contentEquals()
- 15.6. Java – Метод copyValueOf()
- 15.7. Java – Метод endsWith()
- 15.8. Java – Метод equals()
- 15.9. Java – Метод equalsIgnoreCase()
- 15.10. Java – Метод getBytes()
- 15.11. Java – Метод getChars()
- 15.12. Java – Метод hashCode()
- 15.13. Java – Метод indexOf()
- 15.14. Java – Метод intern()
- 15.15. Java – Метод lastIndexOf()
- 15.16. Java – Метод length()
- 15.17. Java – Метод matches()
- 15.18. Java – Метод regionMatches()
- 15.19. Java – Метод replace()
- 15.20. Java – Метод replaceAll()
- 15.21. Java – Метод replaceFirst()
- 15.22. Java – Метод split()
- 15.23. Java – Метод startsWith()
- 15.24. Java – Метод subSequence()
- 15.25. Java – Метод substring()
- 15.26. Java – Метод toCharArray()
- 15.27. Java – Метод toLowerCase()
- 15.28. Java – Метод toString()
- 15.29. Java – Метод toUpperCase()
- 15.30. Java – Метод trim()
- 15.31. Java – Метод valueOf()
- 15.32. Java – Классы StringBuilder и StringBuffer
- 15.32.1. Java – Метод append()
- 15.32.2. Java – Метод reverse()
- 15.32.3. Java – Метод delete()
- 15.32.4. Java – Метод insert()
- 15.32.5. Java – Метод replace()
- 16. Java – Массивы
- 17. Java – Дата и время
- 18. Java – Регулярные выражения
- 19. Java – Методы
- 20. Java – Потоки ввода/вывода, файлы и каталоги
- 20.1. Java – Класс ByteArrayInputStream
- 20.2. Java – Класс DataInputStream
- 20.3. Java – Класс ByteArrayOutputStream
- 20.4. Java – Класс DataOutputStream
- 20.5. Java – Класс File
- 20.6. Java – Класс FileReader
- 20.7. Java – Класс FileWriter
- 21. Java – Исключения
- 21.1. Java – Встроенные исключения
- 22. Java – Вложенные и внутренние классы
- 23. Java – Наследование
- 24. Java – Переопределение
- 25. Java – Полиморфизм
- 26. Java – Абстракция
- 27. Java – Инкапсуляция
- 28. Java – Интерфейсы
- 29. Java – Пакеты
- 30. Java – Структуры данных
- 30.1. Java – Интерфейс Enumeration
- 30.2. Java – Класс BitSet
- 30.3. Java – Класс Vector
- 30.4. Java – Класс Stack
- 30.5. Java – Класс Dictionary
- 30.6. Java – Класс Hashtable
- 30.7. Java – Класс Properties
- 31. Java – Коллекции
- 31.1. Java – Интерфейс Collection
- 31.2. Java – Интерфейс List
- 31.3. Java – Интерфейс Set
- 31.4. Java – Интерфейс SortedSet
- 31.5. Java – Интерфейс Map
- 31.6. Java – Интерфейс Map.Entry
- 31.7. Java – Интерфейс SortedMap
- 31.8. Java – Класс LinkedList
- 31.9. Java – Класс ArrayList
- 31.10. Java – Класс HashSet
- 31.11. Java – Класс LinkedHashSet
- 31.12. Java – Класс TreeSet
- 31.13. Java – Класс HashMap
- 31.14. Java – Класс TreeMap
- 31.15. Java – Класс WeakHashMap
- 31.16. Java – Класс LinkedHashMap
- 31.17. Java – Класс IdentityHashMap
- 31.18. Java – Алгоритмы Collection
- 31.19. Java – Iterator и ListIterator
- 31.20. Java – Comparator
- 32. Java – Дженерики
- 33. Java – Сериализация
- 34. Java – Сеть
- 34.1. Java – Обработка URL
- 35. Java – Отправка Email
- 36. Java – Многопоточность
- 36.1. Java – Синхронизация потоков
- 36.2. Java – Межпоточная связь
- 36.3. Java – Взаимная блокировка потоков
- 36.4. Java – Управление потоками
- 37. Java – Основы работы с апплетами
- 38. Java – Javadoc
Как передать массив из метода java, а зачем очистить его?
Я беру с базы данных сайта ники пользователей с определенным значением и заменяю значение, чтобы больше не брать эти-же ники. Вношу их в массив и передаю его через return основному классу. А после передачи мне нужно очистить массив, чтобы в следующий раз снова не передать эти-же ники. Для теста написал вот это, но он просто выдает список из null.
public class sql < public static String[] get_names() < String[] name = new String[] ; String[] name_return = name; for(int i =0; i < name.length; i++) < name[i] = null; >return name_return;>>
Как мне передать массив из метода, а потом его очистить ?
- Вопрос задан более трёх лет назад
- 1221 просмотр
Комментировать
Решения вопроса 1
Я мастер на все руки, я козлик Элек Мэк 🙂
Во первых, в java нет понятия «очищения» элементарного массива. Но можно очистить список типа List (Vector, Arralist и т.д.).
Во вторых, не пойму, зачем вообще что-то чистить, в яве прекрасный автоматический сборщик мусора, чем мы все и гордимся.
В третьих — передавать массив так и нужно, просто возвращая его имя в return
Ответ написан более трёх лет назад
Нравится 1 8 комментариев
Caffeinee @Caffeinee Автор вопроса
этот метод выполняется каждые 5 минут. Первый раз я передаю предположим 2 ника. На второй раз у меня появляются 2 других ника для передачи. Первых двух уже не будет в массиве или они останутся и у меня будет массив из 4-х элементов ?
Caffeinee, Вам нужно получать разницу в массивах? Один массив достаете из базы, второй в памяти постоянно будет?
Caffeinee, Да и ошибка у вас в коде! Так массивы присваивать нельзя. Вы второй переменной просто присвоили ССЫЛКУ на массив, а массив у вас как был один, так и остался!
String[] name = new String[] ; List name_return = new ArrayList(); for(int i =0; i < name.length; i++) < if(name[i].startsWith("caf")) < name_return.append(name[i]); >> // здесь хитрым способом конвертируем наш список в массив // нахрена, правда, не знаю, чо бы просто список не вернуть? return name_return.stream().toArray(String[]::new); // вот так правильней // return name_return;
Caffeinee @Caffeinee Автор вопроса
Алексей Черемисин, Мне нужен 1 массив. Я заполняю его переменными с базы данных и передаю в главный класс, где дальше с ним играюсь. Но мне нужно, чтобы когда я снова выполнял этот метод, массив был пустой, и в него попадали новые переменные из базы данных, старых там быть уже не должно.
Caffeinee @Caffeinee Автор вопроса
Алексей Черемисин, Условно в таблице базы есть колонка. Некий php скрипт ставит в ней значение с 0 на 1. Затем я беру всех пользователей со значением 1, меняю его на 2 и записываю их себе в массив. Затем через 5 минут процедура повторяется. Но пользователи с предыдущей процедуры мне больше не нужны в массиве.
Caffeinee, не используйте массивы — используйте коллекции! массив — неизменяемый, в некотором роде.
Caffeinee, это вам не язык С, где нужно чистить массивы, просто создайте новый массив!
String[] name = new String[] ;
.
name = new String[] ;
.
name = new String[] ;
Денис Загаевский @zagayevskiy Куратор тега Java
Caffeinee, короче непонятно, где ты хранишь этот массив. Это критически важно для правильного ответа, так что давай нормальный код.
Ответы на вопрос 1
В Вашем примере всё, что находится внутри метода get_names, будет удалено после его выполнения (в том числе массив, который Вы там создаёте и возвращаете). И так будет происходить каждый раз, когда Вы вызываете этот метод.
Чтобы постоянно держать массив и работать с ним, Вам нужно где-то объявить этот массив (например, в классе Sql), а у Вас там только метод.
И как уже написали выше, массив — не лучшее решение в данном случае, т.к. он создаётся с определённым размером, и дальше Вы уже не сможете изменить этот размер. Используйте вместо массива List. Тогда можно будет менять размер, наполнять и «очищать» содержимое.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- Android
- +2 ещё
Почему при сворачивание приложения оно не развёртывается?
- 1 подписчик
- 9 часов назад
- 31 просмотр