Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
4 / 4 / 2
Регистрация: 27.03.2012
Сообщений: 142

Есть ли разница при возврате значений?

15.08.2013, 14:51. Показов 2173. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
доброго времени суток
немного запутался я, вопрос: полностью ли идентичны следующие 2 функции?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Test{
  
  Test() {
  }
  
  long meth1(long l)
  {
    return 200;
  }
  
   long meth2(long l)
    {
        return l = 200;
    }
  
  public static void main(String []args){
    System.out.println("Hello World");
    
      Test val = new Test();
     ...
 
  }
}
точнее во второй присвоение на что-то влияет или если его убрать как в первой, то не скажется на функционале?
я думал что при взове например так:
Java
1
2
long b=300;
long a=val.meth2(b);
переменная b перезапишется, но вроде ничего не происходит
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.08.2013, 14:51
Ответы с готовыми решениями:

получение значений переменных из файла при возврате Activity на экран. правильно ли я поступаю ?
Имеется основное Activity приложения, которое ранее было перекрыто другим Activity (настройками), когда оно возвращается на экран - нужно...

Есть ли разница в способах присвоения значений аргументам функции?
В разных источниках наблюдал такую запись заданий аргументов. Например: Private Sub Form_Load() MsgBox Sum(2, 3) Unload Me ...

Есть ли принципиальная разница при обучении?
Здравствуйте, У меня стоит Ubuntu Desktop 14.04 -- хочу установить на него LAMP веб-сервер. Я нашел неплохое обучающее видео, но оно было...

35
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 20:08
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от mutagen Посмотреть сообщение
http://www.quizful.net/interview/jav...30213803711684
мм ?)
Если вы про это:

Цитата Сообщение от allocator Посмотреть сообщение
Абсолютно верно, грубо говоря программист получает два вида передачи сущности: примитивы передаются по значению (копируется его значение), и ссылки на объект тоже передаются по значению (копируется значение самой ссылки на тот же самый объект). Те ссылки две объект один. В методе изменить объект через переданную ссылку возможно, а вот изменение значения ссылки никакого результата не принесет!
То я тоже самое и имел ввиду. Копируется ссылка , а не объект. Если копировался объект то это уже 100% "by value" , а тут получается какой-то "reference by value". Просто они так называют (разрабы Java) передачу по ссылке. В с++ это называется взятием адреса... что равно передаче по ссылке.

Добавлено через 1 минуту
Ссылка == Адрес объекта в памяти. Я ведь правильно понимаю?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.08.2013, 20:22
Цитата Сообщение от Care Посмотреть сообщение
Ссылка == Адрес объекта в памяти. Я ведь правильно понимаю?
ответьте сначала на вопрос, что является значением инстанса?
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 20:30
Цитата Сообщение от mutagen Посмотреть сообщение
ответьте сначала на вопрос, что является значением инстанса?
Что вы подразумеваете под "инстансом" ? Экземпляр класса, экземпляр файла ? Не понятно инстансом чего?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.08.2013, 20:35
Вы читали спецификацию на английском?
Есть Class и его instance (по народному объект в памяти)
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 20:48
Цитата Сообщение от mutagen Посмотреть сообщение
Вы читали спецификацию на английском?
Есть Class и его instance (по народному объект в памяти)
Ну я это понимаю, просто у instance прямой перевод экземпляр.

Добавлено через 4 минуты
Цитата Сообщение от mutagen Посмотреть сообщение
ответьте сначала на вопрос, что является значением инстанса?
Тут я не понял вопроса. Как понять значение инстанса (объекта,эземпляра)?

Добавлено через 4 минуты

Не по теме:

вернусь через 15 минут ))

0
4 / 4 / 2
Регистрация: 27.03.2012
Сообщений: 142
18.08.2013, 20:53  [ТС]
Очень интересный у вас развился спор, послежу ещё )
но к моему случаю это же не отностится как я понял, да? или при "корректном" вызове может аукнуться?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.08.2013, 21:03
Цитата Сообщение от Care Посмотреть сообщение
Тут я не понял вопроса. Как понять значение инстанса (объекта,эземпляра)?
что является значением инстанса при передаче в метод как параметр?
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 21:40
Цитата Сообщение от mutagen Посмотреть сообщение
что является значением инстанса при передаче в метод как параметр?
Инстанс вы не как не предадите в параметр, только его адрес (ссылку).

