Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Вниз

Передать значение по ссылке в функцию в jave   Найти похожие ветки 

 
ERGef   (2007-10-02 23:06) [0]

Как это сделать? В delphi мы дописываем var, в с++ - &. А в jave как?


 
ferr ©   (2007-10-02 23:10) [1]

Этого сделать нельзя.


 
celades ©   (2007-10-02 23:10) [2]

Объекты там и так ссылки


 
tesseract ©   (2007-10-02 23:13) [3]

Сегодня конкурс на самый тупой вопрос ?  в PHP или Perl ничего по ссылке передать не нужно ? Откуда они в виртуальной машине ?


 
sdubaruhnul   (2007-10-02 23:18) [4]

Почитай про boxing / unboxing.


 
tesseract ©   (2007-10-02 23:22) [5]


> Почитай про boxing / unboxing.


Призрак memlink ? :-)


 
Юрий Зотов ©   (2007-10-02 23:29) [6]

> ERGef   (02.10.07 23:06)  

> А в jave как?

Передать объект. Например, не int, а Integer.

При этом, конечно, все равно идет передача копии, но передается копия ссылки на объект, а не копия объекта. Что позволяет менять его "начинку".


 
tesseract ©   (2007-10-02 23:39) [7]


>  но передается копия ссылки на объект, а не копия объекта.
>  Что позволяет менять его "начинку".


95 % программистов, не понимает указателей  (С) не помню кто.


 
ERGef   (2007-10-02 23:43) [8]


> Передать объект. Например, не int, а Integer.


Значит если передать массив, то "начинку" можно будет изменить. Ведь массив это объект. так?


 
ferr ©   (2007-10-02 23:48) [9]

> Сегодня конкурс на самый тупой вопрос ?  в PHP или Perl
> ничего по ссылке передать не нужно ? Откуда они в виртуальной
> машине ?

В c# это делается ключевыми словами ref, in, out. По-вашему там нет виртуальной машины?


 
ferr ©   (2007-10-02 23:49) [10]

> Значит если передать массив, то "начинку" можно будет изменить.
> Ведь массив это объект. так?

Да.


 
Плохиш ©   (2007-10-03 01:48) [11]


> ERGef   (02.10.07 23:06)  
> Как это сделать? В delphi мы дописываем var, в с++ - &.
> А в jave как?

Да, не царское это дело описание языка читать...

Это, думается, в первой же главе любой книжки описывается


 
tesseract ©   (2007-10-03 10:10) [12]


> В c# это делается ключевыми словами ref, in, out. По-вашему
> там нет виртуальной машины?


По моему там есть неуправляемый код + прекомпиляция. С# к тому же может и нативный код делать.


 
wicked ©   (2007-10-03 12:45) [13]

> tesseract ©   (02.10.07 23:13) [3]

> Сегодня конкурс на самый тупой вопрос ?  в PHP или Perl
> ничего по ссылке передать не нужно ? Откуда они в виртуальной
> машине ?

садись, два
и в перле, и в пхп можно передавать значения по ссылке


 
tesseract ©   (2007-10-03 13:00) [14]


> садись, дваи в перле, и в пхп можно передавать значения
> по ссылке


Ну не по "ссылке", а саму переменую для изменения. У меня диалектика другая.


 
wicked ©   (2007-10-03 13:04) [15]

> tesseract ©   (03.10.07 13:00) [14]

> > садись, дваи в перле, и в пхп можно передавать значения
> > по ссылке
> Ну не по "ссылке", а саму переменую для изменения. У меня
> диалектика другая.

можно, именно для изменения
специально только что проверил

так что это не диалектика.....


 
Игорь Шевченко ©   (2007-10-03 13:06) [16]


> 95 % программистов, не понимает указателей  (С) не помню
> кто.


Спольски


 
tesseract ©   (2007-10-03 13:13) [17]


> можно, именно для измененияспециально только что проверил


Получил блок памяти ?


 
wicked ©   (2007-10-03 13:40) [18]

> tesseract ©   (03.10.07 13:13) [17]

> > можно, именно для измененияспециально только что проверил
> Получил блок памяти ?

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


 
Alkid ©   (2007-10-03 13:59) [19]


