<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Alex Chiri&#039;s Blog &#187; call-by-reference</title>
	<atom:link href="http://www.alexchiri.ro/index.php/tag/call-by-reference/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alexchiri.ro</link>
	<description>A new life</description>
	<lastBuildDate>Mon, 28 Nov 2011 09:00:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
	<atom:link rel="hub" href="http://superfeedr.com/hubbub" />
			<item>
		<title>Call-by-reference sau call-by-value &#238;n Java?</title>
		<link>http://www.alexchiri.ro/index.php/2009/08/23/call-by-reference-sau-call-by-value-n-java/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=call-by-reference-sau-call-by-value-n-java</link>
		<comments>http://www.alexchiri.ro/index.php/2009/08/23/call-by-reference-sau-call-by-value-n-java/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 13:41:24 +0000</pubDate>
		<dc:creator>Alex Chiri</dc:creator>
				<category><![CDATA[D&#39;ale SCJP-ului]]></category>
		<category><![CDATA[call-by-reference]]></category>
		<category><![CDATA[call-by-value]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://alexchiri.wordpress.com/?p=112</guid>
		<description><![CDATA[Cei care ați făcut C sau C++ vă aduceți aminte de așa numitele transmiteri de parametri prin valoare sau prin referință. În Java nu există ‘sau’ ci doar call-by-value, indiferent de tipul parametrului. În momentul în care apelăm o metodă cu parametrii primitivi atunci valoarea lor este transmisă parametrilor formali din metodă. În cazul unor [...]]]></description>
			<content:encoded><![CDATA[<p>Cei care ați făcut C sau C++ vă aduceți aminte de așa numitele transmiteri de parametri prin valoare sau prin referință. În Java nu există ‘sau’ ci doar call-by-value, indiferent de tipul parametrului.</p>
<p>În momentul în care apelăm o metodă cu parametrii primitivi atunci valoarea lor este transmisă parametrilor formali din metodă. În cazul unor obiecte, valoarea referință este transmisă parametrilor formali și nu obiectul cu totul. Ceea ce înseamnă că și parametrul formal, dar și parametrul inițial din apel vor referenția același obiect din memorie. Acest lucru are <strike>cel puțin</strike> două consecințe:</p>
<ol>
<li>Orice modificări făcute asupra stării obiectului referențiat de către parametrul formal, vor fi vizibile și după încheierea apelului metodei; </li>
<li>Dacă modificăm parametrul formal din metodă(deci nu starea obiectului referențiat de el), modificarea nu va fi vizibilă după ieșirea din apel. </li>
</ol>
<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;line-height:12pt;background-color:#f4f4f4;width:98.01%;font-family:&#39;direction:ltr;height:238px;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;margin:20px 0 10px;padding:4px;" id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> Test {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum2">   2:</span>     <span style="color:#0000ff;">public</span> String rezultat = <span style="color:#006080;">&quot;bun&quot;</span>;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum3">   3:</span>     <span style="color:#0000ff;">public</span> Test() {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum4">   4:</span>         System.out.println(<span style="color:#006080;">&quot;Constructor din Test&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum5">   5:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum6">   6:</span>     </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum7">   7:</span>     <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">void</span> schimba(Test tst) {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum8">   8:</span>         tst.rezultat = <span style="color:#006080;">&quot;rau&quot;</span>;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum9">   9:</span>         tst = null;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum10">  10:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum11">  11:</span>     </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum12">  12:</span>     <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">static</span> <span style="color:#0000ff;">void</span> main(String[] args) {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum13">  13:</span>         Test tst = <span style="color:#0000ff;">new</span> Test();</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum14">  14:</span>         System.out.println(tst.rezultat);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum15">  15:</span>         tst.schimba(tst);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum16">  16:</span>         System.out.println(tst.rezultat);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum17">  17:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum18">  18:</span> }</pre>
<p><!--CRLF--></div>
</div>
<p>După compilare și rulare, acest program va afișa:</p>
<p><strong>Constructor din Test<br />
    <br />bun</p>
<p>rau</strong></p>
<p>La linia 8 se modifică starea obiectului Test referențiat de parametrul formal <em>tst</em>, iar la linia 9 se asociază lui <em>tst</em> valoarea <em>null</em>. Modificarea asupra atributului <em>rezultat</em> se poate observa la ieșirea din apelul metodei schimbă.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexchiri.ro/index.php/2009/08/23/call-by-reference-sau-call-by-value-n-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