Добавлено через 6 минут
Цитата Сообщение от EDIsaev Посмотреть сообщение
Очень интересный у вас развился спор, послежу ещё )
но к моему случаю это же не отностится как я понял, да? или при "корректном" вызове может аукнуться?
Это не обязательно понимать , но полезно. Вы можете пользоваться указателем this как доступ к перекрытым переменным или для явного указания что используется метод текущего объекта и тд. Как работают методы вне Java знать не обязательно.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.08.2013, 22:31
Цитата Сообщение от Care Посмотреть сообщение
Инстанс вы не как не предадите в параметр, только его адрес (ссылку).
адрес верно - по значению, копированием этого значения, но не ссылку.
по этому адресу в хипе валяется объект и метод лазит туда с различными целями в зависимости от использования.

отличие в том что ссылка в терминологии С++ позволяет манипулировать памятью, адресная арифметика и тд.
в яве вы по сути получаете копию ссылки и уже в зависимости от типа класса мутабельный или имутабельный вы получаете возможность изменять состояние или не получаете
Java
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
/**
 * @author mutagen
 */
public class MutableImmutable {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        MyImmutable immutable = new MyImmutable();
        MyMutable mutable = new MyMutable();
        tryMutate(immutable);
        tryMutate(mutable);
        System.out.println("mutable = " + mutable.i);
        System.out.println("immutable = " + immutable.i);
    }
 
    static  void tryMutate(MyImmutable mi) {
//        mi.i = 100;   не получится
    }
 
    static void tryMutate(MyMutable mm) {
        mm.i = 100;
    }
 
    static final class MyImmutable {
        public final int i = 10;
    }
 
    static class MyMutable {
 
        public int i = 10;
    }
}
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 22:54
Цитата Сообщение от mutagen Посмотреть сообщение
отличие в том что ссылка в терминологии С++ позволяет манипулировать памятью, адресная арифметика и тд.
к ссылке в с++ арифметика указателей не может применяться , только к указателям. На то она "арифметика указателей".
То что вы называете Mutable .. в с++ это называется "Константным объектом" реализуется проще чем в Java...
Но суть не в этом, а в том все таки передается Объекты в параметры по "значению" или по ссылке. Можно ли изменять состояние у объекта это уже не важно.

Добавлено через 4 минуты
Просто то что называется в с++ "копированием ссылки", в Java называется это "копированием ссылки по значению".
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.08.2013, 23:20
и почему с++ - ники такие упёртые в свою терминологию и подходы.
Вот я например не пытаюсь натянуть своё понимание java на c++ не смотря на похожий синтаксис,
а подавляющее большинство плюсистов пытаются и при этом ругают её на чём свет стоит - что она тупая, тормозная, не мультинаслед и тд.
Что самое интересное С-шники этим совершенно не страдают.
Наверное от того что несмотря на возраст с++, для него так и не написали ничего что могло бы использоваться 10 лет без потери совместимости в новых версиях либок со старым кодом. Мне думается это от излишней свободы в языке и этим пользуются программисты стремясь как можно больше выпендриться с сложными конструкциями и тем самым делая свой код бабочкой однодневкой. Вон и Столлман уже обсирал с++.
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 23:33
Цитата Сообщение от mutagen Посмотреть сообщение
и почему с++ - ники такие упёртые в свою терминологию и подходы.
Вот я например не пытаюсь натянуть своё понимание java на c++ не смотря на похожий синтаксис,
а подавляющее большинство плюсистов пытаются и при этом ругают её на чём свет стоит - что она тупая, тормозная, не мультинаслед и тд.
Что самое интересное С-шники этим совершенно не страдают.
Наверное от того что несмотря на возраст с++, для него так и не написали ничего что могло бы использоваться 10 лет без потери совместимости в новых версиях либок со старым кодом. Мне думается это от излишней свободы в языке и этим пользуются программисты стремясь как можно больше выпендриться с сложными конструкциями и тем самым делая свой код бабочкой однодневкой. Вон и Столлман уже обсирал с++.
Окей скажите тогда мне что вы представляете под :
Передача по значению и Передача по ссылке.