> По моему там есть неуправляемый код + прекомпиляция. С#
> к тому же может и нативный код делать.

C# не умеет делать НАТИВНЫЙ код. Он умеет делать UNSAFE код, а это очень разные вещи.

C# предусматривает
а) Возможность передавать по ссылке (ключ. слова ref, out) значения.
б) В Unsafe коде работать с указателями. Правда нельзя там брать указатель на объект.

В Java нет прямого способа передать value-тип (встроеныне примитивные типы) по ссылке в функцию. Можно только через объект-обёртку. AFAIK boxing-unboxing в Java реализуется только путём упаковывания в обёртку "ручками" и распаковывания обратно. В C# это делается автоматически.


 
tesseract ©   (2007-10-03 14:06) [20]


> мне нужно менять значение переменной, переданной в функцию
> и в указанных языках для этого используется передача по
> ссылке


Ты путаешь передачу ПЕРЕМЕННОЙ с передачей ссылки. По ссылке/указателю можно хоть слона передать.


 
tesseract ©   (2007-10-03 14:11) [21]


> C# не умеет делать НАТИВНЫЙ код. Он умеет делать UNSAFE
> код, а это очень разные вещи.


А ты чей C# имеешь в виду ?


 
Alkid ©   (2007-10-03 14:15) [22]


> Ты путаешь передачу ПЕРЕМЕННОЙ с передачей ссылки. По ссылке/указателю
> можно хоть слона передать.

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

В свете изложенного, прошу пояснить, что есть "передача переменной", если это не есть пункт 1 вышеизложенного.


 
Alkid ©   (2007-10-03 14:18) [23]


> А ты чей C# имеешь в виду ?

ECMA-шный :)


 
tesseract ©   (2007-10-03 14:24) [24]


> что есть "передача переменной", если это не есть пункт 1
> вышеизложенного.


const и var я имею в виду.
Если ты приравниваешь переменную к ссылке - ну пусть так и будет. Ссылка она на определённую область памяти. Например если элемент массива передан по ссылке - я могу достучаться и до других его элементов просто переместиившись взад/вперёд по памяти (адрес есть), а если я передам его как переменную -  надо будет предварительно выяснить её адрес - PHP такое позволит?.


 
Alkid ©   (2007-10-03 14:27) [25]


> const и var я имею в виду.
> Если ты приравниваешь переменную к ссылке - ну пусть так
> и будет. Ссылка она на определённую область памяти. Например
> если элемент массива передан по ссылке - я могу достучаться
> и до других его элементов просто переместиившись взад/вперёд
> по памяти (адрес есть), а если я передам его как переменную
> -  надо будет предварительно выяснить её адрес - PHP такое
> позволит?.

Не могу сказать, PHP в упор не знаю :) Я говорил про C++/C#/Dephi/Java.

Переменную к ссылке я не приравниваю. Ссылка - это адрес значения, переменная - это значение.


 
vpbar ©   (2007-10-03 14:33) [26]

А я вообще обычно различаю термины ссылка и указатель. Указатель - это нечто содержащее адрес памяти. Для указателя допустимы сложение и вычтаие. Считывание и запись байтов.
А ссылка - это объект, указывающий на определенные данные, но не хранящий их. Для ссылки допустима операция разыменования.

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


 
Alkid ©   (2007-10-03 14:40) [27]


> А я вообще обычно различаю термины ссылка и указатель. Указатель
> - это нечто содержащее адрес памяти. Для указателя допустимы
> сложение и вычтаие. Считывание и запись байтов.
> А ссылка - это объект, указывающий на определенные данные,
>  но не хранящий их. Для ссылки допустима операция разыменования.
>
> ЗЫ. Так вот ,насколько я помню, указателей в Java нет. Ибо
> тогда работа вртуальной машины очень усложняется.

В джаве понятие ссылки - это не то, что понятие ссылки в C++, например.
В джаве (и в .NET) понятие ссылки это прямое обобщение понятия указателя, из которого выбрасывается арифметика и то, что он содержит адрес. Ссылка указывает на объект, а как - это деталь реализации. При это ссылку можно менять, т.е. заставлять её указывать на другие данные.

При этом, понятие ссылки в джаве/.NETе очень слабо относится к теме топика, ибо речь идёт только о передаче параметров в функции, где понятие "по ссылке" может не относиться к понятию "ссылка", применяемому в дргих частях программы. Т.е. ссылки вида:
var MyReference : TObject
и вида:
procedure MyProc(var X:integer)
Это немного разные по своей природе ссылки.


 
tesseract ©   (2007-10-03 14:56) [28]


> В джаве понятие ссылки - это не то, что понятие ссылки в
> C++, например.


Указатель не имеет счётчика ссылок, "ссылка" имеет. Вот для меня разница.

Это я в [14] уже говорил.


> В джаве понятие ссылки - это не то, что понятие ссылки в
> C++, например.


Ну? у нас тут вроде DelphiMaster ?


 
euru ©   (2007-10-03 14:56) [29]


> tesseract ©   (03.10.07 14:24) [24]
> const и var я имею в виду.
В Java аналогом const является final.


 
euru ©   (2007-10-03 15:00) [30]


> tesseract ©   (03.10.07 14:56) [28]
> Указатель не имеет счётчика ссылок, "ссылка" имеет.
С какого перепуга?


 
tesseract ©   (2007-10-03 15:01) [31]


> С какого перепуга?


Что именно ?


 
Alkid ©   (2007-10-03 15:01) [32]


> Указатель не имеет счётчика ссылок, "ссылка" имеет. Вот
> для меня разница.

Простите, а где ссылка имеет счётчик ссылок? :)

Я не знаю, как там в PHP, но в Delphi, .NET и Java не применяются механизмы подсчёта ссылок в ссылках. В дельфи они применяются только в случае ссылок на интерфейсы, да и то, счётсик ссылок распологается внутри COM-объектов, а не в ссылках.


 
tesseract ©   (2007-10-03 15:03) [33]


> Простите, а где ссылка имеет счётчик ссылок? :)


Гм, лан перегруз, тут согласен. Пересидел как-раз с COM- объектами :-)


 
Alkid ©   (2007-10-03 15:08) [34]


> м, лан перегруз, тут согласен. Пересидел как-раз с COM-
> объектами :-)

Сочувствую. Помниццо один раз пересидел с COM-ом. Он мне уже ночами снился. Так вот, обсуждали с одногрупниками какого-то мерзкого препода, и я на полном серьёзе выдал: "а давайте все хором про него забудем и он исчезнет"!
Психушки избежал лишь чудом :)


 
vpbar ©   (2007-10-03 15:11) [35]

Alkid ©   (03.10.07 15:08) [34]
А что смешного. Если о чем-то или ком-то все забадут, то он действительно исчезнет.


 
tesseract ©   (2007-10-03 15:16) [36]


> Сочувствую. Помниццо один раз пересидел с COM-ом.


У меня как раз COM+1С основная кормёжка считай.  А delphi ну не всегда ведёт себя, как нужно 1С.


 
Alkid ©   (2007-10-03 16:13) [37]


> А что смешного. Если о чем-то или ком-то все забадут, то
> он действительно исчезнет.

Мсье соллипсист?


 
vpbar ©   (2007-10-03 16:28) [38]

Alkid ©   (03.10.07 16:13) [37]
солипсист=законченный субъективный идеалист ?
Тогда: местами. В смысле не совсем законченный.


 
sdubaruhnul   (2007-10-03 19:37) [39]

Щас будет второй Ruby On Rails, выпущенный в 1987 году и ставший прородителем всех дизайнеров форм.


 
tesseract ©   (2007-10-03 21:57) [40]


> Щас будет второй Ruby On Rails, выпущенный в 1987 году и
> ставший прородителем всех дизайнеров форм.


Ну да, давайте ещё Xerox Lab вспомним.



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.044 c
2-1192681670
Levitch
2007-10-18 08:27
2007.11.11
Компонент ADOQuery


2-1192915547
Falcon
2007-10-21 01:25
2007.11.11
Получить дату без года в формате текущих региональных настроек


6-1173451478
K@KTUS
2007-03-09 17:44
2007.11.11
Компоненты FastNet


6-1173157780
zap8
2007-03-06 08:09
2007.11.11
Как определить что сервер поддерживает докачку


11-1176983639
restar82
2007-04-19 15:53
2007.11.11
ошибка при компиляции





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский