<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[J2EE学习备忘录]]></title>
  <subtitle type="html"><![CDATA[——不问世事,与技术相依为命;看破红尘,同电脑白头偕老]]></subtitle>
  <id>http://mgc.name/</id> 
  <link rel="alternate" type="text/html" href="http://mgc.name/" /> 
  <link rel="self" type="application/atom+xml" href="http://mgc.name/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.4.1022">PJBlog2</generator> 
  <updated>2011-07-29T10:20:11+08:00</updated> 

  <entry>
	  <title type="html"><![CDATA[Java中基本类型和引用类型赋值的区别——SCJP真题解析Q77]]></title>
	  <author>
		 <name>Magci</name>
		 <uri>http://mgc.name/</uri>
		 <email>webmaster@mgc.name</email>
	  </author>
	  <category term="" scheme="http://mgc.name/default.asp?cateID=11" label="J2SE" /> 
	  <updated>2011-07-29T10:20:11+08:00</updated>
	  <published>2011-07-29T10:20:11+08:00</published>
		  <summary type="html"><![CDATA[<span style="color:red">声明：本套SCJP(310-55)试题是08年版本，请报考SCJP的朋友绕道去找最新试题，我没有考过也不去考SCJP，只是拿来复习巩固Java基础的，解析部分仅仅是本人的拙见，如有错误欢迎指正。</span><br/><br/>QUESTION&nbsp;77:<br/>Exhibit:<br/><pre name="code" class="brush: java;">
class&nbsp;Inner&nbsp;{
&#160;&#160;&#160;&#160;private&nbsp;int&nbsp;x;

&#160;&#160;&#160;&#160;public&nbsp;int&nbsp;getX()&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&nbsp;x;
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;void&nbsp;setX(int&nbsp;x)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this.x&nbsp;=&nbsp;x;
&#160;&#160;&#160;&#160;}
}

class&nbsp;Outer&nbsp;{
&#160;&#160;&#160;&#160;private&nbsp;Inner&nbsp;y;

&#160;&#160;&#160;&#160;public&nbsp;Inner&nbsp;getY()&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&nbsp;y;
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;void&nbsp;setY(Inner&nbsp;y)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this.y&nbsp;=&nbsp;y;
&#160;&#160;&#160;&#160;}
}

public&nbsp;class&nbsp;gamma&nbsp;{

&#160;&#160;&#160;&#160;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Outer&nbsp;o&nbsp;=&nbsp;new&nbsp;Outer();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Inner&nbsp;i&nbsp;=&nbsp;new&nbsp;Inner();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int&nbsp;n&nbsp;=&nbsp;10;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;i.setX(n);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;o.setY(i);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//ins&#101;rt&nbsp;code&nbsp;here
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(o.getY().getX());

&#160;&#160;&#160;&#160;}

}

</pre><br/><br/>Which&nbsp;three&nbsp;code&nbsp;fragments,&nbsp;added&nbsp;individually&nbsp;at&nbsp;line&nbsp;33,&nbsp;produce&nbsp;the&nbsp;output&nbsp;100?&nbsp;(Choose&nbsp;three.)<br/><br/>A.&nbsp;n&nbsp;=&nbsp;100;<br/>B.&nbsp;i.setX(100);<br/>C.&nbsp;o.getY().setX(100);<br/>D.&nbsp;i&nbsp;=&nbsp;new&nbsp;Inner();&nbsp;i.setX(100);<br/>E.&nbsp;o.setY(i);&nbsp;i&nbsp;=&nbsp;new&nbsp;Inner();&nbsp;i.setX(100);<br/>F.&nbsp;i&nbsp;=&nbsp;new&nbsp;Inner();&nbsp;i.setX(100);&nbsp;o.setY(i);<br/><br/>Answer:&nbsp;B,C,F<br/><br/>涉及知识点：<br/>1.基本类型和String类型赋值传递的是变量的值，引用类型赋值传递的是变量的地址；<br/>2.改变基本类型和String类型变量的值，不会改变其他变量的值，改变引用类型变量的值，会改变引用该变量的变量值；<br/>3.使用new关键字重新给变量赋值时，会在内存中重新开辟空间，变量指向新的内存空间，此时该变量和引用该变量的变量指向的就不是同一个地址了，该变量的变化不会改变其他变量的值。<br/><br/>解析：<br/>A选项不正确，n是基本类型，改变n的值不会影响o.getY().getX()的值；<br/>B选项正确，set方法给i中的x赋值，i是引用类型变量，会改变o.getY().getX()的值；<br/>C选项正确，o.getY().setX()和o.getY().getX()操作的是同一个变量x；<br/>D选项不正确，通过new关键字重新给i赋值后，不会影响o.getY().getX()的值；<br/>E选项不正确，通过new关键字重新给i赋值后，不会影响o.getY().getX()的值；<br/>F选项正确，通过new关键字重新给i赋值后，又重新将i赋值给o，o.getY().getX()的值是i中x的值。<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://mgc.name/default.asp?id=890" /> 
	  <id>http://mgc.name/default.asp?id=890</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Java中设置classpath环境变量的问题——SCJP真题解析Q76]]></title>
	  <author>
		 <name>Magci</name>
		 <uri>http://mgc.name/</uri>
		 <email>webmaster@mgc.name</email>
	  </author>
	  <category term="" scheme="http://mgc.name/default.asp?cateID=11" label="J2SE" /> 
	  <updated>2011-07-28T15:39:35+08:00</updated>
	  <published>2011-07-28T15:39:35+08:00</published>
		  <summary type="html"><![CDATA[<span style="color:red">声明：本套SCJP(310-55)试题是08年版本，请报考SCJP的朋友绕道去找最新试题，我没有考过也不去考SCJP，只是拿来复习巩固Java基础的，解析部分仅仅是本人的拙见，如有错误欢迎指正。</span><br/><br/>QUESTION&nbsp;76:<br/>A&nbsp;class&nbsp;games.cards.Poker&nbsp;is&nbsp;correctly&nbsp;defined&nbsp;in&nbsp;the&nbsp;jar&nbsp;file&nbsp;Poker.jar.<br/>A&nbsp;user&nbsp;wants&nbsp;to&nbsp;execute&nbsp;the&nbsp;main&nbsp;method&nbsp;of&nbsp;Poker&nbsp;on&nbsp;a&nbsp;UNIX&nbsp;system&nbsp;using&nbsp;the&nbsp;command:<br/>Java&nbsp;games.cards.Poker<br/>What&nbsp;allows&nbsp;the&nbsp;user&nbsp;to&nbsp;do&nbsp;this?<br/><br/>A.&nbsp;put&nbsp;Poker.jar&nbsp;in&nbsp;directory&nbsp;/stuff/java,&nbsp;and&nbsp;set&nbsp;the&nbsp;CLASSPATH&nbsp;to&nbsp;include&nbsp;/stuff/java<br/>B.&nbsp;put&nbsp;Poker.jar&nbsp;in&nbsp;directory&nbsp;/stuff/java,&nbsp;and&nbsp;set&nbsp;the&nbsp;CLASSPATH&nbsp;to&nbsp;include&nbsp;/stuff/java/*.jar<br/>C.&nbsp;put&nbsp;Poker.jar&nbsp;in&nbsp;directory&nbsp;/stuff/java,&nbsp;and&nbsp;set&nbsp;the&nbsp;CLASSPATH&nbsp;to&nbsp;include&nbsp;/stuff/java/Poker.jar<br/>D.&nbsp;put&nbsp;Poker.jar&nbsp;in&nbsp;directory&nbsp;/stuff/java/games/cards,&nbsp;and&nbsp;set&nbsp;the&nbsp;CLASSPATH&nbsp;to&nbsp;include&nbsp;/stuff/java<br/>E.&nbsp;put&nbsp;Poker.jar&nbsp;in&nbsp;directory&nbsp;/stuff/java/games/cards,&nbsp;and&nbsp;set&nbsp;the&nbsp;CLASSPATH&nbsp;to&nbsp;include&nbsp;/stuff/java/*.jar<br/>F.&nbsp;put&nbsp;Poker.jar&nbsp;in&nbsp;directory&nbsp;/stuff/java/games/cards,&nbsp;and&nbsp;set&nbsp;the&nbsp;CLASSPATH&nbsp;to&nbsp;include&nbsp;/stuff/java/Poker.jar<br/><br/>Answer:&nbsp;C<br/><br/>涉及知识点：<br/>1.编译器首先在当前目录下查找这个包，如果找不到，会继续在环境变量classpath中的目录查找；<br/>2.class文件的最上层包的父目录必须位于classpath下。<br/><br/>解析：<br/>1.games.cards.Poker都是Poker.jar中的包和类，jar文件放在哪个目录，就要把哪个目录下的jar文件设置到CLASSPATH中，选项D、E、F不正确；<br/>2.games.cards.Poker最上层包是games，它的父目录是Poker.jar，必须将jar文件设置到CLASSPATH中，不能只设置到jar文件的父目录，选项A不正确；<br/>3.在CLASSPATH中设置jar文件不能使用“*”来包括所有jar文件，选项B不正确；<br/>4.因此选项C正确。]]></summary>
	  <link rel="alternate" type="text/html" href="http://mgc.name/default.asp?id=889" /> 
	  <id>http://mgc.name/default.asp?id=889</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Java中main函数的参数和数组的下标——SCJP真题解析Q75]]></title>
	  <author>
		 <name>Magci</name>
		 <uri>http://mgc.name/</uri>
		 <email>webmaster@mgc.name</email>
	  </author>
	  <category term="" scheme="http://mgc.name/default.asp?cateID=11" label="J2SE" /> 
	  <updated>2011-07-28T14:53:13+08:00</updated>
	  <published>2011-07-28T14:53:13+08:00</published>
		  <summary type="html"><![CDATA[<span style="color:red">声明：本套SCJP(310-55)试题是08年版本，请报考SCJP的朋友绕道去找最新试题，我没有考过也不去考SCJP，只是拿来复习巩固Java基础的，解析部分仅仅是本人的拙见，如有错误欢迎指正。</span><br/><br/>QUESTION&nbsp;75:<br/>Given:<br/><pre name="code" class="brush: java;">
public&nbsp;class&nbsp;Yippee2&nbsp;{

&#160;&#160;&#160;&#160;static&nbsp;public&nbsp;void&nbsp;main(String[]&nbsp;yahoo)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for&nbsp;(int&nbsp;x&nbsp;=&nbsp;1;&nbsp;x&nbsp;&lt;&nbsp;yahoo.length;&nbsp;x++)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.print(yahoo[x]&nbsp;+&nbsp;&#34;&nbsp;&#34;);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;}

}
</pre><br/>and&nbsp;the&nbsp;command&nbsp;line&nbsp;invocation:<br/>java&nbsp;Yippee2&nbsp;a&nbsp;b&nbsp;c<br/>What&nbsp;is&nbsp;the&nbsp;result?<br/>A.&nbsp;a&nbsp;b<br/>B.&nbsp;b&nbsp;c<br/>C.&nbsp;Compilation&nbsp;fails.<br/>D.&nbsp;An&nbsp;exception&nbsp;is&nbsp;thrown&nbsp;at&nbsp;runtime.<br/><br/>Answer:&nbsp;B<br/><br/>涉及知识点：<br/>1.main函数的参数，通过命令java&nbsp;类名&nbsp;参数1&nbsp;参数2&nbsp;...&nbsp;参数n，赋值，参数之间以空格分隔；<br/>2.数组的下标从0开始；<br/><br/>解析：<br/>1.static&nbsp;public&nbsp;void&nbsp;main(String[]&nbsp;yahoo)，这种写法没有错误，static和public位置可以互换；<br/>2.通过命令“java&nbsp;Yippee2&nbsp;a&nbsp;b&nbsp;c”，给参数yahoo赋值，相当于yahoo&nbsp;=&nbsp;{&#34;a&#34;,&nbsp;&#34;b&#34;,&nbsp;&#34;c&#34;};<br/>3.for循环下标从0开始，因此输出b&nbsp;c，选B。]]></summary>
	  <link rel="alternate" type="text/html" href="http://mgc.name/default.asp?id=888" /> 
	  <id>http://mgc.name/default.asp?id=888</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Java中垃圾回收的条件——SCJP真题解析Q74]]></title>
	  <author>
		 <name>Magci</name>
		 <uri>http://mgc.name/</uri>
		 <email>webmaster@mgc.name</email>
	  </author>
	  <category term="" scheme="http://mgc.name/default.asp?cateID=11" label="J2SE" /> 
	  <updated>2010-06-28T17:59:59+08:00</updated>
	  <published>2010-06-28T17:59:59+08:00</published>
		  <summary type="html"><![CDATA[<span style="color:red">声明：本套SCJP(310-55)试题是08年版本，请报考SCJP的朋友绕道去找最新试题，我没有考过也不去考SCJP，只是拿来复习巩固Java基础的，解析部分仅仅是本人的拙见，如有错误欢迎指正。</span><br/><br/>QUESTION&nbsp;74:<br/>Given&nbsp;the&nbsp;exhibit:<br/><pre name="code" class="brush: java;">
import&nbsp;java.io.*;
import&nbsp;java.util.*;
import&nbsp;java.math.*;

public&nbsp;class&nbsp;Test74&nbsp;{
&#160;&#160;&#160;&#160;public&nbsp;void&nbsp;getNumbers()&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ArrayList&nbsp;numbers&nbsp;=&nbsp;new&nbsp;ArrayList();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;10;&nbsp;i++)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int&nbsp;value&nbsp;=&nbsp;i&nbsp;*&nbsp;((int)Math.random());
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Integer&nbsp;intObj&nbsp;=&nbsp;new&nbsp;Integer(value);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;numbers.add(intObj);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(numbers);
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;new&nbsp;Test74().getNumbers();
&#160;&#160;&#160;&#160;}
}
</pre><br/>Which&nbsp;line&nbsp;of&nbsp;code&nbsp;marks&nbsp;the&nbsp;earliest&nbsp;point&nbsp;that&nbsp;an&nbsp;object&nbsp;referenced&nbsp;by&nbsp;intObj&nbsp;becomes&nbsp;a&nbsp;candidate&nbsp;for&nbsp;garbage&nbsp;collection?<br/>A.&nbsp;Line&nbsp;11<br/>B.&nbsp;Line&nbsp;12<br/>C.&nbsp;Line&nbsp;13<br/>D.&nbsp;Line&nbsp;14<br/>E.&nbsp;The&nbsp;object&nbsp;is&nbsp;NOT&nbsp;a&nbsp;candidate&nbsp;for&nbsp;garbage&nbsp;collection.<br/><br/>Answer:&nbsp;D<br/><br/>涉及知识点：<br/>垃圾回收的条件：<br/>1.空引用，对象的引用为null，改对象会被垃圾收集器回收；<br/>2.重新为变量赋值，变量之前引用的对象会被垃圾收集器回收；<br/>3.隔离引用：多个对象互相引用，如果其他对这几个对象的引用被删除，只存在这几个对象之间的引用关系时，他们就被隔离起来，无法被外界访问，都会被垃圾收集器回收。<br/><br/>解析：<br/>第11行，intObj引用的对象被intObj和numbers引用，不会被垃圾收集器回收；<br/>第12，13行，该对象不再被intObj引用，但是仍被numbers引用，也不会被垃圾收集器回收；<br/>直到第14行，numbers也不再引用该对象时，该对象才会被垃圾收集器回收；<br/>因此选项D正确。]]></summary>
	  <link rel="alternate" type="text/html" href="http://mgc.name/default.asp?id=885" /> 
	  <id>http://mgc.name/default.asp?id=885</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Java中枚举的用法——SCJP真题解析Q73]]></title>
	  <author>
		 <name>Magci</name>
		 <uri>http://mgc.name/</uri>
		 <email>webmaster@mgc.name</email>
	  </author>
	  <category term="" scheme="http://mgc.name/default.asp?cateID=11" label="J2SE" /> 
	  <updated>2010-06-28T17:32:13+08:00</updated>
	  <published>2010-06-28T17:32:13+08:00</published>
		  <summary type="html"><![CDATA[<span style="color:red">声明：本套SCJP(310-55)试题是08年版本，请报考SCJP的朋友绕道去找最新试题，我没有考过也不去考SCJP，只是拿来复习巩固Java基础的，解析部分仅仅是本人的拙见，如有错误欢迎指正。</span><br/><br/>QUESTION&nbsp;73:<br/>Given&nbsp;the&nbsp;exhibit:<br/>enumExample&nbsp;{&nbsp;ONE,&nbsp;TWO,&nbsp;THREE&nbsp;}<br/>Which&nbsp;statement&nbsp;is&nbsp;true?<br/>A.&nbsp;The&nbsp;expressions&nbsp;(ONE&nbsp;==&nbsp;ONE)&nbsp;and&nbsp;ONE.equals(ONE)&nbsp;are&nbsp;both&nbsp;guaranteed&nbsp;to&nbsp;be&nbsp;true.<br/>B.&nbsp;The&nbsp;expression&nbsp;(ONE&nbsp;&lt;&nbsp;TWO&nbsp;)&nbsp;is&nbsp;guaranteed&nbsp;to&nbsp;be&nbsp;true&nbsp;and&nbsp;ONE.compareTo(TWO)&nbsp;is&nbsp;guaranteed&nbsp;to&nbsp;be&nbsp;less&nbsp;than&nbsp;one.<br/>C.&nbsp;The&nbsp;Example&nbsp;values&nbsp;cannot&nbsp;be&nbsp;used&nbsp;in&nbsp;a&nbsp;raw&nbsp;java.util.HashMap.;&nbsp;instead,&nbsp;the&nbsp;programmer&nbsp;must&nbsp;use&nbsp;a&nbsp;java.util.EnumMap.<br/>D.&nbsp;The&nbsp;Example&nbsp;values&nbsp;can&nbsp;be&nbsp;used&nbsp;in&nbsp;a&nbsp;java.util.SortedSet,&nbsp;but&nbsp;the&nbsp;set&nbsp;will&nbsp;not&nbsp;be&nbsp;sorted&nbsp;because&nbsp;enumerated&nbsp;Type&nbsp;do&nbsp;not&nbsp;implement&nbsp;java.lang.Comparable.<br/><br/>Answer:&nbsp;A<br/><br/>涉及知识点：<br/>1.枚举类型可以看作是一个特殊的类，枚举的成员可以看作是static&nbsp;final的常量；<br/>2.枚举实现了Comparable接口。<br/><br/>解析：<br/>A选项正确，枚举的成员可以看作是static&nbsp;final的常量，(ONE&nbsp;==&nbsp;ONE)&nbsp;和&nbsp;ONE.equals(ONE)都是一定为true的；<br/>B选项不正确，枚举不能使用“&lt;”比较大小，可以使用compareTo方法；<br/>C选项不正确，HashMap中可以使用枚举；<br/>D选项不正确，枚举实现了Comparable接口。<br/><br/><br/>测试代码如下：<br/>Test73.java:<br/><pre name="code" class="brush: java;">
import&nbsp;java.io.*;
import&nbsp;java.util.*;

enum&nbsp;testEnum&nbsp;{
&#160;&#160;&#160;&#160;ONE,TWO,THREE
}

public&nbsp;class&nbsp;Test73&nbsp;{
&#160;&#160;&#160;&#160;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(testEnum.ONE&nbsp;==&nbsp;testEnum.ONE);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(testEnum.ONE.equals(testEnum.ONE));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(testEnum.ONE.compareTo(testEnum.THREE));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;HashMap&lt;Enum,&nbsp;Enum&gt;&nbsp;hm&nbsp;=&nbsp;new&nbsp;HashMap&lt;Enum,&nbsp;Enum&gt;();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;hm.put(testEnum.ONE,&nbsp;testEnum.TWO);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(hm.get(testEnum.ONE));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SortedSet&lt;Enum&gt;&nbsp;ss&nbsp;=&nbsp;new&nbsp;TreeSet&lt;Enum&gt;();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ss.add(testEnum.TWO);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ss.add(testEnum.THREE);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ss.add(testEnum.ONE);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for&nbsp;(Enum&nbsp;e&nbsp;:&nbsp;ss)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.print(e&nbsp;+&nbsp;&#34;&nbsp;&#34;);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;}
}
</pre>]]></summary>
	  <link rel="alternate" type="text/html" href="http://mgc.name/default.asp?id=884" /> 
	  <id>http://mgc.name/default.asp?id=884</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Java泛型类的边界控制——SCJP真题解析Q72]]></title>
	  <author>
		 <name>Magci</name>
		 <uri>http://mgc.name/</uri>
		 <email>webmaster@mgc.name</email>
	  </author>
	  <category term="" scheme="http://mgc.name/default.asp?cateID=11" label="J2SE" /> 
	  <updated>2010-06-28T15:49:22+08:00</updated>
	  <published>2010-06-28T15:49:22+08:00</published>
		  <summary type="html"><![CDATA[<span style="color:red">声明：本套SCJP(310-55)试题是08年版本，请报考SCJP的朋友绕道去找最新试题，我没有考过也不去考SCJP，只是拿来复习巩固Java基础的，解析部分仅仅是本人的拙见，如有错误欢迎指正。</span><br/><br/>QUESTION&nbsp;72:<br/>Given&nbsp;the&nbsp;exhibit:<br/><pre name="code" class="brush: java;">
//ins&#101;rt&nbsp;code&nbsp;here

&#160;&#160;&#160;&#160;private&nbsp;N&nbsp;min,&nbsp;max;

&#160;&#160;&#160;&#160;public&nbsp;N&nbsp;getMin()&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&nbsp;min;
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;N&nbsp;getMax()&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&nbsp;max;
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;void&nbsp;add(N&nbsp;added)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&nbsp;(min&nbsp;==&nbsp;null&nbsp;||&nbsp;added.doubleValue()&nbsp;&lt;&nbsp;min.doubleValue())&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;min&nbsp;=&nbsp;added;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&nbsp;(max&nbsp;==&nbsp;null&nbsp;||&nbsp;added.doubleValue()&nbsp;&gt;&nbsp;max.doubleValue())&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;max&nbsp;=&nbsp;added;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;}
}
</pre><br/>Which&nbsp;two,&nbsp;ins&#101;rted&nbsp;at&nbsp;line&nbsp;1&nbsp;will&nbsp;allow&nbsp;the&nbsp;code&nbsp;to&nbsp;compile?&nbsp;(Choose&nbsp;Two)<br/>A.&nbsp;public&nbsp;class&nbsp;MinMax&lt;?&gt;&nbsp;{<br/>B.&nbsp;public&nbsp;class&nbsp;MinMax&lt;?&nbsp;extends&nbsp;Number&gt;&nbsp;{<br/>C.&nbsp;public&nbsp;class&nbsp;MinMax&lt;N&nbsp;extends&nbsp;Object&gt;&nbsp;{<br/>D.&nbsp;public&nbsp;class&nbsp;MinMax&lt;N&nbsp;extends&nbsp;Number&gt;&nbsp;{<br/>E.&nbsp;public&nbsp;class&nbsp;MinMax&lt;?&nbsp;extends&nbsp;Object&gt;&nbsp;{<br/>F.&nbsp;public&nbsp;class&nbsp;MinMax&lt;N&nbsp;extends&nbsp;Integer&gt;&nbsp;{<br/><br/>Answer:&nbsp;D,F<br/><br/>涉及知识点：<br/>泛型的边界控制：<br/>&#160;&#160;&#160;&#160;格式：&lt;B&nbsp;extends&nbsp;A&gt;；<br/>&#160;&#160;&#160;&#160;说明元素的范围是A类型的子类型并且是B类型的父类型（包含A类型和B类型）。<br/><br/>解析：<br/>N的实例使用doubleValue方法，选项中Object类没有doubleValue方法，Number和Integer类中有doubleValue方法，因此选项DF正确。]]></summary>
	  <link rel="alternate" type="text/html" href="http://mgc.name/default.asp?id=883" /> 
	  <id>http://mgc.name/default.asp?id=883</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Java的HashMap中使用自定义类——SCJP真题解析Q71]]></title>
	  <author>
		 <name>Magci</name>
		 <uri>http://mgc.name/</uri>
		 <email>webmaster@mgc.name</email>
	  </author>
	  <category term="" scheme="http://mgc.name/default.asp?cateID=11" label="J2SE" /> 
	  <updated>2010-06-28T14:12:48+08:00</updated>
	  <published>2010-06-28T14:12:48+08:00</published>
		  <summary type="html"><![CDATA[<span style="color:red">声明：本套SCJP(310-55)试题是08年版本，请报考SCJP的朋友绕道去找最新试题，我没有考过也不去考SCJP，只是拿来复习巩固Java基础的，解析部分仅仅是本人的拙见，如有错误欢迎指正。</span><br/><br/>QUESTION&nbsp;71:<br/>Given&nbsp;the&nbsp;exhibit:<br/><pre name="code" class="brush: java;">
public&nbsp;class&nbsp;Key&nbsp;{
&#160;&#160;&#160;&#160;private&nbsp;long&nbsp;id1;
&#160;&#160;&#160;&#160;private&nbsp;long&nbsp;id2;

&#160;&#160;&#160;&#160;//class&nbsp;key&nbsp;methods
}
</pre><br/>A&nbsp;programmer&nbsp;is&nbsp;developing&nbsp;a&nbsp;class&nbsp;Key,&nbsp;that&nbsp;will&nbsp;be&nbsp;used&nbsp;as&nbsp;a&nbsp;key&nbsp;in&nbsp;a&nbsp;standard&nbsp;java.util.HashMap.<br/>Which&nbsp;two&nbsp;methods&nbsp;should&nbsp;be&nbsp;overridden&nbsp;to&nbsp;assure&nbsp;that&nbsp;key&nbsp;works&nbsp;correctly&nbsp;as&nbsp;a&nbsp;key?&nbsp;(choose&nbsp;two)<br/>A.&nbsp;public&nbsp;int&nbsp;hashCode()<br/>B.&nbsp;public&nbsp;boolean&nbsp;equals(Key&nbsp;k)<br/>C.&nbsp;public&nbsp;int&nbsp;compareTo(Object&nbsp;o)<br/>D.&nbsp;public&nbsp;boolean&nbsp;equals(Object&nbsp;o)<br/><br/>Answer:&nbsp;A,D<br/><br/>涉及知识点：<br/>在HashMap中使用的类必须重写equals和hashCode方法。<br/><br/>解析：<br/>首先排除选项C，不需要重写compareTo方法；<br/>Object中的equals方法为public&nbsp;boolean&nbsp;equals(Object&nbsp;o)，因此选项AD正确。<br/><br/><br/>测试代码如下：<br/>Key.java:<br/><pre name="code" class="brush: java;">
import&nbsp;java.io.*;
import&nbsp;java.util.*;

public&nbsp;class&nbsp;Key&nbsp;{
&#160;&#160;&#160;&#160;private&nbsp;long&nbsp;id1;
&#160;&#160;&#160;&#160;private&nbsp;long&nbsp;id2;

&#160;&#160;&#160;&#160;public&nbsp;long&nbsp;getId1()&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&nbsp;this.id1;
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;long&nbsp;getId2()&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&nbsp;this.id2;
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;Key(long&nbsp;id1,&nbsp;long&nbsp;id2)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this.id1&nbsp;=&nbsp;id1;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this.id2&nbsp;=&nbsp;id2;
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;String&nbsp;toString()&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&nbsp;id1&nbsp;+&nbsp;&#34;,&#34;&nbsp;+&nbsp;id2;
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;boolean&nbsp;equals(Object&nbsp;o)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&nbsp;(o&nbsp;instanceof&nbsp;Key)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Key&nbsp;k&nbsp;=&nbsp;(Key)o;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&nbsp;this.id1&nbsp;==&nbsp;k.getId1()&nbsp;&amp;&amp;&nbsp;this.id2&nbsp;==&nbsp;k.getId2();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}&nbsp;else&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&nbsp;super.equals(o);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;int&nbsp;hashCode()&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&nbsp;new&nbsp;Long(this.id1).hashCode();
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;HashMap&lt;Key,&nbsp;Key&gt;&nbsp;hm&nbsp;=&nbsp;new&nbsp;HashMap&lt;Key,&nbsp;Key&gt;();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;hm.put(new&nbsp;Key(1,&nbsp;2),&nbsp;new&nbsp;Key(2,&nbsp;1));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(hm.get(new&nbsp;Key(1,&nbsp;2)));
&#160;&#160;&#160;&#160;}
}
</pre>]]></summary>
	  <link rel="alternate" type="text/html" href="http://mgc.name/default.asp?id=882" /> 
	  <id>http://mgc.name/default.asp?id=882</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Java中的优先级队列PriorityQueue——SCJP真题解析Q70]]></title>
	  <author>
		 <name>Magci</name>
		 <uri>http://mgc.name/</uri>
		 <email>webmaster@mgc.name</email>
	  </author>
	  <category term="" scheme="http://mgc.name/default.asp?cateID=11" label="J2SE" /> 
	  <updated>2010-06-28T13:18:49+08:00</updated>
	  <published>2010-06-28T13:18:49+08:00</published>
		  <summary type="html"><![CDATA[<span style="color:red">声明：本套SCJP(310-55)试题是08年版本，请报考SCJP的朋友绕道去找最新试题，我没有考过也不去考SCJP，只是拿来复习巩固Java基础的，解析部分仅仅是本人的拙见，如有错误欢迎指正。</span><br/><br/>QUESTION&nbsp;70:<br/>Given&nbsp;the&nbsp;exhibit:<br/><pre name="code" class="brush: java;">
import&nbsp;java.io.*;
import&nbsp;java.util.*;

public&nbsp;class&nbsp;PQ&nbsp;{
&#160;&#160;&#160;&#160;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;PriorityQueue&lt;String&gt;&nbsp;pq&nbsp;=&nbsp;new&nbsp;PriorityQueue&lt;String&gt;();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pq.add(&#34;carrot&#34;);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pq.add(&#34;apple&#34;);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pq.add(&#34;banana&#34;);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(pq.poll()&nbsp;+&nbsp;&#34;:&#34;&nbsp;+&nbsp;pq.peek());
&#160;&#160;&#160;&#160;}
}
</pre><br/>What&nbsp;is&nbsp;the&nbsp;result?<br/>A.&nbsp;apple:apple<br/>B.&nbsp;carrot:apple<br/>C.&nbsp;apple:banana<br/>D.&nbsp;banana:apple<br/>E.&nbsp;carrot:carrot<br/>F.&nbsp;carrot:banana<br/><br/>Answer:&nbsp;C<br/><br/>涉及知识点：<br/>PriorityQueue优先级队列：<br/>&#160;&#160;&#160;&#160;1.一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序，或者根据构造队列时提供的&nbsp;Comparator&nbsp;进行排序，具体取决于所使用的构造方法。优先级队列不允许使用&nbsp;null&nbsp;元素。依靠自然顺序的优先级队列还不允许插入不可比较的对象（这样做可能导致&nbsp;ClassCastException）；<br/>&#160;&#160;&#160;&#160;2.此队列的头&nbsp;是按指定排序方式确定的最小&nbsp;元素。如果多个元素都是最小值，则头是其中一个元素——选择方法是任意的。队列获取操作&nbsp;poll、remove、peek&nbsp;和&nbsp;element&nbsp;访问处于队列头的元素；<br/>&#160;&#160;&#160;&#160;3.poll()方法：获取并移除此队列的头，如果此队列为空，则返回&nbsp;null；<br/>&#160;&#160;&#160;&#160;4.peek()方法：获取但不移除此队列的头；如果此队列为空，则返回&nbsp;null。<br/><br/>解析：<br/>优先级队列不以先进先出的方式排序，而是通过自然顺序或者根据提供的Comparator进行排序；<br/>本程序中pq的各元素安装字符串排序方法进行排序，从头到尾依次是&#34;apple&#34;,&#34;banana&#34;,&#34;carrot&#34;；<br/>pq.poll()方法取出并移除&#34;apple&#34;，此时队列从头到尾依次是&#34;banana&#34;,&#34;carrot&#34;；<br/>pq.peek()方法取出不移除&#34;banana&#34;；<br/>因此输出&#34;apple:banana&#34;，选项C正确。]]></summary>
	  <link rel="alternate" type="text/html" href="http://mgc.name/default.asp?id=881" /> 
	  <id>http://mgc.name/default.asp?id=881</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Java集合中泛型的边界控制——SCJP真题解析Q69]]></title>
	  <author>
		 <name>Magci</name>
		 <uri>http://mgc.name/</uri>
		 <email>webmaster@mgc.name</email>
	  </author>
	  <category term="" scheme="http://mgc.name/default.asp?cateID=11" label="J2SE" /> 
	  <updated>2010-06-28T10:43:30+08:00</updated>
	  <published>2010-06-28T10:43:30+08:00</published>
		  <summary type="html"><![CDATA[<span style="color:red">声明：本套SCJP(310-55)试题是08年版本，请报考SCJP的朋友绕道去找最新试题，我没有考过也不去考SCJP，只是拿来复习巩固Java基础的，解析部分仅仅是本人的拙见，如有错误欢迎指正。</span><br/><br/>QUESTION&nbsp;69:<br/>DRAG&nbsp;Dro&#112;<br/>Place&nbsp;a&nbsp;result&nbsp;onto&nbsp;each&nbsp;method&nbsp;call&nbsp;to&nbsp;indicate&nbsp;what&nbsp;would&nbsp;happen&nbsp;if&nbsp;the&nbsp;method&nbsp;call<br/>were&nbsp;ins&#101;rted&nbsp;at&nbsp;line&nbsp;9.&nbsp;Note:&nbsp;Results&nbsp;can&nbsp;be&nbsp;used&nbsp;more&nbsp;than&nbsp;once.<br/><pre name="code" class="brush: java;">
import&nbsp;java.io.*;
import&nbsp;java.util.*;

class&nbsp;A&nbsp;{

}

class&nbsp;B&nbsp;extends&nbsp;A&nbsp;{

}

public&nbsp;class&nbsp;Test69&nbsp;{
&#160;&#160;&#160;&#160;
&#160;&#160;&#160;&#160;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;List&lt;A&gt;&nbsp;listA&nbsp;=&nbsp;new&nbsp;LinkedList&lt;A&gt;();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;List&lt;B&gt;&nbsp;listB&nbsp;=&nbsp;new&nbsp;LinkedList&lt;B&gt;();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;List&lt;Object&gt;&nbsp;listO&nbsp;=&nbsp;new&nbsp;LinkedList&lt;Object&gt;();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//ins&#101;rt&nbsp;code&nbsp;here
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;static&nbsp;void&nbsp;m1(List&lt;?&nbsp;extends&nbsp;A&gt;&nbsp;list)&nbsp;{
&#160;&#160;&#160;&#160;
&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;
&#160;&#160;&#160;&#160;public&nbsp;static&nbsp;void&nbsp;m2(List&lt;A&gt;&nbsp;list)&nbsp;{
&#160;&#160;&#160;&#160;
&#160;&#160;&#160;&#160;}
}
</pre><br/>Method&nbsp;Calls&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Results,place&nbsp;here&nbsp;&nbsp;Results,sel&#101;ct&nbsp;from&nbsp;these<br/>m1(listA);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Place&nbsp;here&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Does&nbsp;not&nbsp;compile.<br/>m1(listB);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Place&nbsp;here&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compiles&nbsp;and&nbsp;runs&nbsp;without&nbsp;error.&nbsp;<br/>m1(listO);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Place&nbsp;here&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;An&nbsp;exception&nbsp;is&nbsp;thown&nbsp;at&nbsp;runtime.<br/>m2(listA);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Place&nbsp;here<br/>m2(listB);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Place&nbsp;here<br/>m2(listO);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Place&nbsp;here<br/><br/>Answer:&nbsp;<br/>m1(listA);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compiles&nbsp;and&nbsp;runs&nbsp;without&nbsp;error.&nbsp;<br/>m1(listB);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compiles&nbsp;and&nbsp;runs&nbsp;without&nbsp;error.&nbsp;<br/>m1(listO);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Does&nbsp;not&nbsp;compile.<br/>m2(listA);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compiles&nbsp;and&nbsp;runs&nbsp;without&nbsp;error.&nbsp;<br/>m2(listB);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Does&nbsp;not&nbsp;compile.<br/>m2(listO);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Does&nbsp;not&nbsp;compile.<br/><br/>涉及知识点：<br/>泛型的边界控制（上界）：<br/>&#160;&#160;&#160;&#160;1.格式：&lt;?&nbsp;extends&nbsp;A&gt;，说明元素的范围是A类型或其子类型；<br/>&#160;&#160;&#160;&#160;2.使用这种方式声明，只能取得实例的相关信息或者移除某些元素，不能添加或修改实例的元素，因为只知道其中的元素是A类型或其子类型，不能确定具体是什么类型，而泛型中加入某个类型的元素，取出的元素也是这个类型，所以不能加入或修改元素；<br/>&#160;&#160;&#160;&#160;3.使用&lt;A&gt;声明的泛型，其元素只能是A类型的，不能是其子类型。<br/><br/>解析：<br/>m1(List&lt;?&nbsp;extends&nbsp;A&gt;&nbsp;list)，参数的元素可以是A类型或其子类型，m1(listA);&nbsp;m1(listB);可以编译运行，m1(listO);编译出错；<br/>m2(List&lt;A&gt;&nbsp;list)，参数只能是A类型，m2(listA);可以编译运行，m2(listB);m2(listO);编译出错。]]></summary>
	  <link rel="alternate" type="text/html" href="http://mgc.name/default.asp?id=880" /> 
	  <id>http://mgc.name/default.asp?id=880</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Java中Map的泛型——SCJP真题解析Q68]]></title>
	  <author>
		 <name>Magci</name>
		 <uri>http://mgc.name/</uri>
		 <email>webmaster@mgc.name</email>
	  </author>
	  <category term="" scheme="http://mgc.name/default.asp?cateID=11" label="J2SE" /> 
	  <updated>2010-06-25T17:04:24+08:00</updated>
	  <published>2010-06-25T17:04:24+08:00</published>
		  <summary type="html"><![CDATA[<span style="color:red">声明：本套SCJP(310-55)试题是08年版本，请报考SCJP的朋友绕道去找最新试题，我没有考过也不去考SCJP，只是拿来复习巩固Java基础的，解析部分仅仅是本人的拙见，如有错误欢迎指正。</span><br/><br/>QUESTION&nbsp;68:<br/>DRAG&nbsp;Dro&#112;<br/>Place&nbsp;the&nbsp;code&nbsp;into&nbsp;position&nbsp;to&nbsp;cr&#101;ate&nbsp;a&nbsp;class&nbsp;that&nbsp;maps&nbsp;from&nbsp;Strings&nbsp;to&nbsp;integer<br/>values.<br/>The&nbsp;result&nbsp;of&nbsp;execution&nbsp;must&nbsp;be&nbsp;[one].&nbsp;Some&nbsp;options&nbsp;may&nbsp;be&nbsp;used&nbsp;more&nbsp;than&nbsp;once.<br/><pre name="code" class="brush: java;">
import&nbsp;java.io.*;
import&nbsp;java.util.*;

public&nbsp;class&nbsp;NumberNames&nbsp;{
&#160;&#160;&#160;&#160;
&#160;&#160;&#160;&#160;private&nbsp;HashMap&lt;/*Place&nbsp;here*/,&nbsp;/*Place&nbsp;here*/&gt;&nbsp;map&nbsp;=&nbsp;new&nbsp;HashMap&lt;/*Place&nbsp;here*/,&nbsp;/*Place&nbsp;here*//*Place&nbsp;here*/;

&#160;&#160;&#160;&#160;public&nbsp;void&nbsp;put(String&nbsp;name,&nbsp;int&nbsp;value)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;map.put(/*Place&nbsp;here*/,&nbsp;/*Place&nbsp;here*/);
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;/*Place&nbsp;here*/&nbsp;getNames()&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&nbsp;map.keySet();
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;NumberNames&nbsp;nn&nbsp;=&nbsp;new&nbsp;NumberNames();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;nn.put(&#34;one&#34;,&nbsp;1);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(nn.getNames());
&#160;&#160;&#160;&#160;}
}
</pre><br/>Code:<br/>Set&lt;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&lt;Integer&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HashSet<br/>Set&lt;Integer,&nbsp;String&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&lt;int,&nbsp;String&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&lt;String,&nbsp;Integer&gt;<br/>Set&lt;String,&nbsp;int&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&lt;String&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NumberNames<br/>String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;map<br/><br/>Answer:&nbsp;<br/><pre name="code" class="brush: java;">
import&nbsp;java.io.*;
import&nbsp;java.util.*;

public&nbsp;class&nbsp;NumberNames&nbsp;{
&#160;&#160;&#160;&#160;
&#160;&#160;&#160;&#160;private&nbsp;HashMap&lt;String,&nbsp;Integer&gt;&nbsp;map&nbsp;=&nbsp;new&nbsp;HashMap&lt;String,&nbsp;Integer&gt;();

&#160;&#160;&#160;&#160;public&nbsp;void&nbsp;put(String&nbsp;name,&nbsp;int&nbsp;value)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;map.put(name,&nbsp;value);
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;Set&lt;String&gt;&nbsp;getNames()&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&nbsp;map.keySet();
&#160;&#160;&#160;&#160;}

&#160;&#160;&#160;&#160;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;NumberNames&nbsp;nn&nbsp;=&nbsp;new&nbsp;NumberNames();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;nn.put(&#34;one&#34;,&nbsp;1);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(nn.getNames());
&#160;&#160;&#160;&#160;}
}
</pre><br/><br/>涉及知识点：<br/>1.Map中存储的是键值对，泛型的写法是Map&lt;Object,&nbsp;Object&gt;；<br/>2.Map中支持自动装箱拆箱；<br/>3.Map的put(key,value)方法用来将键值对加入Map中；<br/>4.Map的keySet()方法返回包含键的Set集合。<br/><br/>解析：<br/>简单，不解释。]]></summary>
	  <link rel="alternate" type="text/html" href="http://mgc.name/default.asp?id=879" /> 
	  <id>http://mgc.name/default.asp?id=879</id> 
  </entry>	
		
</feed>