Не по теме:

Если бы не было с++, то не было бы и java. и сам я не сиплюсплюсник пока) просто то что в Java было для меня черным ящиком, в с++ стало понятно

0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.08.2013, 23:40
Цитата Сообщение от Care Посмотреть сообщение
просто то что в Java было для меня черным ящиком, в с++ стало понятно
внутри ява отличается от с++ так же как жираф от носорога )
почитайте про Reflection и про библиотеку asm которая позволяет на лету менять методы классов
попробуйте в с++ сделать такой трюк, подменить на лету метод в классе так чтобы все его консьюмеры стали пользоваться новым,
или залезть в обьект и подменить ему приватный проперти на другой обьект в рантайме

Не по теме:

про ссылки я уже подустал, дальше эта тема без меня )

0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 23:49
Ладно короче толку нету спорить ) Лучше закрой тогда тему что бы я не заходил каждые 15 минут на форум ))

Добавлено через 7 минут
Ну "управляймые" языков свои преимущества и тд.
Что то можно сделать на java того чего нельзя сделать в с++ (хотя я читал что в с++ рефлексия достигается не которыми билиотеками) . И я не говорю что Java "плохой" или "хуже" c++ и тд. Мне очень нравится язык Java, но есть такие задачи которые средствами Java решать не выгодно. Там уже нужно пользоваться языками более "низкого" уровня, а не пихать куда не попадя управляймые языки. Если бы все можно было бы решить только Java'ой я бы ваше про с++ и не думал)
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.08.2013, 23:52
Цитата Сообщение от Care Посмотреть сообщение
Ладно короче толку нету спорить ) Лучше закрой тогда тему что бы я не заходил каждые 15 минут на форум ))
Надеюсь вы не думаете что я пишу тут лично для вас )))
Форум читает множество людей.
Почитав наш диалог, некоторые возможно избавятся от граблей в будущем.
Вам я вижу моя помощь ни к чему )))
Спасибо за весёлый диалог - тут временами скучно, вы освежили форум.

Не по теме:

по поводу закрытия темы, я решу когда пора - без вашей помощи

1
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 23:59
Цитата Сообщение от mutagen Посмотреть сообщение
Надеюсь вы не думаете что я пишу тут лично для вас )))
Форум читает множество людей.
Почитав наш диалог, некоторые возможно избавятся от граблей в будущем.
Вам я вижу моя помощь ни к чему )))
Спасибо за весёлый диалог - тут временами скучно, вы освежили форум.

Не по теме:

по поводу закрытия темы, я решу когда пора - без вашей помощи

ок)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.08.2013, 23:59
Помогаю со студенческими работами здесь

Есть ли разница в IP при платных ссылках
Есть несколько сайтов которые висят на одной айпишке. На всех них стоит ссылка на мой сайт. Так вот эти ссылки имели бы больший вес для...

Есть разница при DLLImport портируем мы процедуру или функцию
Пытаюсь сделать импорт из DLL Delphi. Все работает, но выводит значение nan. и тут случайно заметила что портирую процедуру, а они же не...

Есть ли существенная разница при использовании PCI-E 16X или 8X?
Вопрос состоит в следующем. Нигде, ни в каких тестах не могу найти, есть ли существенная разница при использовании PCI-E 16X или 8X. Почему...

Есть ли разница при расчете регрессии в положении переменной AB или BA
Привет считаю линейную регрессию между двумя временными рядами подскажите - есть ли разница какой ряд идет первым. Вопрос из за того...

Есть ли разница в трафике при просмотре видео с компьютера и при просмотре через удаленный экран?
Например, есть видео на ютуб, мы его посмотрели и у нас израсходовалось определенное количество трафика. Будет ли разница в трафике,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru