<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: ობიექტების შედარება (Java)</title>
	<atom:link href="http://samurai.ge/2009/01/05/comparing-objects-in-java/feed/" rel="self" type="application/rss+xml" />
	<link>http://samurai.ge/2009/01/05/comparing-objects-in-java/</link>
	<description>Software development &#38; design</description>
	<lastBuildDate>Thu, 12 Apr 2012 19:48:40 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: dato</title>
		<link>http://samurai.ge/2009/01/05/comparing-objects-in-java/#comment-1583</link>
		<dc:creator>dato</dc:creator>
		<pubDate>Thu, 21 May 2009 19:47:32 +0000</pubDate>
		<guid isPermaLink="false">http://samurai.ge/?p=40#comment-1583</guid>
		<description>daadebagireT bolo bolo da naxavT ,eg yvelaze kai gzaaa</description>
		<content:encoded><![CDATA[<p>daadebagireT bolo bolo da naxavT ,eg yvelaze kai gzaaa</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ANA</title>
		<link>http://samurai.ge/2009/01/05/comparing-objects-in-java/#comment-51</link>
		<dc:creator>ANA</dc:creator>
		<pubDate>Thu, 26 Feb 2009 07:05:28 +0000</pubDate>
		<guid isPermaLink="false">http://samurai.ge/?p=40#comment-51</guid>
		<description>vaime dedaaaaaa</description>
		<content:encoded><![CDATA[<p>vaime dedaaaaaa</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Samurai Girl</title>
		<link>http://samurai.ge/2009/01/05/comparing-objects-in-java/#comment-22</link>
		<dc:creator>Samurai Girl</dc:creator>
		<pubDate>Sun, 18 Jan 2009 19:29:25 +0000</pubDate>
		<guid isPermaLink="false">http://samurai.ge/?p=40#comment-22</guid>
		<description>@rachvela

არ მახსენდება სხვა პული. შეიძლება არც ვიცი მეტი. თუ რამე შემხვდა კიდევ, დავწერ.. ან გეტყვი.. :D</description>
		<content:encoded><![CDATA[<p>@rachvela</p>
<p>არ მახსენდება სხვა პული. შეიძლება არც ვიცი მეტი. თუ რამე შემხვდა კიდევ, დავწერ.. ან გეტყვი.. <img src='http://samurai.ge/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rachvela</title>
		<link>http://samurai.ge/2009/01/05/comparing-objects-in-java/#comment-21</link>
		<dc:creator>rachvela</dc:creator>
		<pubDate>Sat, 17 Jan 2009 19:17:43 +0000</pubDate>
		<guid isPermaLink="false">http://samurai.ge/?p=40#comment-21</guid>
		<description>მდაააააა
ვრაფერების პულის არსებობა, რატომღაც არ ვიცოდი :(
მხოლოდ სტრინგებზე მეგონა რომ ესე იყო.
კიდევ რაიმე ობიექტებისთვის ხომ არ არის პული?</description>
		<content:encoded><![CDATA[<p>მდაააააა<br />
ვრაფერების პულის არსებობა, რატომღაც არ ვიცოდი <img src='http://samurai.ge/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /><br />
მხოლოდ სტრინგებზე მეგონა რომ ესე იყო.<br />
კიდევ რაიმე ობიექტებისთვის ხომ არ არის პული?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Samurai Girl</title>
		<link>http://samurai.ge/2009/01/05/comparing-objects-in-java/#comment-9</link>
		<dc:creator>Samurai Girl</dc:creator>
		<pubDate>Tue, 06 Jan 2009 17:30:30 +0000</pubDate>
		<guid isPermaLink="false">http://samurai.ge/?p=40#comment-9</guid>
		<description>@Xray

:)
ხომ. ეგ არის :)

კიდევ უფრო დაწვრილებით რომ ავხსნათ:
ზოგადად ორი ობიექტის შედარების დროს == ოპერატორით ედარება მხოლოდ ამ ობიექტების reference-ები. ოპერაციის შედეგი არის ’ჭეშმარიტი’ მაშინ, როდესაც ორივე reference-ი ერთსა და იმავე ობიექტზე მიუთითებს.

გამოდის რომ
Integer i1 = 1000;
Integer i2 = 1000;
ამ შემთხვევაში საქმე გვაქვს ორ განსხვავებულ ობიექტთთან, მიუხედავად იმისა, რომ მათი მნიშვნელობები ერთმანეთის ტოლია.
თითოეულისთვის ხდება ’1000’ მნიშველობის boxing-ი და მის შესანახად იქმნება ახალი Integer ობიექტი.

თუმცა ეფექტურობის გაზრდის მიზნით (იმისთვის, რომ ყოველი ახალი რიცხვის boxing-ის დროს ახალი ობიექტები არ შეიქმნას) არსებობს wrapper-ების პული. თუ პულში უკვე არსებობს იგივე მნიშვნელობის მქონე wrapper ობიექტი, მაშინ გვიბრუნდება უკვე არსებული ობიექტი. 
როგორც Xray-მ აღნიშნა, ავტობოქსინგის დროს გამოიყენება valueOf მეთოდი, ხოლო კონსტრუქტორი მხოლოდ მაშინ, თუ პულში ასეთი მნიშვნელობის ინსტანსი არ გვაქვს.

რატომ ’10’-ის შემთხვევაში და არა ’1000’-ის შემთხვევაში?
ხდება მხოლოდ შემდეგი ობიექტების მნიშვნელობების კეშირება:
Boolean
Byte
Character   \u0000-დან \u007f-ის ჩათვლით
Short და Integer   -128-დან 127-ის ჩათვლით

10 ხვდება ამ ინტერვალში, ხოლო 1000 არა. ამიტომ მისთვის მაინც ახალი ობიექტი იქმნება.</description>
		<content:encoded><![CDATA[<p>@Xray</p>
<p> <img src='http://samurai.ge/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
ხომ. ეგ არის <img src='http://samurai.ge/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>კიდევ უფრო დაწვრილებით რომ ავხსნათ:<br />
ზოგადად ორი ობიექტის შედარების დროს == ოპერატორით ედარება მხოლოდ ამ ობიექტების reference-ები. ოპერაციის შედეგი არის ’ჭეშმარიტი’ მაშინ, როდესაც ორივე reference-ი ერთსა და იმავე ობიექტზე მიუთითებს.</p>
<p>გამოდის რომ<br />
Integer i1 = 1000;<br />
Integer i2 = 1000;<br />
ამ შემთხვევაში საქმე გვაქვს ორ განსხვავებულ ობიექტთთან, მიუხედავად იმისა, რომ მათი მნიშვნელობები ერთმანეთის ტოლია.<br />
თითოეულისთვის ხდება ’1000’ მნიშველობის boxing-ი და მის შესანახად იქმნება ახალი Integer ობიექტი.</p>
<p>თუმცა ეფექტურობის გაზრდის მიზნით (იმისთვის, რომ ყოველი ახალი რიცხვის boxing-ის დროს ახალი ობიექტები არ შეიქმნას) არსებობს wrapper-ების პული. თუ პულში უკვე არსებობს იგივე მნიშვნელობის მქონე wrapper ობიექტი, მაშინ გვიბრუნდება უკვე არსებული ობიექტი.<br />
როგორც Xray-მ აღნიშნა, ავტობოქსინგის დროს გამოიყენება valueOf მეთოდი, ხოლო კონსტრუქტორი მხოლოდ მაშინ, თუ პულში ასეთი მნიშვნელობის ინსტანსი არ გვაქვს.</p>
<p>რატომ ’10’-ის შემთხვევაში და არა ’1000’-ის შემთხვევაში?<br />
ხდება მხოლოდ შემდეგი ობიექტების მნიშვნელობების კეშირება:<br />
Boolean<br />
Byte<br />
Character   \u0000-დან \u007f-ის ჩათვლით<br />
Short და Integer   -128-დან 127-ის ჩათვლით</p>
<p>10 ხვდება ამ ინტერვალში, ხოლო 1000 არა. ამიტომ მისთვის მაინც ახალი ობიექტი იქმნება.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xray</title>
		<link>http://samurai.ge/2009/01/05/comparing-objects-in-java/#comment-8</link>
		<dc:creator>Xray</dc:creator>
		<pubDate>Tue, 06 Jan 2009 13:47:22 +0000</pubDate>
		<guid isPermaLink="false">http://samurai.ge/?p=40#comment-8</guid>
		<description>საინტერესო პოსტია. 

ძაღლის თავი Integer.valueOf()-შია დამარხული.
AutoBoxing–ის დროს გამოიძახება Integer.valueOf() და არა კონსტრუქტორი.
Integer.valueOf() კიდე აქეშირებს 1 ბაიტში მოქცეულ მნიშვნელობებს

public static Integer valueOf(int i)  {
	
	final int offset = 128;
	if (i &gt;= -128 &amp;&amp; i &lt;= 127) { // must cache 
	    return IntegerCache.cache[i + offset];
	}

       return new Integer(i);
}</description>
		<content:encoded><![CDATA[<p>საინტერესო პოსტია. </p>
<p>ძაღლის თავი Integer.valueOf()-შია დამარხული.<br />
AutoBoxing–ის დროს გამოიძახება Integer.valueOf() და არა კონსტრუქტორი.<br />
Integer.valueOf() კიდე აქეშირებს 1 ბაიტში მოქცეულ მნიშვნელობებს</p>
<p>public static Integer valueOf(int i)  {</p>
<p>	final int offset = 128;<br />
	if (i &gt;= -128 &amp;&amp; i &lt;= 127) { // must cache<br />
	    return IntegerCache.cache[i + offset];<br />
	}</p>
<p>       return new Integer(i);<br />
}</p>
]]></content:encoded>
	</item>
</channel>
</rss>

