![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
По умолчанию объекты типа String передаются по значению. Можно ли как то исхитрится и передать String по ссылке?
Пока есть только идея передавать массив стрингов, но это не очень удобно :( Так как в методе меняется всего две переменных... -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
ekr |
|
|||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 3 Всего: 19 |
по ссылке они передаются, т.к. это объектный тип, а не примитивный а что сделать-то дальше с ними надо? |
|||
|
||||
y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 5 Всего: 13 |
К тому же есть StringBuilder-ы и StringBuffer-ы... на крайний случай
![]() Не хватает информации о решаемой задачи, чтобы что-то предложить... -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
Не всё так просто. Вот код
На выходе получаем: old value. Те, по сути происходит передача по значению. Задача такая. Функция должна распарсить передаваемую ей строку, и записать результат в две других строки. -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: 4 Всего: 72 |
|
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Shaggie, это не поможет:
Приведённый пример проще поставленной задачи. 3,14, а кто мешает сделать свой объект, который будет содержать две строки? И его уже передавать функции. Она в этом случае без проблем изменить содержимое строк. Ну или тот же массив передавать, но это скорее сишный стиль, чем жабовский. Кстати, о передаче по ссылке и значению в java уже немало сказано на этом форуме. Поищи и почитай - полезно. Поймёшь, почему у тебя передалось "по значению". ![]() -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
goodday1941 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 1 Всего: 9 |
таки так получаеться интерестно а что будет если написать так:
Добавлено через 10 минут и 57 секунд в общем то результат тот же.. дак почему же не переопределился стринг? -------------------- SCJP 6 |
||||
|
|||||
y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 5 Всего: 13 |
ничего не будет ![]() http://java.sun.com/javase/6/docs/api/java/lang/String.html а вот по поводу иммьютабельности строки, вот показательный пример http://skipy.developer.juga.ru/technics/st...s.html#mutation но это так, лирика ![]() вообще, как ту правильно заметили, лучше сделать для этого POJO и не париться... Это сообщение отредактировал(а) y3u - 23.8.2007, 14:48 -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Ничего хорошего. String является immutable. str не изменится, а результат возвратится из метода replace.
-------------------- ![]() |
|||
|
||||
3,14 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
потомучто тогда при каждом вызове ф-ии придётся писать 5 строк вместо 1, что очень не приятно
Да я и так знаю, почему это так работает. Я не могу найти решение к-ое меня бы устраивало. -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
||||||
|
|||||||
y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 5 Всего: 13 |
ну, привыкай ![]() "здесь Вам не С" (с) ![]() -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 1 Всего: 9 |
эта строка мне открыла глаза ![]() а есть где то перечень immutable классов? -------------------- SCJP 6 |
|||
|
||||
3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
Не привык привыкать ![]() ![]() -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
y3u |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 5 Всего: 13 |
по приколу, с ходу не тестируя, т.ч. не пинайте
![]() ![]()
использование в одну строчку
Это сообщение отредактировал(а) y3u - 23.8.2007, 16:02 -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
||||
|
|||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Что-то не сходится... y3u, что-то я не понял, к чему код... Или ты темой ошибся, или я нить рассуждений потерял... Добавлено через 4 минуты и 22 секунды Мне почему-то кажется, что скорее 3 строки, но в данном случае это не так важно. Передать "по ссылке" можно лишь, если требуемая переменная лежит внутри другого объекта (передаваемого). Или массива. Другого способа нет. Хотя... Если через рефлекшн внаглую попробовать "проломить" безопасную ссылку... Только вот лично я предпочту сделать обёртку. Потому как рефлекшн пользовать не лучшая идея. ![]() -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |