powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / String является простым типом данных?
21 сообщений из 21, страница 1 из 1
String является простым типом данных?
    #33488173
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в Java как я понимаю есть простые типы которые передаются по значению и есть сложные типы которые передаются по ссылке.

вопрос в следующем каким типом является String

пример
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 void  workWithString ( String str ) {
    str = "new value";
    System.out.println(str);
}

String my_str;
my_str =  new  String("old_value");
System.out.println(my_str);
workWithString(my_str);
System.out.println(my_str);
Получаем:
old_value
new value
old_value

Почему?
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33488182
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/229151&pg=2#2024150
-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33488214
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fuf спасибо типа
фак читал только давно поэтому и не видел
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33488251
my_str
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vfabrв Java как я понимаю есть простые типы которые передаются по значению и есть сложные типы которые передаются по ссылке.Нет. В Java все типы передаются по значению. Осмысли это, это написано в "Философии Java", похоже, тебе уже пора ее читать. Объекты тоже передаются по значению, просто в метод копируется ссылка на объект (или String, который тоже объект) и все операции над ссылкой в методе не повлияют на значение переменных выше по стеку

Т.о.

Код: plaintext
1.
workWithString(my_str);
System.out.println(my_str);
my_str будет и дальше указывать на String("old_value")
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33488343
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы видно прочитать прочитали, да ничего путного из этой книги не вынесли ... может перечитать следует?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 void  workWithString ( String[] str ) {
    str[ 0 ] = "new value";
    System.out.println(str[ 0 ]);
}

String[] my_str = {"old_value"};
System.out.println(my_str[ 0 ]);
workWithString(my_str);
System.out.println(my_str[ 0 ]);

какой ответ получается?
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33488380
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vfabrВы видно прочитать прочитали, да ничего путного из этой книги не вынесли ... может перечитать следует?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 void  workWithString ( String[] str ) {
    str[ 0 ] = "new value";
    System.out.println(str[ 0 ]);
}

String[] my_str = {"old_value"};
System.out.println(my_str[ 0 ]);
workWithString(my_str);
System.out.println(my_str[ 0 ]);

какой ответ получается?

Массивы передаются по ссылке, поэтому метод изменит именно массив, а не строку.
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33488398
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[...]

я знаю что объекты передаются по ссылке и что простые типы передаются по значению

я хотел убедится что String является "исключением" чтоли ... вообщем надеюсь понятно

далее я задал вопрос чтобы убедится в своих умозаключениях

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

[...]
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33488458
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vfabr
вопрос в следующем каким типом является String

пример
....
почему?


1. String - ссылочный тип.

2.
Ключевая фраза: "В Java реализован только один способ передачи параметров -
по значению"

Потому что твой объект - формальный параметр str является локальным объектом
в методе workWithString. Он создается локально в методе при его вызове, в
него копируется значение из твоего "внешнего" объекта my_str (значение
ссылки на "внешний" объект- стрку "old_value"), потом ты это значение
(значение ссылки) изменяешь на созданный локально в методе объект-строку
"new value". "Внешний" же объект my_str продолжает указывать на объект -
строку "old_value". Вот и все.

3.
Сам баран. Тебе уже несколько раз тоже самое сказали. Даже я понял.
Это же надо:
vfabr
я знаю что объекты передаются по ссылке и что простые типы передаются по
значению


Еще раз читай. ВСЕ передается по значению.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33488962
Вообще все передаеться по ссылке, если я создам массив на гигабайт и буду его передовать в методы он же не будет копироваться ? :-) В JAVA вообще все не примитивные переменные суть указатели на экземпляры объектов.
и если вы делаете

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 void  workWithString ( String str ) {
    str = "new value";
    System.out.println(str);
}

String my_str;
my_str =  new  String("old_value");
System.out.println(my_str);
workWithString(my_str);
System.out.println(my_str);
то методу workWithString передаеться именно указатель( а вот он то и передаеться по значению - но следует замететь не сам объект копируеться, а только указатель на него). Потом вы этот указатель меняете командой str = "new value", но меняеться именно копия указателя, который и указывает на новый объект "new value". А старый указатель my_str как указывает на new String("old_value") так и указывает дальше :-)
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33489149
Квиринг Алексей ВикторовичВообще все передаеться по ссылке, если я создам массив на гигабайт и буду его передовать в методы он же не будет копироваться ? :-) В JAVA вообще все не примитивные переменные суть указатели на экземпляры объектов.
и если вы делаете
...
то методу workWithString передаеться именно указатель( а вот он то и передаеться по значению - но следует замететь не сам объект копируеться, а только указатель на него). Потом вы этот указатель меняете командой str = "new value", но меняеться именно копия указателя, который и указывает на новый объект "new value". А старый указатель my_str как указывает на new String("old_value") так и указывает дальше :-)

Тебе так и сказали:

автор
Объекты тоже передаются по значению, просто в метод копируется ссылка на объект (или String, который тоже объект) и все операции над ссылкой в методе не повлияют на значение переменных выше по стеку

Гигабайт копироваться не будет. Будет копироваться ссылка на него.

КОПИРУЕМЫМ ЗНАЧЕНИЕМ ДЛЯ ОБЪЕКТА ЯВЛЯЕТСЯ АДРЕС В ПАМЯТИ, ГДЕ ОН РАСПОЛОЖЕН (ссылка)
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33489491
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше всех по этому поводу высказался сам Брюс Эккель:

Брюс ЭккельХорошо объяснив точку зрения обеих сторон и сказав: «То, что вы думаете о ссылке, зависит только от вас», - я попытался уйти в сторону от этого вопроса. В конце концов, это не так уж и важно – главное здесь понять то, что передача ссылки означает возможное неожиданное изменение объекта, который привязан к ссылке.
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33489514
K1RUHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, что String (а еще Integer, Float, Double etc) как раз и попадают под исключение из «возможное изменение», т.к. эти объекты являются неизменяемыми.
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33489764
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если мы говорим о передаче объекта в метод в качестве параметра, то правильнее сказать наверное будет так: в метод передается значение ссылки, а не просто, какое то непонятное значение. Вот объясните мне, что значит значение объекта? :)
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33489811
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объект - это переменная, ее значение - это состояние объекта в конкретный момент времени
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33489886
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuriОбъект - это переменная, ее значение - это состояние объекта в конкретный момент времени

значением переменной не может быть состояние объекта. Значение переменной это число, которое предсавляет из себя либо данные (простой тип) либа адрес ОП (сложный тип).
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33489927
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗначение переменной это число, которое предсавляет из себя либо данные (простой тип) либа адрес ОП
весьма поверхностная трактовка понятия "значение переменной какого-либо типа" :)
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33490007
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сказать, что в метод предается "состояние объекта в конкретный момент времени" тоже как то не очеь :)
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33490023
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В метод передается ссылка на объект (ссылка на переменную). При этом ссылка передается по значению
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33490107
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПри этом ссылка передается по значению

где-то происходит по другому?
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33490131
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vfabr авторПри этом ссылка передается по значению

где-то происходит по другому?

аха, при передачи массива, предеается сама ссылка на этот массив.
Или в C++ например все подругому.
...
Рейтинг: 0 / 0
String является простым типом данных?
    #33490146
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vfabr авторПри этом ссылка передается по значению

где-то происходит по другому?

это было насчет фразы "в java все передается по значению"
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / String является простым типом данных?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]