Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 26.10.2017
Сообщений: 10

Почему переменная изменяется после выполнения метода

15.11.2017, 21:25. Показов 7225. Ответов 115
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот код:
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
public class Main {
public static void main(String []args){
    int v = 4;
    System.out.println("v= "+v);
    qw(v);
    System.out.println("v="+v);
    int tab[] = {10};
    System.out.println("tab[0]: "+tab[0]);
    ex(tab);
    System.out.println("tab[0]: "+tab[0]);
}
static void qw(int s){
    System.out.println("s= "+s);
    s++;
    System.out.println("s= "+s);
}
static void ex(int[] wrt){
    System.out.println("wrt[0]: "+wrt[0]);
    wrt[0] += 5;
    System.out.println("wrt[0]: "+wrt[0]);
}   
 
 
}
Почему переменная tab[0] изменяеться после выполнения метода , а int v - нет. Интересует именно данный случай.
Всем добра
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2017, 21:25
Ответы с готовыми решениями:

Почему глобальная переменная не изменяется из функции?
Здравствуйте! Делаю такую программу. Сначала создаю анимацию - увеличение размеров контейнера. Затем, когда он становится нужного...

Какое значение примет переменная после выполнения фрагмента алгоритма, если переменная а имела значение 'ИНФОРМАТИКА'
Имеется фрагмент алгоритма, записанный на алгоритмическом языке: m := 10 b := Извлечь(а, m) нц для k от 4 до 5 с := Извлечь(а,...

После выполнения ajax-запроса переменная теряется
Возможно я чего-либо не смыслю в тонкостях работы JS. У меня есть такая функция: const DatabaseHandler = { //... request:...

115
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
17.11.2017, 16:15
Студворк — интернет-сервис помощи студентам
Kukstyler, давайте так.
by value - это когда я передаю переменную в метод и чтобы с ней не делал это никак не отразится вне метода.
by reference - это когда я передаю переменную в метод и проводя с ней любые дозволенные операции это видно вне метода.

Возражения есть?

Добавлено через 1 минуту
"Передача ссылки" и "передача по ссылке" - это как бы разные понятия.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
17.11.2017, 16:24
Цитата Сообщение от Kukstyler Посмотреть сообщение
In Java a variable doesn't store an object, it stores a reference to an object
ага, а в метод можно передавать ссылку на объект, которая хранится в переменной, либо ссылку на переменную, которая хранит ссылку на объект. И вот одно из by-val, а другое - by-ref
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
17.11.2017, 16:34
Цитата Сообщение от JIeIIIa Посмотреть сообщение
by value - это когда я передаю переменную в метод и чтобы с ней не делал это никак не отразится вне метода.
by reference - это когда я передаю переменную в метод и проводя с ней любые дозволенные операции это видно вне метода.
JIeIIIa, Habemus Papam!!!

Цитата Сообщение от JIeIIIa Посмотреть сообщение
Возражения есть?
Возражений нет, Ваша Честь!

Цитата Сообщение от JIeIIIa Посмотреть сообщение
"Передача ссылки" и "передача по ссылке" - это как бы разные понятия.
Абсолютен точно! Это про передачу. О чём я и говорил. Но здесь речь о термине, используемом при обращении к переменной/объекту в исходном коде по средствам его адреса а не имени. В Java, мы именуем только ссылки на объекты, а не сами объекты. По-этому обращение к ним происходит по ихним reference-ам.
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
17.11.2017, 16:37
Цитата Сообщение от Kukstyler Посмотреть сообщение
В Java, мы именуем только ссылки на объекты, а не сами объекты
В метод передается ссылка. Значение ссылки поменять нельзя. Такой метод называется by-val.
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
17.11.2017, 16:43
xoraxax, упорный ты однако. Блин, хорошее качество, но в данном случае передоз имхо. Я тут строчу одно и тоже, разными способами. Вон с JIeIIIa вроде как пришли к чему-то. А ты дальше своё...

Добавлено через 2 минуты
Господа, сдаюсь. по кругу ходим! Хрендесят постов просто с утверждениями "это называется by value"! Привожу цитаты, примеры, объясняю как это происходит "под капотом". Пофиг Вам, что тут сделаешь.

Ну и ладушки. Всем хорошего дня.
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
17.11.2017, 16:44
Kukstyler, Так мы с xoraxax вроде одно и тоже пытаемся объяснить Вам.
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
17.11.2017, 16:52
JIeIIIa, вы ребят Java-исты. В Java это всё скрыто, автоматизировано, и синтаксис урезан для таких вещей. Поработав с нативными бинарниками, посмотрев "кишки", вам бы может стало ясно, о чём я говорю.
Блин, столько постов, до сих пор не определились, о технической части мы говорим или о терминологии. Ни один из вас не ответил на этот вопрос. Дальше гнёте своё.
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
17.11.2017, 16:56
Kukstyler, ок. Давайте без цитат. Своими словами объясните что такое by-val и by-ref не привязываясь к какому-то языку.
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
17.11.2017, 17:52
Цитата Сообщение от JIeIIIa Посмотреть сообщение
не привязываясь к какому-то языку
Только лишь к английскому Вот она где истина!

0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
17.11.2017, 17:54
del
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
17.11.2017, 17:55
Kukstyler, языку программирования
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
17.11.2017, 19:11
Цитата Сообщение от Kukstyler Посмотреть сообщение
В твоём коде С++, ты выводишь адрес переменной, и адрес указателя, указывающего на эту переменную. Разницу чего я должен почуять?
Между первым и вторым кодом.

Добавлено через 3 минуты
Цитата Сообщение от Kukstyler Посмотреть сообщение
вы ребят Java-исты. В Java это всё скрыто, автоматизировано, и синтаксис урезан для таких вещей. Поработав с нативными бинарниками, посмотрев "кишки", вам бы может стало ясно, о чём я говорю.
Говорит человек, не понявший код на Паскале и, видимо, не понявший пример на C++.

Цитата Сообщение от Kukstyler Посмотреть сообщение
Блин, столько постов, до сих пор не определились, о технической части мы говорим или о терминологии. Ни один из вас не ответил на этот вопрос. Дальше гнёте своё.
Мы говорим о семантике языка, а не о «кишках». Ты этого, судя по всему, до сих пор не понял.
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
17.11.2017, 19:11
JIeIIIa, да знаю я! Прикололся видно же.
Цитата Сообщение от JIeIIIa Посмотреть сообщение
Своими словами объясните что такое by-val и by-ref
by value - передача содержимого переменной.
by reference - передача ссылки/указателя переменной.
reference - ссылка/указатель.

Если reference является ссылкой, соответственно и обращение к объекту по ссылке, является обращением к нему по его reference-у. Соответственно, в Java, работа с объектами происходит по их reference (by object's reference).

не повторяйте мне, пожалуйста, что ссылку затереть нельзя, и она передаётся по значению, а это называет by value. Я говорю объекты (в случае с Java).
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
17.11.2017, 19:18
Цитата Сообщение от Kukstyler Посмотреть сообщение
by reference - передача ссылки/указателя переменной.
Тогда понятно откуда ноги растут.

Kukstyler, повторю Вам еще раз: "передача ссылки" и "передача по ссылке" - это разные понятия.
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
17.11.2017, 19:28
korvin_, то что тебя ни в чём не убедить я давно успел заметить. Сейчас опять, игноришь все мои ворпсы, а вместо аргументации выдаёшь афоризмы, типа ставишь под сомнение мой профессионализм, исходя из того, что я плохо знаю Паскаль (который я затронул пару раз лет этак 10 назад а потом нигде его не встречал)...
С++ я изучал, но сказать, что знаю - не могу, т.к. никогда на нём не работал. И мне совсем не в облом сказать, что я чего-то не знаю (или то что я знаю, нельзя назвать реально знаниями).

За то, повотярю, если ты перепрыгнул соответствующий пост, что работаю с разными языками, компиляторами в нативные бинарники, и дЕкомпиляторами тоже. Так что, давай не будем тягаться. Я уже сказал, отношусь к тебе с уважением, как к знающему в данном разделе человеку. Но выдавать себя за всезнайку тоже не надо, тут все не дураки.

Цитата Сообщение от korvin_ Посмотреть сообщение
Мы говорим о семантике языка
https://ru.wikipedia.org/wiki/... 0%B8%D0%B5)

Цитата Сообщение от Wikipedia
Сема́нтика в программировании — дисциплина, изучающая формализации значений конструкций языков программирования посредством построения их формальных математических моделей.
Это тебе видать померещилось? При чём тут семантика языка? Речь шла о конкретном понятии/термине, в итоге дискуссия перетекла в обсуждение того, как этот термин отражается технически. Какая семантика (формализации значений конструкций языков программирования)?

Цитата Сообщение от korvin_ Посмотреть сообщение
а не о «кишках».
Делаешь вид, что не понял о чём я? Хотя, скорее всего и правда не понимаешь.

Добавлено через 1 минуту
JIeIIIa, речь НЕ О ПЕРЕДАЧЕ!!! Речь о ОБРАЩЕНИИ к объекту! АУУУ!!!!

ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту ОБРАЩЕНИИ к объекту
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
17.11.2017, 19:35
Kukstyler, несколько цитат (больше искать лень)
Цитата Сообщение от Kukstyler Посмотреть сообщение
"by value/by reference" подразумевается передача параметров
Цитата Сообщение от Kukstyler Посмотреть сообщение
Передача по ссылке и есть передача указателя
Сейчас уже ОБРАЩЕНИЕ.
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
17.11.2017, 19:40
JIeIIIa, когда я могу обратиться к одному и тому-же объекту из 2-х разных методов и по средствам 2-х разных ссылок, ЭТО КАК НАЗЫВАЕТСЯ?

Добавлено через 2 минуты
JIeIIIa, ага, то есть обратились к запылённой фразе из поста хрен знает какой давности, вырванной из контекста, а отвечать на конкретные вопросы не хотите!

Добавлено через 1 минуту
Цитата Сообщение от JIeIIIa Посмотреть сообщение
Сейчас уже ОБРАЩЕНИЕ.
Речь ВСЕГДА, повторяю и подчёркиваю, ВСЕГДА шла про обращение к объекту по его ссылке - by object's reference!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
17.11.2017, 19:47
Цитата Сообщение от Kukstyler Посмотреть сообщение
из поста хрен знает какой давности
Из постов в этой теме с первой страницы.

Добавлено через 1 минуту
Kukstyler, давайте так. Java знаете ж? Раскажите что происходит "под капотом" при передаче в метод примитивного и ссылочного типа.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
17.11.2017, 20:06
Цитата Сообщение от Kukstyler Посмотреть сообщение
Это тебе видать померещилось? При чём тут семантика языка?
Она здесь при том, что мы её тут обсуждаем.

Цитата Сообщение от Kukstyler Посмотреть сообщение
Речь шла о конкретном понятии/термине, в итоге дискуссия перетекла в обсуждение того, как этот термин отражается технически
Не перетекла. Ты сам зачем-то полез в детали реализации.

Цитата Сообщение от Kukstyler Посмотреть сообщение
Какая семантика (формализации значений конструкций языков программирования)?
Семантика конструкции «Вызов процедуры», в частности стратегия вычислений.

Call by reference can be simulated in languages that use call by value and don't exactly support call by reference, by making use of references (objects that refer to other objects), such as pointers (objects representing the memory addresses of other objects). Languages such as C and ML use this technique. It is not a separate evaluation strategy — the language calls by valuebut sometimes it is referred to as call by address (also referred to as pass by address). In ML references are type- and memory- safe.

Similar effect is achieved by call by sharing (passing an object, which can then be mutated), used in languages like Java, Python and Ruby.



Call by sharing

Call by sharing (also referred to as call by object or call by object-sharing) is an evaluation strategy first named by Barbara Liskov et al. for the language CLU in 1974.[5] It is used by languages such as Python,[6] Iota,[7] Java (for object references), Ruby, JavaScript, Scheme, OCaml, AppleScript, and many others. However, the term "call by sharing" is not in common use; the terminology is inconsistent across different sources. For example, in the Java community, they say that Java is call by value.[8] Call by sharing implies that values in the language are based on objects rather than primitive types, i.e. that all values are "boxed".
Добавлено через 11 минут
Kukstyler, вопрос на засыпку:

C++
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
#include <iostream>
 
using namespace std;
 
struct foo {
    int x;
    int* y;
    foo(int _x, int _y) : x{_x} {
        y = new int(_y);
    }
};
 
void print(int step, foo& v) {
    cout << step << ". x = " << v.x << " ; y = " << *(v.y) << endl;
}
 
void modify(int step, foo v) {
    v.x = 3;
    *(v.y) = 4;
    print(step, v);
}
 
int main() {
    foo v(1, 2);
    print(1, v);
    modify(2, v);
    print(3, v);
    return 0;
}
=>
Code
1
2
3
1. x = 1 ; y = 2
2. x = 3 ; y = 4
3. x = 1 ; y = 4
https://ideone.com/9N3en1

В этом коде v передаётся в метод modify по ссылке или по значению?
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
17.11.2017, 20:10
JIeIIIa, нет. Я уже много говорил. Ваша очередь. Ответьте на вопрос:
Цитата Сообщение от Kukstyler Посмотреть сообщение
когда я могу обратиться к одному и тому-же объекту из 2-х разных методов и по средствам 2-х разных ссылок, ЭТО КАК НАЗЫВАЕТСЯ?
Почему не подчеркнул эти слова???
korvin_,
Цитата Сообщение от korvin_ Посмотреть сообщение
by making use of references
Цитата Сообщение от korvin_ Посмотреть сообщение
by making use of references (objects that refer to other objects), such as pointers (objects representing the memory addresses of other objects).
Добавлено через 2 минуты
korvin_, перестань забрасывать вопросами, когда сам фактически игнорируешь мои. Конкретных ответов я попросил хрендесят постов назад. Увиливаете все. Конкретных ответов на мои вопросы - 0!

Талдычите одно и то же. Ответь:
Цитата Сообщение от Kukstyler Посмотреть сообщение
когда я могу обратиться к одному и тому-же объекту из 2-х разных методов и по средствам 2-х разных ссылок, ЭТО КАК НАЗЫВАЕТСЯ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.11.2017, 20:10

Почему после изменения шаблона joomla 2.5 на денвере ничего не изменяется ?
html, body, fieldset { margin: 0; padding: 0; } body { margin: 0; padding: 0; font-family: Geneva, Helvetica,...

Какое значение примет переменная S после выполнения операторов
Какое значение примет переменная S после выполнения следующих операторов: а) S:=0; I:=1; repeat S:=S+I; I:=I-1 until i&lt;=1; б)...

Пустой список после выполнения метода
Здравствуйте! Есть два метода, после выполнения первого, список, который я объявил List&lt;Video&gt; videos = new List&lt;Video&gt;()...

Какое значение примет переменная s после выполнения следующих операторов?
s=0; for (i=5; i&gt;1; i--) s=s+i;

Какое значение получит переменная Y после выполнения фрагмента программы
Дело в том что завтро Экзамен...потестам...я не знаю как их решать...кто поможет найти приблизительное решение? Какое значение получит...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru