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

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

15.08.2013, 14:51. Показов 2170. Ответов 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
любитель покушать
 Аватар для Севак
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
15.08.2013, 14:54
EDIsaev, вы никаким образом не сможете поменять значение переданной в метод переменной
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
15.08.2013, 14:55
Цитата Сообщение от EDIsaev Посмотреть сообщение
полностью ли идентичны следующие 2 функции?
Да
Цитата Сообщение от EDIsaev Посмотреть сообщение
если его убрать как в первой, то не скажется на функционале?
Нет не скажется.

В Java параметры всегда передаются по значению.
0
4 / 4 / 2
Регистрация: 27.03.2012
Сообщений: 142
15.08.2013, 15:18  [ТС]
вот спасибо
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
17.08.2013, 23:08
Цитата Сообщение от turbanoff Посмотреть сообщение
В Java параметры всегда передаются по значению.
По значению только примитивы.
0
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
17.08.2013, 23:34
Цитата Сообщение от Care Посмотреть сообщение
По значению только примитивы.
http://docs.oracle.com/javase/... ments.html
Passing Reference Data Type Arguments

Reference data type parameters, such as objects, are also passed into methods by value. This means that when the method returns, the passed-in reference still references the same object as before. However, the values of the object's fields can be changed in the method, if they have the proper access level.
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
17.08.2013, 23:41
Цитата Сообщение от verylazy Посмотреть сообщение
Аргументы передаются в параметры по ссылке...
0
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
17.08.2013, 23:52
помочь перевести что там написано?
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 00:13
Цитата Сообщение от verylazy Посмотреть сообщение
помочь перевести что там написано?
Динамически выделенная память не может передоваться по значению! По значению это ЗНАЧИТ копировать объект в параметр метода.

Во 1: Если в объекте есть какие-то другие динамически выделенные объекты , то это значит копируемая память будет одинаковой и в параметре и в аргументе что может привести к фатальным ошибкам.
Во 2: Передача по значению не эффективна, так как придётся копировать весь объект (а если это какой нибудь массив?)

Добавлено через 6 минут
Цитата Сообщение от verylazy Посмотреть сообщение
помочь перевести что там написано?
Pass By Reference means the passing the address itself rather than passing the value. Pass By Value means passing a copy of the value to be passed.

Добавлено через 4 минуты
http://docs.oracle.com/javase/... ments.html
Здесь почитал и понял что тут предается по значению ССЫЛКА , а не сам объект. То есть копируется адрес ссылки и
передается в параметр.
0
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
18.08.2013, 00:16
как думаешь, что напечатается в консоли?
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class Test {
    public static void main(String[] args)  {   
        String s = "huh?";
        chuckNorris(s);
        System.out.println(s);
    }
    
    static void chuckNorris (String str)
    {
        str = "fuck yeah!";
    }
}
и не нужно мне цитировать сайтик с тестами и весьма сомнительными комментариями к вопросам из тестов
1
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 00:34
Цитата Сообщение от verylazy Посмотреть сообщение
как думаешь, что напечатается в консоли?
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class Test {
    public static void main(String[] args)  {   
        String s = "huh?";
        chuckNorris(s);
        System.out.println(s);
    }
    
    static void chuckNorris (String str)
    {
        str = "fuck yeah!";
    }
}
и не нужно мне цитировать сайтик с тестами и весьма сомнительными комментариями к вопросам из тестов
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 Two extends One{
 
    
        public static void main(String[] args)  {   
             
            TestOne one = new TestOne();
            one.d = 22;
            chuckNorris(one);
            System.out.println(one.d);
        }
        
        static void chuckNorris (TestOne one)
        {
           one.d = 111;
        }
        
        
        public static class TestOne
        {
            public int d;
        }
    
}
Добавлено через 36 секунд
Почитай побольше о String...

Добавлено через 8 минут
Цитата Сообщение от verylazy Посмотреть сообщение
и не нужно мне цитировать сайтик с тестами и весьма сомнительными комментариями к вопросам из тестов
Тут не каких тестов не надо что бы это понять...
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.08.2013, 12:54
Горячие парни я ваш спор разрешу )))

значение примитива что? это его значение (какая приятная тавтология) )))
а значение обьекта что? это его адрес - вот адрес и передаётся в метод и теперь внимание магия ! - если объект мутабельный то можно изменить его состояние внутри метода и выглядеть будет это поведение какбудто он был передан по ссылке, но если объект иммутабельный, то изменить его состояние вам не удастся как и у примитива
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 14:30
Цитата Сообщение от mutagen Посмотреть сообщение
Горячие парни я ваш спор разрешу )))

значение примитива что? это его значение (какая приятная тавтология) )))
а значение обьекта что? это его адрес - вот адрес и передаётся в метод и теперь внимание магия ! - если объект мутабельный то можно изменить его состояние внутри метода и выглядеть будет это поведение какбудто он был передан по ссылке, но если объект иммутабельный, то изменить его состояние вам не удастся как и у примитива
Мы тут говорили об передаче объекта в параметр , а не о том "можно его изменять или нет".
Как я понял из ссылки verylazy , передается не ссылка на объект , а ССЫЛКА НА УКАЗАТЕЛЬ объекта. А в этом указателе уже содержится ссылка на объект.

Добавлено через 2 минуты
То есть копируется указатель а не ссылка.
0
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
18.08.2013, 14:30
в той ссылке на сайт оракла английским по белому написано, что передается by value (по значению, точка!)
а дальше уже идет объяснение как это так получается

я знаю что by value это значит что передается адрес объекта, но человек просто прицепился к словам оппонента в этом топике выше и я решил слегка потроллить
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 14:34
Цитата Сообщение от verylazy Посмотреть сообщение
by value
"по значению", by reference == "по ссылке"
0
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
18.08.2013, 14:36
Цитата Сообщение от Care Посмотреть сообщение
"по значению", by reference == "по ссылке"
тебе уже вообще нечего сказать, да, к чему это было? ты перечишь Хорстаму и офф докам на сайте Оракла, но тем не менее продолжаешь талдычить одно и тоже
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 18:10
Цитата Сообщение от verylazy Посмотреть сообщение
тебе уже вообще нечего сказать, да, к чему это было? ты перечишь Хорстаму и офф докам на сайте Оракла, но тем не менее продолжаешь талдычить одно и тоже
Ок ! Передавай объекты по значению ведь там так написанно. Объекты по значению могут передаваться только так:

Object obj = new Obejct();
Object o = obj.copy();

Передавай так и будет тебе счастье передачи "by value".

Добавлено через 1 минуту
Цитата Сообщение от verylazy Посмотреть сообщение
тебе уже вообще нечего сказать, да, к чему это было? ты перечишь Хорстаму и офф докам на сайте Оракла, но тем не менее продолжаешь талдычить одно и тоже
Я тебе предоставил пример который доказывает обратно, а именно что объекты передаются по ссылке.
Предоставь мне пример что это не так.

Добавлено через 3 часа 26 минут
Вот кому интересно нашел в нете вот такое обсуждение:
http://www.quizful.net/intervi... ence-value
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.08.2013, 18:59
Цитата Сообщение от Care Посмотреть сообщение
Вот кому интересно нашел в нете вот такое обсуждение:
http://www.quizful.net/intervi... ence-value
если вы глянете в каменты, то там автору популярно объяснили что он неправ )
0
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
18.08.2013, 19:10
Цитата Сообщение от mutagen Посмотреть сообщение
если вы глянете в каменты, то там автору популярно объяснили что он неправ )
Наверно я слепой... можете сюда скопипастить ? ото не нахожу...
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
18.08.2013, 19:51
http://www.quizful.net/intervi... 3803711684
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.08.2013, 19:51
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Переходник 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