Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> метод изменяющий конкретный элемент массива 
:(
    Опции темы
merfi
  Дата 17.3.2009, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 16.3.2005

Репутация: нет
Всего: нет



Нужно создать метод изменяющий конкретный элемент массива заданным значением 
Написал примерно следующее
Интерфейс:
Код

public interface ArrayControll{
     int changeElementArray(int index, int value, int[] tmparr);
}

Class который  implements
Код

public class MyArrayControls implements ArrayControll{

 public int changeElementArray(int i , int value, int[] tmparr) {
        System.out.println("Изменение заданного элемента массива");        
        System.out.println("До замены: индекс=" + i + " значение=" + tmparr[i]);
        tmparr[i] = value;
        System.out.println("После замены: индекс=" + i + " значение=" + tmparr[i]);        
        return tmparr[i];
    }
}

Вопрос: Правильно ли передавать массив как параметр метода . Хочется создавать массив в другом классе и применять к нему вышеописанный метод класса. Дело в том , что методов обработки массива  у меня много . Если массив не передавать как параметр , то придется его создавать в каждом методе. как быть ?


--------------------
Стремитесь к совершенству! Неуклонно идите вперед! Но помните, что Ковчег сделал любитель а Титаник построили профессионалы
PM MAIL   Вверх
batigoal
Дата 18.3.2009, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(merfi @  17.3.2009,  19:57 Найти цитируемый пост)
Вопрос: Правильно ли передавать массив как параметр метода 

А чем плохо? Какие ты видишь негативные стороны у этого способа?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
garbuz
Дата 18.3.2009, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: 3
Всего: 11



Наверно надо помнить, что примитивные типы передаются по значению, и передавая таким образом массив в метод, у вас ничего в исходном массиве не изменится. Создавайте массив типа
Код

Integer[] array;

а чтобы вызывать метод в любом месте, создайте какой-нибудь сервисный класс и вызывайте статический метод
Код

public class ArrayUtil{

 public static void changeElementArray(int i , int value, Integer[] tmparr) {
        System.out.println("Изменение заданного элемента массива");        
        System.out.println("До замены: индекс=" + i + " значение=" + tmparr[i]);
        tmparr[i] = value;
        System.out.println("После замены: индекс=" + i + " значение=" + tmparr[i]);        
    }
}
}

Естественно придется избавиться от интерфейса.
Вызывать типа того
Код

....
ArrayUtil.changeElementArray(6, 32, changableArray);

PM MAIL   Вверх
kamre
Дата 18.3.2009, 03:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: 1
Всего: 13



Цитата(garbuz @ 18.3.2009,  00:35)
Наверно надо помнить, что примитивные типы передаются по значению, и передавая таким образом массив в метод, у вас ничего в исходном массиве не изменится. Создавайте массив типа
Код

Integer[] array;

И давно это в Java массивы из примитивных типов передаются по значению?   smile 
Переменная типа int[] и так будет ссылкой.
PM MAIL   Вверх
merfi
Дата 18.3.2009, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 16.3.2005

Репутация: нет
Всего: нет



Цитата(batigoal @  18.3.2009,  00:06 Найти цитируемый пост)
А чем плохо? Какие ты видишь негативные стороны у этого способа?


Спастбо за ответ ! Коротко ясно и по существу ! Кстати насколько мне помниться имя массива и есть ссылка на массив
--------------------
Стремитесь к совершенству! Неуклонно идите вперед! Но помните, что Ковчег сделал любитель а Титаник построили профессионалы
PM MAIL   Вверх
batigoal
Дата 18.3.2009, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(merfi @  18.3.2009,  09:35 Найти цитируемый пост)
Кстати насколько мне помниться имя массива и есть ссылка на массив 

Да, массив в Java является объектом и подчиняется всем правилам работы с объектами --> при передаче его в качестве параметра в метод он передается по ссылке.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
garbuz
Дата 18.3.2009, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: 3
Всего: 11



Цитата(batigoal @  18.3.2009,  10:27 Найти цитируемый пост)
Да, массив в Java является объектом и подчиняется всем правилам работы с объектами --> при передаче его в качестве параметра в метод он передается по ссылке. 

Мда... ложанулся я  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.