<?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 b&#225;sico: String (I)</title>
	<atom:link href="http://albertovilches.com/java_basico_string_i/feed" rel="self" type="application/rss+xml" />
	<link>http://albertovilches.com/java_basico_string_i</link>
	<description>El pequeño Weblog de Alberto Vilches</description>
	<lastBuildDate>Fri, 12 Mar 2010 19:41:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Using correctly String objects in Java (Uso óptimo de String en Java) &#171; JNOJ3681 Blog</title>
		<link>http://albertovilches.com/java_basico_string_i/comment-page-1#comment-43756</link>
		<dc:creator>Using correctly String objects in Java (Uso óptimo de String en Java) &#171; JNOJ3681 Blog</dc:creator>
		<pubDate>Tue, 27 Nov 2007 11:14:14 +0000</pubDate>
		<guid isPermaLink="false">#comment-43756</guid>
		<description>[...] http://albertovilches.com/java_basico_string_i (in spanish) [...]</description>
		<content:encoded><![CDATA[<p>[...] <a href="http://albertovilches.com/java_basico_string_i (in" rel="nofollow">http://albertovilches.com/java_basico_string_i (in</a> spanish) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alf</title>
		<link>http://albertovilches.com/java_basico_string_i/comment-page-1#comment-16</link>
		<dc:creator>Alf</dc:creator>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-16</guid>
		<description>Mmm... ?est&#225;s seguro de que el compilador es suficientemente inteligente para eso? Tengo entendido que cuando concatenas varios Strings con el operador &quot;+&quot;, la m&#225;quina virtual crea una cadena nueva por cada &quot;par&quot;. Es decir en&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;String algo = &quot;esto &quot; + &quot;es &quot; + &quot;una tonter&#237;a&quot;;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
la VM crea primero un String &quot;esto es &quot; y luego crea el String definitivo &quot;esto es una tonter&#237;a&quot;.&lt;br /&gt;
&lt;br /&gt;
Al menos eso pone en muchos libros. ?Tal vez, es alguna mejora de las &#250;ltimas versiones?</description>
		<content:encoded><![CDATA[<p>Mmm&#8230; ?est&aacute;s seguro de que el compilador es suficientemente inteligente para eso? Tengo entendido que cuando concatenas varios Strings con el operador &#8220;+&#8221;, la m&aacute;quina virtual crea una cadena nueva por cada &#8220;par&#8221;. Es decir en</p>
<p><code>String algo = "esto " + "es " + "una tonter&iacute;a";</code></p>
<p>la VM crea primero un String &#8220;esto es &#8221; y luego crea el String definitivo &#8220;esto es una tonter&iacute;a&#8221;.</p>
<p>Al menos eso pone en muchos libros. ?Tal vez, es alguna mejora de las &uacute;ltimas versiones?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://albertovilches.com/java_basico_string_i/comment-page-1#comment-17</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-17</guid>
		<description>Lo que dices es cierto. Si concatenas constantes, el compilador creara una constante nueva con la suma de las anteriores. Es igual que el ejemplo que pongo de:&lt;br /&gt;
&lt;br /&gt;
Es m&#225;s, si por un casual intentamos concatenar constantes:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
System.out.println(&quot;Pulsa cualquier tecla\n&quot;+&lt;br /&gt;
                   &quot;para continuar\n&quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Java lo detecta y las concatena en tiempo de compilaci&#243;n, sin generar c&#243;digo redundante:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
System.out.println(&quot;Pulsa cualquier tecla\npara continuar\n&quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pero si no son constantes, utilizar&#225; StringBuffer. Te invito a que lo compruebes con un decompilador. Veras como Java te &quot;toquetea&quot; el codigo. :-)</description>
		<content:encoded><![CDATA[<p>Lo que dices es cierto. Si concatenas constantes, el compilador creara una constante nueva con la suma de las anteriores. Es igual que el ejemplo que pongo de:</p>
<p>Es m&aacute;s, si por un casual intentamos concatenar constantes:</p>
<p>
System.out.println(&#8220;Pulsa cualquier tecla\n&#8221;+<br />
                   &#8220;para continuar\n&#8221;);</p>
<p>
Java lo detecta y las concatena en tiempo de compilaci&oacute;n, sin generar c&oacute;digo redundante:</p>
<p>
System.out.println(&#8220;Pulsa cualquier tecla\npara continuar\n&#8221;);</p>
<p>
Pero si no son constantes, utilizar&aacute; StringBuffer. Te invito a que lo compruebes con un decompilador. Veras como Java te &#8220;toquetea&#8221; el codigo. :-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alf</title>
		<link>http://albertovilches.com/java_basico_string_i/comment-page-1#comment-18</link>
		<dc:creator>Alf</dc:creator>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-18</guid>
		<description>He probado algunos ejemplos con el Jad (inclu&#237;dos los que pones) y no utiliza StringBuffers. S&#243;lo optimiza cuando concateno constantes.&lt;br /&gt;
&lt;br /&gt;
Yo utilizo la versi&#243;n 1.4. ?Tal vez es una mejora de la 1.5? Eso s&#237;, el Jad me dice que la versi&#243;n del fichero class es la 48.0, y que no la soporta.&lt;br /&gt;
&lt;br /&gt;
</description>
		<content:encoded><![CDATA[<p>He probado algunos ejemplos con el Jad (inclu&iacute;dos los que pones) y no utiliza StringBuffers. S&oacute;lo optimiza cuando concateno constantes.</p>
<p>Yo utilizo la versi&oacute;n 1.4. ?Tal vez es una mejora de la 1.5? Eso s&iacute;, el Jad me dice que la versi&oacute;n del fichero class es la 48.0, y que no la soporta.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://albertovilches.com/java_basico_string_i/comment-page-1#comment-20</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-20</guid>
		<description>Con que lo compilas? Algun IDE en concreto (IDEA, JBuilder, Eclipse) o directamente desde la linea de comandos con javac?</description>
		<content:encoded><![CDATA[<p>Con que lo compilas? Algun IDE en concreto (IDEA, JBuilder, Eclipse) o directamente desde la linea de comandos con javac?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sole</title>
		<link>http://albertovilches.com/java_basico_string_i/comment-page-1#comment-73</link>
		<dc:creator>sole</dc:creator>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-73</guid>
		<description>Ahora si que le hemos ahorrado a Java trabajo, pero le hemos ahorrado el trabajo de la generaci&#243;n innecesaria de objetos, no la de concatenar.&lt;br /&gt;
Conclusi&#243;n:&lt;br /&gt;
&lt;br /&gt;
    * Java si sabe concatenar: Cada vez que aparece una concatenaci&#243;n, crea un objeto StringBuffer y sustituye el operador &quot;+&quot; tantas veces c&#243;mo sea necesario por llamadas a m&#233;todos append() de la clase StringBuffer. Esta sustituci&#243;n es at&#243;mica y solo se realiza una vez por cada l&#237;nea, por lo que cada vez que queramos concatenar cadenas, intentaremos siempre hacerlo en la misma l&#237;nea.&lt;br /&gt;
    * Java no sabe ahorrar: Si utilizamos la concatenaci&#243;n dentro de un bucle, Java realizar&#225; la sustituci&#243;n anterior en el interior del mismo, con el consiguiente desperdicio de memoria al crear tantas instancias de String y StringBuffer como repeticiones tenga el bucle. Solo en este caso, si procede utilizar StringBuffer.&lt;br /&gt;
&lt;br /&gt;
Os invito a que probeis diferentes versiones de concatenaci&#243;n de Strings, las compileis y despu&#233;s las decompileis. Un buen descompilador que utilizo con frecuencia es Jad. Ver&#233;is como Java es m&#225;s listo de lo que parece... en algunas ocasiones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
</description>
		<content:encoded><![CDATA[<p>Ahora si que le hemos ahorrado a Java trabajo, pero le hemos ahorrado el trabajo de la generaci&oacute;n innecesaria de objetos, no la de concatenar.<br />
Conclusi&oacute;n:</p>
<p>    * Java si sabe concatenar: Cada vez que aparece una concatenaci&oacute;n, crea un objeto StringBuffer y sustituye el operador &#8220;+&#8221; tantas veces c&oacute;mo sea necesario por llamadas a m&eacute;todos append() de la clase StringBuffer. Esta sustituci&oacute;n es at&oacute;mica y solo se realiza una vez por cada l&iacute;nea, por lo que cada vez que queramos concatenar cadenas, intentaremos siempre hacerlo en la misma l&iacute;nea.<br />
    * Java no sabe ahorrar: Si utilizamos la concatenaci&oacute;n dentro de un bucle, Java realizar&aacute; la sustituci&oacute;n anterior en el interior del mismo, con el consiguiente desperdicio de memoria al crear tantas instancias de String y StringBuffer como repeticiones tenga el bucle. Solo en este caso, si procede utilizar StringBuffer.</p>
<p>Os invito a que probeis diferentes versiones de concatenaci&oacute;n de Strings, las compileis y despu&eacute;s las decompileis. Un buen descompilador que utilizo con frecuencia es Jad. Ver&eacute;is como Java es m&aacute;s listo de lo que parece&#8230; en algunas ocasiones. </p>
<p></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://albertovilches.com/java_basico_string_i/comment-page-1#comment-74</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-74</guid>
		<description>Agradezco tu comentario Sole, pero no he tenido mas remedio que modificar tu texto para quitar los casi 90 enlaces que has metido a una unica paginas personal (no se si tuya) por ser considerado como spam. Un saludo.</description>
		<content:encoded><![CDATA[<p>Agradezco tu comentario Sole, pero no he tenido mas remedio que modificar tu texto para quitar los casi 90 enlaces que has metido a una unica paginas personal (no se si tuya) por ser considerado como spam. Un saludo.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
