Жава - предаване на параметри :)
9 отговора
0 прегледа
Жава - предаване на параметри :)
Айде да видим кой без да гледа в нета знае как се предават параметрите в жава.
Бъдете честни, никои няма да ви съди.
Бъдете честни, никои няма да ви съди.
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++ програмистите моето твърдение вероятно е анатема
.
След проверка в Гугле чета, че не било така и се цитира следния пример:
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++ програмистите моето твърдение вероятно е анатема
Re: Жава - предаване на параметри :)
Всичко е by value. Когато предаваш референции, реално се предават копия на референциите. Тънкото е, че дори и с копието на референцията вътре в самия метод можеш да променяш state на обект, който се сочи от нея. Промяната върху референцията не рефлектира върху оригиналната такава.
Re: Жава - предаване на параметри :)
Правилно, всично е предаване по стойност, като за обектите се предава стойността на референс обекта. Демек ако подадеш обект то се подава адреса му в паметта, НЕ се подава обекта, не се подава референс към обекта, а стойността на референса. Което напрактика е адреса в паметта. Това е така защото ако се подаде някакъв огромен обект, то той трябва да се клонира, защото подаването по стойност е това.
Re: Жава - предаване на параметри :)
Това което казва соник е вярно, Гном. Разликата между предаване Pass by value i Pass by Reference е следната Във вторият случай, се предава копия на пойнтера към адресното пространство, наблягам на думата копие, докато в първият случай се дава копие на стойността
Типичен пример е когато имаме римоутинг, не се предава самия обект а негово копие, така когато промениш обекта от клиентската част, сървърният обект е непромене
Тук идва и концепцията за Мютабъл и Имютабъл обекти , както и клонирането, които са тясно свързани един с друг
Земи почети малко преди да караш хората да си пият хапчетата
Типичен пример е когато имаме римоутинг, не се предава самия обект а негово копие, така когато промениш обекта от клиентската част, сървърният обект е непромене
Тук идва и концепцията за Мютабъл и Имютабъл обекти , както и клонирането, които са тясно свързани един с друг
Земи почети малко преди да караш хората да си пият хапчетата
Re: Жава - предаване на параметри :)
защо софтуера, писан на жава, за нищо не става?
Re: Жава - предаване на параметри :)
А аз не твърдя нищо относно това, дали казаното е вярно или не. Моето твърдение е съвсем конкретно - щом пича се интересува от подобни тривиални загадки и да ги разбулва по такъв смотан начин, то очевидно е болен. Предполагам дори, че той ме разбра правилно, доколкото демонстрира чувство за хумор.
Re: Жава - предаване на параметри :)
Не съм болен, просто съм от програмистите, които ги интересува какво става отзад и как е реаализирано, а не "а бе нали работи". Гном. Когато знаеш тези неща, знаеш кога и как да изолзваш едното и кога другото. Предполагам че гнома е болен кодер, който не е осъзнал че нищо не знае.