Жава - предаване на параметри :)

9 отговора 0 прегледа
#1

Жава - предаване на параметри :)

Айде да видим кой без да гледа в нета знае как се предават параметрите в жава.
Бъдете честни, никои няма да ви съди.

Отговор
в отговор на sonic86 #2

Re: Жава - предаване на параметри :)

Примитивите се предават by value, останалите by reference.
След проверка в Гугле чета, че не било така и се цитира следния пример:

Object x = null;
giveMeAString (x);
System.out.println (x);
[...]

void giveMeAString (Object y)
{
y = "This is a string";
}

х е null разбира се и затова не се предавало "by reference", а всъщност се предава "a reference to an object".
Демек не се предава указател към блок в паметта, а указател към обект.
Тъй като в Jаva няма указатели към блокове в паметта, това за мен си е от ясно по-ясно, така че си признавам и моя отговор. Разбира се за C или C++ програмистите моето твърдение вероятно е анатема
.

Отговор
в отговор на sonic86 #3

Re: Жава - предаване на параметри :)

Всичко е by value. Когато предаваш референции, реално се предават копия на референциите. Тънкото е, че дори и с копието на референцията вътре в самия метод можеш да променяш state на обект, който се сочи от нея. Промяната върху референцията не рефлектира върху оригиналната такава.

Отговор
в отговор на _edin_ #4

Re: Жава - предаване на параметри :)

Правилно, всично е предаване по стойност, като за обектите се предава стойността на референс обекта. Демек ако подадеш обект то се подава адреса му в паметта, НЕ се подава обекта, не се подава референс към обекта, а стойността на референса. Което напрактика е адреса в паметта. Това е така защото ако се подаде някакъв огромен обект, то той трябва да се клонира, защото подаването по стойност е това.

Отговор
в отговор на sonic86 #5

Re: Жава - предаване на параметри :)

Пич, ти си болен!

Отговор
в отговор на ГHУCEH®ГHOM #6

Re: Жава - предаване на параметри :)

Спокойно, пия хапчета гномчо

Отговор
в отговор на ГHУCEH®ГHOM #7

Re: Жава - предаване на параметри :)

Това което казва соник е вярно, Гном. Разликата между предаване Pass by value i Pass by Reference е следната Във вторият случай, се предава копия на пойнтера към адресното пространство, наблягам на думата копие, докато в първият случай се дава копие на стойността
Типичен пример е когато имаме римоутинг, не се предава самия обект а негово копие, така когато промениш обекта от клиентската част, сървърният обект е непромене
Тук идва и концепцията за Мютабъл и Имютабъл обекти , както и клонирането, които са тясно свързани един с друг

Земи почети малко преди да караш хората да си пият хапчетата

Отговор
в отговор на bion #8

Re: Жава - предаване на параметри :)

защо софтуера, писан на жава, за нищо не става?

Отговор
в отговор на bion #9

Re: Жава - предаване на параметри :)

А аз не твърдя нищо относно това, дали казаното е вярно или не. Моето твърдение е съвсем конкретно - щом пича се интересува от подобни тривиални загадки и да ги разбулва по такъв смотан начин, то очевидно е болен. Предполагам дори, че той ме разбра правилно, доколкото демонстрира чувство за хумор.

Отговор
в отговор на ГHУCEH®ГHOM #10

Re: Жава - предаване на параметри :)

Не съм болен, просто съм от програмистите, които ги интересува какво става отзад и как е реаализирано, а не "а бе нали работи". Гном. Когато знаеш тези неща, знаеш кога и как да изолзваш едното и кога другото. Предполагам че гнома е болен кодер, който не е осъзнал че нищо не знае.

Отговор