<?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>Blog de Vincent Brabant : NetBeans, Java et autres &#187; Fiches</title>
	<atom:link href="https://blog.developpez.com/vbrabant/pcategory/java/certification/fiches/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/vbrabant</link>
	<description></description>
	<lastBuildDate>Thu, 26 Jan 2012 14:17:19 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>SCJP 5.0: Fiche 3.3.3: AutoBoxing/UnBoxing</title>
		<link>https://blog.developpez.com/vbrabant/p983/java/certification/fiches/scjp_5_0_fiche_3_3_3_autoboxing_unboxing</link>
		<comments>https://blog.developpez.com/vbrabant/p983/java/certification/fiches/scjp_5_0_fiche_3_3_3_autoboxing_unboxing#comments</comments>
		<pubDate>Tue, 26 Jul 2005 17:19:02 +0000</pubDate>
		<dc:creator><![CDATA[vbrabant]]></dc:creator>
				<category><![CDATA[Fiches]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Pour vous préparer à la Certification Java SCJP 5.0, nous vous proposons quelques fiches. Aujourd&#8217;hui, en voici une concernant l&#8217;autoboxing/unboxing L&#8217;AutoBoxing/UnBoxing La fonctionnalité d&#8217;autoboxing / unboxing est une fonctionnalité qui fut très attendue par certains programmeurs. Mais l&#8217;introduction de cette fonctionnalité peut également vous jouer de mauvais tours si vous n&#8217;y prenez garde. AutoBoxing L&#8217;autoboxing est l&#8217;opération qui consiste à envelopper automatiquement une primitive dans sa classe enveloppe correspondante. Au lieu d&#8217;être obligé d&#8217;écrire du [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Pour vous préparer à la Certification Java SCJP 5.0, nous vous proposons quelques fiches.</p>
<p>Aujourd&rsquo;hui, en voici une concernant l&rsquo;autoboxing/unboxing</p>
<p><span id="more-104"></span></p>
<p><strong>L&rsquo;AutoBoxing/UnBoxing</strong></p>
<p>La fonctionnalité d&rsquo;autoboxing / unboxing est une fonctionnalité qui fut très attendue par certains programmeurs. Mais l&rsquo;introduction de cette fonctionnalité peut également vous jouer de mauvais tours si vous n&rsquo;y prenez garde.</p>
<p><strong>AutoBoxing</strong><br />
L&rsquo;autoboxing est l&rsquo;opération qui consiste à envelopper automatiquement une primitive dans sa classe enveloppe correspondante.</p>
<p>Au lieu d&rsquo;être obligé d&rsquo;écrire du code semblable à ceci:</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Integer i = new Integer(1000); <br />
Boolean b = new Boolean(true); <br />
Character c = new Character('A');</div></div>
</blockquote>
<p>vous pouvez maintenant écrire le code suivant:</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Integer i = 1000; <br />
Boolean b = true; <br />
Character c = 'A';</div></div>
</blockquote>
<p>Ce qui est, vous le reconnaitrer, tout de même plus pratique, pour encoder.</p>
<p>Mais attention: l&rsquo;autoboxing introduit une petite subtilité.<br />
Il faut bien comprendre quelle est le code qui est généré par l&rsquo;autoboxing.</p>
<p>Lorsque vous écrivez le code source suivant</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Integer i = 100; <br />
Boolean b = true; <br />
Character c = 'A';</div></div>
</blockquote>
<p>Le bytecode généré ne correspond pas du tout au bytecode généré pour le code source suivant:</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Integer i = new Integer(100); <br />
Boolean b = new Boolean(true); <br />
Character c = new Character('A');</div></div>
</blockquote>
<p>Il correspond plutôt au bytecode généré pour le code source suivant:</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Integer i = Integer.valueOf(100); <br />
Boolean b = Boolean.valueOf(true); <br />
Character c = Character.valueOf('A');</div></div>
</blockquote>
<p>Et vous devez vraiment penser au fait que le compilateur travaille comme cela. Car cela peut avoir un énorme impact sur votre code.</p>
<p>Imaginer le code suivant:</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">public class ComparerDesBooleens { <br />
&nbsp; &nbsp; public static void main(String[] args) { <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; //Bloc 1: Comparer des Boolean en utilisant les constructeurs <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Boolean b = new Boolean(true); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Boolean b2 = new Boolean(true); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (b==b2) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b == b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b &lt;&gt; b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; //Bloc 2: Comparer des Boolean en utilisant valueOf(boolean) <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Boolean b = Boolean.valueOf(true); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Boolean b2 = Boolean.valueOf(true); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (b==b2) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b == b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b &lt;&gt; b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; //Bloc 3: Comparer des Boolean en utilisant valueOf(String) <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Boolean b = Boolean.valueOf(&quot;true&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Boolean b2 = Boolean.valueOf(&quot;true&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (b==b2) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b == b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b &lt;&gt; b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; //Bloc 4: Comparer des Boolean en utilisant l'autoboxing <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Boolean b = true; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Boolean b2 = true; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (b==b2) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b == b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b &lt;&gt; b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; } <br />
}</div></div>
</blockquote>
<p>Le résultat à la console sera </p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">b &lt;&gt; b2 <br />
b == b2 <br />
b == b2 <br />
b == b2</div></div>
</blockquote>
<p>Pourquoi ?</p>
<p>Le fait d&rsquo;appeler un constructeur, on crée toujours un nouvel Objet en mémoire. Et lorsqu&rsquo;on compare les deux références, elles pointes vers deux objets bien distincts.</p>
<p>Par contre, les deux méthodes valueOf() ont été optimisées. En effet, la classe Boolean tient en cache deux objets:  TRUE et FALSE. Et  les méthodes valueOf() ont été optimisées pour toujours retourner une référence à l&rsquo;un de ces deux objets.</p>
<p>Et l&rsquo;autoboxing a été implémenté de telle façon qu&rsquo;en réalité on appelle la méthode valueOf().</p>
<p>Nous venons de voir des exemples avec la classe Boolean qui possédait en effet une méthode valueOf(boolean). Mais les autres classes primitives, comme Integer ou Float, ne possedent pas de méthode valueOf(int) ou valueOf(float), me direz vous. En effet, cela était vrai jusqu&rsquo;à présent. Mais depuis le JDK 5.0, ces classes possèdent ces méthodes. Et ce sont ces méthodes qui sont appelées lorsque vous utilisez l&rsquo;autoboxing.</p>
<p>Si on reprend donc l&rsquo;exemple précédent utilisé pour la classe Boolean et qu&rsquo;on l&rsquo;adapte pour la classe Integer. On aura le code suivant:</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">public class ComparerDesEntiers { <br />
&nbsp; &nbsp; public static void main(String[] args) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; // On effectue 4 comparaisons avec des entiers construits 4 fois de manières différentes <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Integer b = new Integer(1000); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Integer b2 = new Integer(1000); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (b==b2) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b == b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b &lt;&gt; b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Integer b = Integer.valueOf(1000); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Integer b2 = Integer.valueOf(1000); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (b==b2) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b == b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b &lt;&gt; b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Integer b = Integer.valueOf(&quot;1000&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Integer b2 = Integer.valueOf(&quot;1000&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (b==b2) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b == b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b &lt;&gt; b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Integer b = 1000; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Integer b2 = 1000; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (b==b2) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b == b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(&quot;b &lt;&gt; b2&quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; } <br />
}</div></div>
</blockquote>
<p>Qu&rsquo;allons nous avoir à l&rsquo;exécution ?<br />
Le même résultat que pour la classe Boolean ?</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">b &lt;&gt; b2 <br />
b == b2 <br />
b == b2 <br />
b == b2</div></div>
</blockquote>
<p>Non. Et la raison en est toute simple. C&rsquo;est qu&rsquo;on ne pouvait pas imaginer de mettre en cache un objet par nombre entier. Pour la classe Boolean, c&rsquo;était facile, il n&rsquo;y avait que 2 valeurs. Mais pour la classe Integer, il y a 2 exposants 32 valeurs possibles. Cela aurait fait 2 exposants 32 objets à mettre en cache. Cela n&rsquo;était pas pensable. Et encore moins pour les Long, Float et/ou les Double. </p>
<p>Le résultat de l&rsquo;exécution est donc:</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">b &lt;&gt; b2 <br />
b &lt;&gt; b2 <br />
b &lt;&gt; b2 <br />
b &lt;&gt; b2</div></div>
</blockquote>
<p>Mais les développeurs de Sun ne se sont pas arrêtés là. Non, ils ont tout de même décider de mettre en cache, pour les classes enveloppes représentant des nombres entiers, les classes correspondantes aux nombre compris entre -128 et 127. Excepté pour la classe Character, qui ne peut contenir que des nombres entiers non signés, où la cache va de 0 à 127.</p>
<p>Si vous reprenez le code précédent concernant l&rsquo;Integer, mais en utilisant la valeur 100 au lieu de 1000, le résultat de l&rsquo;exécution sera donc:</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">b &lt;&gt; b2 <br />
b == b2 <br />
b &lt;&gt; b2 <br />
b == b2</div></div>
</blockquote>
<p>Tiens. Pourquoi avons-nous <code class="codecolorer text default"><span class="text">b&lt;&gt;b2</span></code> comme résultat à la console pour </p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Integer b = Integer.valueOf(&quot;1000&quot;); <br />
Integer b2 = Integer.valueOf(&quot;1000&quot;); <br />
if (b==b2) { <br />
&nbsp; System.out.println(&quot;b == b2&quot;); <br />
} <br />
else { <br />
&nbsp; System.out.println(&quot;b &lt;&gt; b2&quot;); <br />
}</div></div>
</blockquote>
<p>Tout simplement, parce qu&rsquo;il fallait qu&rsquo;un programme écrit et compilé pour le JDK 1.4 donne les même résultats lorsqu&rsquo;on qu&rsquo;il est exécuté avec une JRE 1.4 qu&rsquo;avec une JRE 5.0. Et la méthode valueOf(String value) existait déjà dans les versions précédentes du JDK 5.0 pour la classe Integer. Et retournait toujours un nouvel objet.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SCJP 5.0: Fiche 3.3.1: les primitives</title>
		<link>https://blog.developpez.com/vbrabant/p989/java/certification/fiches/scjp_5_0_fiche_3_3_1_les_primitives</link>
		<comments>https://blog.developpez.com/vbrabant/p989/java/certification/fiches/scjp_5_0_fiche_3_3_1_les_primitives#comments</comments>
		<pubDate>Sat, 23 Jul 2005 20:37:34 +0000</pubDate>
		<dc:creator><![CDATA[vbrabant]]></dc:creator>
				<category><![CDATA[Fiches]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Pour vous préparer à la Certification Java SCJP 5.0, nous vous proposons quelques fiches. Aujourd&#8217;hui, en voici une concernant les primitives Java ne possede pas que des objets. Il possède également des primitives. En Java, il y a 9 primitives que l&#8217;on peut regrouper en 4 catégories (peut-être même 5): 1. nombres entiers: byte, short, char, int, long, 2. nombres décimaux: float, double 3. booléens: boolean 4. void: void (5. caractères: char) Comme vous le [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Pour vous préparer à la Certification Java SCJP 5.0, nous vous proposons quelques fiches.</p>
<p>Aujourd&rsquo;hui, en voici une concernant les primitives<br />
<span id="more-106"></span></p>
<p>Java ne possede pas que des objets. Il possède également des primitives.</p>
<p>En Java, il y a 9 primitives que l&rsquo;on peut regrouper en 4 catégories (peut-être même 5):<br />
1. nombres entiers: byte, short, char, int, long,<br />
2. nombres décimaux: float, double<br />
3. booléens:  boolean<br />
4. void: void<br />
(5. caractères: char)</p>
<p>Comme vous le constater, la primitive <em>char</em> apparait dans deux catégories. En effet, char permet de stoquer un caractère au format UniCode. Mais il permet également de stoquer des nombres non signés entre 0 et 65535.</p>
<p><strong>Les types de primitives numériques</strong><br />
Voici un tableau, avec à votre gauche la primitive, le nombre d&rsquo;octets utilisés pour chacun, et les valeurs minimales et maximales. </p>
<blockquote><pre>
byte     (8)  : [-128, 127]
short    (16) : [-32768, 32767]
char     (16) : [0, 65535]
int      (32) : [-2147483648, 2147483647]
long     (64) : [-9223372036854775808 , 9223372036854775807]
float    (32) : [1.4E-45, 3.4028235E38]
double   (64) : [4.9E-324, 1.7976931348623157E308]
</pre>
</blockquote>
<p><strong>le type de primitive boolean</strong><br />
Le type de primitive boolean n&rsquo;accepte que deux valeurs: true et false.<br />
la taille n&rsquo;est pas imposée. Chaque implémentation de JVM est libre de choisir la taille occupée pour un boolean.</p>
<blockquote><p>boolean boolean1 = true;<br />
boolean boolean2 = false;</p></blockquote>
<p><strong>Le type de primitive void</strong><br />
Le type de primitive void est vraiment hors catégorie. En effet, on ne peut pas déclarer d&rsquo;identifiant de ce type. Ce type de primitive n&rsquo;accepte également aucune valeur.</p>
<blockquote><p>void xxx; // ne passe pas à la compilation.</p></blockquote>
<p>Mais, comme pour les autres types de primitives, il possede sa classe enveloppe correspondante.</p>
<p><strong>Le type de primitive char</strong><br />
Comme vous l&rsquo;avez vu dans le tableau ci-dessus, le type char est assez particulier puisqu&rsquo;il appartient à la catégorie des nombres entiers, mais aussi à la catégories des caractères.</p>
<p>Le fragment de code suivant démontre que char se conduit (presque) comme les autres primitives numériques:</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">char nombre1= 65; <br />
char nombre2 = 66; <br />
// vous pouvez additionner deux nombres <br />
char addition = (char) (nombre1 + nombre2); &nbsp;<br />
//N'affichera pas 65+66=131 mais A+B=AB <br />
System.out.println(nombre1+&quot;+&quot;+nombre2+&quot;=&quot;+nombre1+nombre2); &nbsp; <br />
//N'afichera pas 131=131 mais 131=AB <br />
System.out.println(nombre1+nombre2+&quot;=&quot;+nombre1+nombre2);</div></div>
</blockquote>
<p>Mais, le type de primitive char permet également de stoquer et afficher des caractères:</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">char caractere1 = 'A'; <br />
char caractere2 = 'B'; <br />
System.out.println(caractere1); //affiche x <br />
System.out.println(caractere2); //affiche y <br />
System.out.println(caractere1+caracter2); //affiche 131 (résultat de l'addition de 65 (valeur interne de 'A') avec 66 (valeur interne de 'B'))</div></div>
</blockquote>
<p><strong>Particularité des types de primitives</strong><br />
Tous les types de primitives ont un &laquo;&nbsp;membre&nbsp;&raquo; qui est class.</p>
<p>Vous pouvez donc afficher la &laquo;&nbsp;classe&nbsp;&raquo; correspondante à ce type de primitives.</p>
<p>Voici un fragment de code, </p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">System.out.println(int.class); <br />
System.out.println(void.class.isPrimitive());</div></div>
</blockquote>
<p>qui vous affichera </p>
<blockquote><p>int<br />
true</p></blockquote>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCJP 5: Fiche 1.3.1: Les mots réservés</title>
		<link>https://blog.developpez.com/vbrabant/p987/java/certification/fiches/scjp_5_fiche_1_3_1_les_mots_reserves</link>
		<comments>https://blog.developpez.com/vbrabant/p987/java/certification/fiches/scjp_5_fiche_1_3_1_les_mots_reserves#comments</comments>
		<pubDate>Sat, 23 Jul 2005 14:21:17 +0000</pubDate>
		<dc:creator><![CDATA[vbrabant]]></dc:creator>
				<category><![CDATA[Fiches]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Pour vous préparer à la Certification Java SCJP 5.0, nous vous proposons quelques fiches. Aujourd&#8217;hui, en voici une concernant les mots réservés Vous trouverez ci-dessous la liste des mots qui ne peuvent être utilisés comme identifiant, : abstract assert introduit dans JDK 1.4 boolean primitive break byte primitive case catch char primitive class const Pas utilisé dans le langage. Mais fut réservé pour le cas où. continue default do double primitive else enum introduit dans [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Pour vous préparer à la Certification Java SCJP 5.0, nous vous proposons quelques fiches.</p>
<p>Aujourd&rsquo;hui, en voici une concernant les mots réservés<br />
<span id="more-105"></span><br />
Vous trouverez ci-dessous la liste des mots qui ne peuvent être utilisés comme identifiant, :</p>
<blockquote><pre>
abstract
assert            introduit dans JDK 1.4
boolean           primitive
break
byte              primitive
case              
catch
char              primitive
class
const             Pas utilisé dans le langage. Mais fut réservé pour le cas où.
continue
default
do
double            primitive
else
enum              introduit dans JDK 5
extends
false             litteral
final
finally
float             primitive
for
goto              Pas utilisé dans le langage. Mais réservé pour éviter son usage.
if
implements
import
instanceof
int               primitive
interface
long              primitive
native
new
null              litteral
package
private
protected
public
return
short             primitive
static
strictfp
super
switch
synchronized
this
throw
throws
transient
true              litteral
try
void              primitive
volatile
while
</pre>
</blockquote>
<p>Tous ces mots sont réservés. Cela veut dire qu&rsquo;il ne pourront jamais être utilisé comme identifiant, ni faire partie d&rsquo;un nom de package.</p>
<p>Pas question d&rsquo;écrire des choses semblables à ceci:</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Enumeration enum = ... <br />
public class volatile {...} <br />
package com.developpez.brabant.certification.class; <br />
package org.interface.project; <br />
...</div></div>
</blockquote>
<p>Mais rien ne vous empêche d&rsquo;écrire des choses semblables à ceci:</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Enumeration enums = ... <br />
public class Volatile {...} <br />
package com.developpez.brabant.certification.classes; <br />
package org.interfaces.project; <br />
...</div></div>
</blockquote>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCJP 5.0: Fiche 3.3.2: les classes enveloppes pour les primitives</title>
		<link>https://blog.developpez.com/vbrabant/p990/java/certification/fiches/scjp_5_0_fiche_3_3_2_les_classes_envelop</link>
		<comments>https://blog.developpez.com/vbrabant/p990/java/certification/fiches/scjp_5_0_fiche_3_3_2_les_classes_envelop#comments</comments>
		<pubDate>Sat, 23 Jul 2005 23:21:02 +0000</pubDate>
		<dc:creator><![CDATA[vbrabant]]></dc:creator>
				<category><![CDATA[Fiches]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Pour vous préparer à la Certification Java SCJP 5.0, nous vous proposons quelques fiches. Aujourd&#8217;hui, en voici une concernant les classes enveloppes Les classes enveloppes Nous avons fut dans la fiche précédente, qu&#8217;il y avait des types Les classes enveloppes (Wrapper en anglais) sont les classes servant à envelopper ces fameux types de primitives. Ces classes enveloppes ne jouent pas que le rôle d&#8217;enveloppes. Elles jouent également le role de classes utilitaires car elle possèdent [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Pour vous préparer à la Certification Java SCJP 5.0, nous vous proposons quelques fiches.</p>
<p>Aujourd&rsquo;hui, en voici une concernant les classes enveloppes</p>
<p><span id="more-107"></span><br />
<strong>Les classes enveloppes</strong></p>
<p>Nous avons fut dans la fiche précédente, qu&rsquo;il y avait des types </p>
<p>Les classes enveloppes (Wrapper en anglais) sont les classes servant à envelopper ces fameux types de primitives. Ces classes enveloppes ne jouent pas que le rôle d&rsquo;enveloppes. Elles jouent également le role de classes utilitaires car elle possèdent des méthodes permettant d&rsquo;effectuer certaines opérations assez utiles.</p>
<p>Puisqu&rsquo;il y a 9 primitives, vous trouverez également 9 classes enveloppes.<br />
Voici un tableau avec à votre gauche la primitive et à droite la classe enveloppe correspondante.</p>
<blockquote><pre>
byte     java.lang.Byte
short    java.lang.Short
char     java.lang.Character
int      java.lang.Integer
long     java.lang.Long
float    java.lang.Float
double   java.lang.Double

boolean  java.lang.Boolean

void     java.lang.Void
</pre>
</blockquote>
<p>Il est intéressant de noter que les classes<br />
Byte, Short, Integer, Long, Float et Double héritent toutes de la classe Number, mais pas la classe Character.<br />
Ce qui tends bien à démontrer que le type de primitives char ne peut être entièrement rangé dans la catégorie des nombres, mais appartient également à la catégorie des caractères.</p>
<p><strong>Classes enveloppes, mais également classes utilitaires</strong></p>
<p>Comme nous le disions plus haut, les classes enveloppes font également office de classes utilitaires. Ainsi, toutes les classes enveloppes ont un membre statique TYPE qui retourne une instance de Class représentant le type de primitive correspondant.</p>
<p>Aussi </p>
<blockquote><p>System.out.println(Integer.TYPE == int.class);</p></blockquote>
<p>affiche<br />
<blockquote>true</p></blockquote>
<p> sur la console</p>
<p>les classes enveloppes pour les nombres (et également la classe Character) possèdent également des membres statiques MIN_VALUE et MAX_VALUE qui retourne les valeurs extremes qui peuvent être codées dans la taille qui lui est donnée, ainsi que SIZE qui retourne le taillé mémoire occupée par la primitive (le nombre de bits utilisés pour stoquer le nombre). Des classes comme Double, vous permet de vérifier qu&rsquo;une valeur donnée est INFINI ou NaN (not a number). </p>
<p>Notez que SIZE fut introduit dans la version 5.0 de Java.</p>
<p>Voici un petit programme qui sert à afficher les valeurs extremes et la taille mémoire de la primitive pour le type correspondant. Attention que cela ne concerne que les classes enveloppes pour les nombres (ainsi que la classe Character).</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">public class Enveloppe{ <br />
&nbsp; &nbsp; public static void main(String[] args) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; //Les valeurs minimales <br />
&nbsp; &nbsp; &nbsp; &nbsp; Byte minByte = new Byte(Byte.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; Short minShort = new Short(Short.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; Character minCharacter = new Character(Character.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; Integer minInteger = new Integer(Integer.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; Long minLong = new Long(Long.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; Float minFloat = new Float(Float.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; Double minDouble = new Double(Double.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; //Les valeurs maximales <br />
&nbsp; &nbsp; &nbsp; &nbsp; Byte maxByte = new Byte(Byte.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; Short maxShort = new Short(Short.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; Character maxCharacter = new Character(Character.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; Integer maxInteger = new Integer(Integer.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; Long maxLong = new Long(Long.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; Float maxFloat = new Float(Float.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; Double maxDouble = new Double(Double.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; //Affiche taille, valeur minimale, et valeur maximale <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(Byte.TYPE+&quot; (&quot;+Byte.SIZE+&quot;) : &quot;+ minByte + &quot; &lt;-&gt; &quot;+maxByte); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(Short.TYPE+&quot;(&quot;+Short.SIZE+&quot;) : &quot;+ minShort + &quot; &lt;-&gt; &quot;+maxShort); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(Character.TYPE+&quot;(&quot;+Character.SIZE+&quot;) : &quot;+ (int) minCharacter + &quot; &lt;-&gt; &quot;+ (int) maxCharacter); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(Integer.TYPE+&quot;(&quot;+Integer.SIZE+&quot;) : &quot;+ minInteger + &quot; &lt;-&gt; &quot;+maxInteger); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(Long.TYPE+&quot;(&quot;+Long.SIZE+&quot;) : &quot;+ minLong + &quot; &lt;-&gt; &quot;+maxLong); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(Float.TYPE+&quot;(&quot;+Float.SIZE+&quot;) : &quot;+ minFloat + &quot; &lt;-&gt; &quot;+maxFloat); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(Double.TYPE+&quot;(&quot;+Double.SIZE+&quot;) : &quot;+ minDouble + &quot; &lt;-&gt; &quot;+maxDouble); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(minByte == Byte.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(minShort == Short.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(minCharacter == Character.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(minInteger == Integer.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(minLong == Long.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(minFloat == Float.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(minDouble == Double.MIN_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(maxByte == Byte.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(maxShort == Short.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(maxCharacter == Character.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(maxInteger == Integer.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(maxLong == Long.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(maxFloat == Float.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(maxDouble == Double.MAX_VALUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; Double d = 1.0/0.0; <br />
&nbsp; &nbsp; &nbsp; &nbsp; Double d2 = -1.0/0.0; <br />
&nbsp; &nbsp; &nbsp; &nbsp; Double d3 = 0.0/0.0; <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(d == Double.POSITIVE_INFINITY); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(d2 == Double.NEGATIVE_INFINITY); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(d3+&quot; &quot;+(d3 == Double.NaN)); <br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(d3.isNaN()); <br />
&nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp;<br />
}</div></div>
</blockquote>
<p><strong>La classe Boolean</strong><br />
La classe Boolean possède également des membres statiques comme TRUE et FALSE, ainsi qu&rsquo;une méthode valueOf() qui retourne toujours une référence aux mêmes objets référencés par TRUE et FALSE.</p>
<p><strong>La classe Void</strong><br />
La classe Void est la classe la plus hors catégorie. En effet, c&rsquo;est la seule classe enveloppe qui ne peut être instanciée et qui ne possède aucune méthode (exceptée celle héritée de la classe Object, bien évidemment) ni membre statique, excepté TYPE</p>
<p><strong>La classe Character</strong><br />
C&rsquo;est la classe contenant le plus de membres de toutes les classes enveloppes.<br />
En effet, elle a des méthodes pour à peu près tout et n&rsquo;importe quoi concernant les caractères.<br />
Est ce que le caractère est une lettre? peut-il être utilisé dans un identifiant Java ? Est-ce une majuscule ? Quel est le caractère correspondant à sa minuscule ?<br />
C&rsquo;est la classe d&rsquo;enveloppe qui a également connu le plus de modifications pour Java 5. </p>
<p>Mais aussi étrange que cela puisse paraître, la classe Character n&rsquo;étend pas la classe Number.<br />
Bizarre, vous avez dit bizarre. Comme c&rsquo;est étrange.<br />
Je n&rsquo;ai aucune explication permettant d&rsquo;expliquer pourquoi la classe Character n&rsquo;hérite pas de la classe Number. Notez également que la classe Number ne possède pas de méthode charValue(), ce qui temd à prouver que char n&rsquo;est pas vraiment à classifier dans les types de primitives numériques. Mais alors, pourquoi avoir fait le travail à moitier puisqu&rsquo;on peut additionner des char entre eux aussi facilement ?</p>
<p>Si quelqu&rsquo;un pouvait me donner la raison, j&rsquo;en serais ravi. C&rsquo;est juste par curiosité.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SCJP 5.0: Fiche 1.1.1: Classe Java dans sa forme la plus simple</title>
		<link>https://blog.developpez.com/vbrabant/p961/java/certification/fiches/fiche_1_1_classe_java_dans_sa_forme_la_p</link>
		<comments>https://blog.developpez.com/vbrabant/p961/java/certification/fiches/fiche_1_1_classe_java_dans_sa_forme_la_p#comments</comments>
		<pubDate>Fri, 08 Jul 2005 11:50:59 +0000</pubDate>
		<dc:creator><![CDATA[vbrabant]]></dc:creator>
				<category><![CDATA[Fiches]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Si vous tapez le code suivant dans un fichier nommé SimpleClasse.java, vous pourrez le compiler, et obtiendrez une classe tout à fait valide. class SimplestClass { } Mais examinons cela en détails, car il y a déjà plein de choses à dire. En fait, il y plein de sous-entendu dans ce qu&#8217;on a écrit. En effet, on peut dire que le code illustré ci-dessus est équivalent au code illustré ci-dessous. class SimplestClass extends java.lang.Object { [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Si vous tapez le code suivant dans un fichier nommé SimpleClasse.java, vous pourrez le compiler, et obtiendrez une classe tout à fait valide.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">class SimplestClass { <br />
}</div></div>
<p>Mais examinons cela en détails, car il y a déjà plein de choses à dire.<br />
<span id="more-102"></span><br />
En fait, il y plein de sous-entendu dans ce qu&rsquo;on a écrit.</p>
<p>En effet, on peut dire que le code illustré ci-dessus est équivalent au code illustré ci-dessous.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">class SimplestClass extends java.lang.Object { <br />
&nbsp; //Constructeur par défaut <br />
&nbsp; public SimplestClass() { <br />
&nbsp; &nbsp; super(); //appel constructeur de la superclasse <br />
&nbsp; } <br />
}</div></div>
<p>Pour bien illustrer cela, vous pourriez écrire le code suivant:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">//Appel constructeur par défaut: <br />
SimplestClass c = new SimplestClass(); <br />
//SimplestClass est également un Object <br />
Object o = new SimplestClass(); <br />
//appel méthode toString, héritée de la classe Object <br />
String resultatToString = c.toString(); <br />
//Affiche le nom de la classe, en appelant la méthode getClass() héritée de la classe Object <br />
System.out.println(c.getClass().getName());</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
