﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-leochiang-随笔分类-技术文档</title><link>http://www.blogjava.net/leochiang/category/52294.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 03 Dec 2012 20:31:28 GMT</lastBuildDate><pubDate>Mon, 03 Dec 2012 20:31:28 GMT</pubDate><ttl>60</ttl><item><title>转：spring ioc原理</title><link>http://www.blogjava.net/leochiang/archive/2012/12/03/392367.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Mon, 03 Dec 2012 07:19:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/12/03/392367.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/392367.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/12/03/392367.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/392367.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/392367.html</trackback:ping><description><![CDATA[<div><a href="http://blog.csdn.net/it_man/article/details/4402245">http://blog.csdn.net/it_man/article/details/4402245</a></div><img src ="http://www.blogjava.net/leochiang/aggbug/392367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-12-03 15:19 <a href="http://www.blogjava.net/leochiang/archive/2012/12/03/392367.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java类体中的静态方法、非静态代码块{}、静态代码块static{}</title><link>http://www.blogjava.net/leochiang/archive/2012/10/29/390380.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Mon, 29 Oct 2012 02:07:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/10/29/390380.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/390380.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/10/29/390380.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/390380.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/390380.html</trackback:ping><description><![CDATA[<div>执行顺序： 静态代码段 &nbsp; &nbsp; &nbsp;非静态代码段 &nbsp; 构造函数<br />而静态方法是被动执行的 &nbsp;在调用的时候执行<a href="http://www.cn-java.com/www1/?uid-694384-action-viewspace-itemid-84972"><br /><br />http://www.cn-java.com/www1/?uid-694384-action-viewspace-itemid-84972<br /><br /><br /><br /></a></div><img src ="http://www.blogjava.net/leochiang/aggbug/390380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-10-29 10:07 <a href="http://www.blogjava.net/leochiang/archive/2012/10/29/390380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>快速排序</title><link>http://www.blogjava.net/leochiang/archive/2012/10/23/390126.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Tue, 23 Oct 2012 12:58:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/10/23/390126.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/390126.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/10/23/390126.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/390126.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/390126.html</trackback:ping><description><![CDATA[<div><span style="font-family: Simsun; font-size: 12px; line-height: 18px; text-align: -webkit-left; background-color: #ebebeb; ">分治法的基本思想是：将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题，然后将这些子问题的解组合为原问题的解。<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;com.thoughtworks;<br /><br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;QSort&nbsp;<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;args<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;自动生成方法存根</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quicksort&nbsp;qs&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;quicksort();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;data[]&nbsp;=&nbsp;{44,22,2,32,54,22,88,77,99,11};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qs.data&nbsp;=&nbsp;data;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qs.sort(0,&nbsp;qs.data.length-1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qs.display();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /><br /><span style="color: #0000FF; ">class</span>&nbsp;quicksort<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;data[];<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;partition(<span style="color: #0000FF; ">int</span>&nbsp;sortArray[],<span style="color: #0000FF; ">int</span>&nbsp;low,<span style="color: #0000FF; ">int</span>&nbsp;hight)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;key&nbsp;=&nbsp;sortArray[low];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(low&lt;hight)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(low&lt;hight&nbsp;&amp;&amp;&nbsp;sortArray[hight]&gt;=key)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hight--;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sortArray[low]&nbsp;=&nbsp;sortArray[hight];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(low&lt;hight&nbsp;&amp;&amp;&nbsp;sortArray[low]&lt;=key)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sortArray[hight]&nbsp;=&nbsp;sortArray[low];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sortArray[low]&nbsp;=&nbsp;key;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;low;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;sort(<span style="color: #0000FF; ">int</span>&nbsp;low,<span style="color: #0000FF; ">int</span>&nbsp;hight)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(low&lt;hight)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;result&nbsp;=&nbsp;partition(data,low,hight);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(low,result-1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(result+1,hight);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;display()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;i=0;i&lt;data.length;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(data[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("&nbsp;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><span style="font-family: Simsun; font-size: 12px; line-height: 18px; text-align: -webkit-left; background-color: #ebebeb; "><br /></span><div>2 11 22 22 32 44 54 77 88 99&nbsp;</div><span style="font-family: Simsun; font-size: 12px; line-height: 18px; text-align: -webkit-left; background-color: #ebebeb; "><br /><br /></span></div><img src ="http://www.blogjava.net/leochiang/aggbug/390126.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-10-23 20:58 <a href="http://www.blogjava.net/leochiang/archive/2012/10/23/390126.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>aa</title><link>http://www.blogjava.net/leochiang/archive/2012/10/02/388967.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Tue, 02 Oct 2012 13:18:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/10/02/388967.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/388967.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/10/02/388967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/388967.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/388967.html</trackback:ping><description><![CDATA[<a href="http://robinsoncrusoe.iteye.com/blog/808526">http://robinsoncrusoe.iteye.com/blog/808526</a>&nbsp;<img src ="http://www.blogjava.net/leochiang/aggbug/388967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-10-02 21:18 <a href="http://www.blogjava.net/leochiang/archive/2012/10/02/388967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>9月笔试和面试总结</title><link>http://www.blogjava.net/leochiang/archive/2012/09/26/388562.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Wed, 26 Sep 2012 02:22:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/09/26/388562.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/388562.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/09/26/388562.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/388562.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/388562.html</trackback:ping><description><![CDATA[1 昨天一天的川大行，总共投递简历3次，笔试2次，面试1次<br />首先是笔试： &nbsp;&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; 1 松翰的笔试： &nbsp;这个公司主要做C和C++，并且熟悉linux系统，这个宣讲会是去玩的，然后参加了笔试。笔试题是英语填词，C部分，C++部分，题目很基础，C部分做的不错 ，C++部分没有做<br />&nbsp; &nbsp; &nbsp; &nbsp; 2 优酷土豆的笔试： &nbsp;笔试的时间是90分钟，然后题目涉及广泛从算法 数据结构到海量数据处理，还有一些自己感觉莫名其妙的题目。做的情况嘛 自己没什么信心，就当去做一下题目回来针对学习（微软面试100题系列）。<br /><br />其次是面试：<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; 松翰的面试： &nbsp;面试官通过简历对与公司有意义或者他本人有想法的东西，鉴于公司的研发内容问的我是linux和一些apache（web服务器）的内容，还有一些我不曾了解的领域，自动化检测（脚本的吧？）。总结下还是平时积累很重要。<br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; 松翰 &nbsp;面试的知识点：<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1 &nbsp; apache与tomcat的区别： &nbsp;<br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">解析一&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " /><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">支持静态页，</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">tomcat</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">支持动态的，比如servlet等，&nbsp;</span><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">一般使用</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">+</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">tomcat</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">的话，</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">只是作为一个转发，对jsp的处理是由</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">tomcat</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">来处理的。&nbsp;</span><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">apache可以支持phpcgiperl,但是要使用java的话，你需要</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">tomcat</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">在</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">后台支撑，将java请求由</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">转发给</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">tomcat</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">处 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 理。&nbsp;</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">是web服务器，</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">tomcat</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">是应用（java）服务器，它只是一个servlet(jsp也翻译成servlet)容器，可以认为是</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">的扩展，但是可以独立于</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">运行。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " /><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;这两个有以下几点可以比较的：&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">1、两者都是</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">组织开发的&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">2、两者都有HTTP服务的功能&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">3、两者都是免费的&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">不同点：&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " /><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">是专门用了提供HTTP服务的，以及相关配置的（例如虚拟主机、URL转发等等）&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " /><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tomcat</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">是</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">Apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">组织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器&nbsp;</span>&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">解析二：&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " /><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;APACHE</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">是一个web服务器环境程序 启用他可以作为web服务器使用 不过只支持静态网页 如(asp,php,cgi,jsp)等动态网页的就不行 &nbsp;</span><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">如果要在</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">APACHE</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">环境下运行jsp 的话就需要一个解释器来执行jsp网页 而这个jsp解释器就是</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">TOMCAT</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">, 为什么还要JDK呢？因为jsp需要连接数据库的话 就要jdk</span>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">来提供连接数据库的驱程，所以要运行jsp的web服务器平台就需要</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">APACHE</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">+</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">TOMCAT</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">+JDK&nbsp;</span><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">整合的好处是：&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">如果客户端请求的是静态页面，则只需要</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">Apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">服务器响应请求&nbsp;</span><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">如果客户端请求动态页面，则是</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">Tomcat</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">服务器响应请求&nbsp;</span><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">因为jsp是服务器端解释代码的，这样整合就可以减少</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">Tomcat</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">的服务开销&nbsp;</span><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">C是一个结构化语言，如谭老爷子所说：它的重点在于算法和数据结构。C程序的设计首要考虑的</span>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">是</span><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">如何通过一个过程，对输入（或环境条件）进行运算处理得到输出（或实现过程（事务）控制），而对于C++，首要考虑的是如何构造一个对象模型，让这个模型能够契合与之对应的问题域，这样就可以通过获取对象的状态信息得到输出或实现过程（事务）控制。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">解析三：&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " /><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">:侧重于http server&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " /><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tomcat</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">:侧重于servlet引擎，如果以standalone方式运行，功能上与</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">等效 ， 支持JSP，但对静态网页不太理想；&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " /><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">是web服务器，</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">tomcat</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">是应用（java）服务器，它只是一个servlet(jsp也翻译成servlet)容器，可以认为是</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">的扩展，但是可以独立于</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">运行。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; " />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">换句话说，</span><strong style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; box-sizing: border-box; color: #4b4b4b; font-size: 13px; line-height: 20px; background-color: #ffffff; ">apache</strong><span style="color: #4b4b4b; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 20px; background-color: #ffffff; ">是一辆卡车，上面可以装一些东西如html等。但是不能装水，要装水必须要有容器（桶），而这个桶也可以不放在卡车上。</span>&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; 2 linux基础知识<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; linux自启动设置：<a href="http://www.xxlinux.com/linux/article/accidence/technique/20070719/9065.html">http://www.xxlinux.com/linux/article/accidence/technique/20070719/9065.html</a>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><h1><br /></h1><img src ="http://www.blogjava.net/leochiang/aggbug/388562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-09-26 10:22 <a href="http://www.blogjava.net/leochiang/archive/2012/09/26/388562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>collection框架</title><link>http://www.blogjava.net/leochiang/archive/2012/08/26/386293.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Sun, 26 Aug 2012 03:24:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/08/26/386293.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/386293.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/08/26/386293.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/386293.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/386293.html</trackback:ping><description><![CDATA[<p style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #454545; line-height: 25px; background-color: #ffffff; "><strong>Collection框架</strong></p><p style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #454545; line-height: 25px; background-color: #ffffff; ">&nbsp; &nbsp; &nbsp; &nbsp;集合框架(Collection&nbsp;Framework)泛指java.util包的若干个类和接口.如Collection,List,ArrayList,LinkedList,Vector(自动增长数组),HashSet,HashMap等.&nbsp;集合框架中的类主要封装的是典型的数据结构,如动态数组,链表,堆栈,集合,哈希表等.</p><p style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; background-color: #ffffff; "><font color="#454545">集合框架类似编程中经常用到的工具类,使得编码这专注于业务层的实现,不需要从底层实现相关细节&#8212;&#8220;数据结构的封装&#8221;和&#8221;典型算法的实现&#8221;.</font><br /><font color="#454545">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</font><a href="http://weipeng2k.iteye.com/blog/286620" style="color: #454545; ">http://weipeng2k.iteye.com/blog/286620</a><font color="#454545">&nbsp;</font><br /><span style="color: #000000; text-align: center; text-indent: 28px; font-size: small; ">&nbsp; &nbsp; &nbsp; 集合框架的最根基的接口</span><span style="color: #000000; text-align: center; text-indent: 28px; font-size: small; ">Collection</span><span style="color: #000000; text-align: center; text-indent: 28px; font-size: small; ">，看一下它的声明</span><span style="color: #000000; text-align: center; text-indent: 28px; font-size: small; ">public interface Collection&lt;E&gt; extends Iterable&lt;E&gt;</span><span style="color: #000000; text-align: center; text-indent: 28px; font-size: small; ">，可以看出它继承了</span><span style="color: #000000; text-align: center; text-indent: 28px; font-size: small; ">Iterable</span><span style="color: #000000; text-align: center; text-indent: 28px; font-size: small; ">（可迭代的）接口，就相当于说</span><span style="color: #000000; text-align: center; text-indent: 28px; font-size: small; ">Collection</span><span style="color: #000000; text-align: center; text-indent: 28px; font-size: small; ">的具体实现类均可以利用</span><span style="color: #000000; text-align: center; text-indent: 28px; font-size: small; ">Iterator</span><span style="color: #000000; text-align: center; text-indent: 28px; font-size: small; ">了，这也是集合均支持增强型</span><span style="color: #000000; text-align: center; text-indent: 28px; font-size: small; ">For</span><span style="color: #000000; text-align: center; text-indent: 28px; font-size: small; ">循环的原因。<br /></span><a href="http://developer.51cto.com/art/200909/149543.htm" style="color: #454545; ">http://developer.51cto.com/art/200909/149543.htm<br /><span style="font-size:10.5pt;font-family:&quot;Times New Roman&quot;,&quot;serif&quot;;">Collection</span><span style="font-size:10.5pt;font-family:宋体;Times New Roman&quot;;Times New Roman&quot;;Times New Roman&quot;;">框架中实现比较要实现什么接口 &nbsp;</span><br /></a><a href="http://www.blogjava.net/fastunit/archive/2008/04/08/191533.html">http://www.blogjava.net/fastunit/archive/2008/04/08/191533.html</a>&nbsp;<br /></p><div style="text-align: center; text-indent: 28px; "><font size="2"><br /></font><span style="color: #333333; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 17px; text-align: -webkit-auto; text-indent: 0px; background-color: #ffffff; ">一个类实现了Camparable接口则表明这个类的对象之间是可以相互比较的，这个类对象组成的集合就可以直接使用sort方法排序。</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; color: #333333; font-size: 13px; line-height: 17px; text-align: -webkit-auto; text-indent: 0px; background-color: #ffffff; " /><span style="color: #333333; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 17px; text-align: -webkit-auto; text-indent: 0px; background-color: #ffffff; ">Comparator可以看成一种算法的实现，将算法和数据分离，Comparator也可以在下面两种环境下使用：</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; color: #333333; font-size: 13px; line-height: 17px; text-align: -webkit-auto; text-indent: 0px; background-color: #ffffff; " /><span style="color: #333333; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 17px; text-align: -webkit-auto; text-indent: 0px; background-color: #ffffff; ">1、类的设计师没有考虑到比较问题而没有实现Comparable，可以通过Comparator来实现排序而不必改变对象本身</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; color: #333333; font-size: 13px; line-height: 17px; text-align: -webkit-auto; text-indent: 0px; background-color: #ffffff; " /><span style="color: #333333; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 17px; text-align: -webkit-auto; text-indent: 0px; background-color: #ffffff; ">2、可以使用多种排序标准，比如升序、降序等</span>&nbsp;<br /><br /><br /><p>ArrayList<span style="font-family: 宋体;Times New Roman&quot;;Times New Roman&quot;">和</span>Vector<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">都是使用数组方式存储数据，此数组元素数大于实际存储的数据以便增加和插入元素，它们都允许直接按序号索引元素，但是插入元素要涉及数组元素移动等内存操作，所以索引数据快而插入数据慢，</span>Vector<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">由于使用了</span>synchronized<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">方法（线程安全），通常性能上较</span>ArrayList<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">差，而</span>LinkedList<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">使用双向链表实现存储，按序号索引数据需要进行前向或后向遍历，但是插入数据时只需要记录本项的前后项即可，所以插入速度较快。</span></p>  <p>&nbsp;</p>  <p>LinkedList<span style="font-family: 宋体;Times New Roman&quot;;Times New Roman&quot;">也是线程不安全的，</span>LinkedList<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">提供了一些方法，使得</span>LinkedList<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">可以被当作堆栈和队列来使用。</span></p><font size="2"><br /><br /><br /></font></div><p>&nbsp;</p><img src ="http://www.blogjava.net/leochiang/aggbug/386293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-08-26 11:24 <a href="http://www.blogjava.net/leochiang/archive/2012/08/26/386293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java异常处理机制</title><link>http://www.blogjava.net/leochiang/archive/2012/08/12/385304.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Sat, 11 Aug 2012 23:44:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/08/12/385304.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/385304.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/08/12/385304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/385304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/385304.html</trackback:ping><description><![CDATA[<p>&nbsp; &nbsp; &nbsp;&nbsp;<a href="http://lavasoft.blog.51cto.com/62575/18920/">http://lavasoft.blog.51cto.com/62575/18920/</a>&nbsp;<br /><hr />&nbsp; &nbsp; &nbsp;&nbsp;Java<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">对异常进行了分类，不同类型的异常分别用不同的</span>Java<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">类表示，所有异常的根类为</span>java.lang.Throwable<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">，</span>Throwable<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">下面又派生了两个子类：</span>Error<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">和</span>Exception<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">，</span>Error <span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">表示应用程序本身无法克服和恢复的一种严重问题，程序只有死的份了，例如，说内存溢出和线程死锁等系统问题。</span>Exception<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">表示程序还能够克服和恢复的问题，其中又分为系统异常和普通异常，系统异常是软件本身缺陷所导致的问题，也就是软件开发人员考虑不周所导致的问题，软件使用者无法克服和恢复这种问题，但在这种问题下还可以让软件系统继续运行或者让软件死掉，例如，数组脚本越界（</span>ArrayIndexOutOfBoundsException<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">），空指针异常（</span>NullPointerException<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">）、类转换异常（</span>ClassCastException<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">）；普通异常是运行环境的变化或异常所导致的问题，是用户能够克服的问题，例如，网络断线，硬盘空间不够，发生这样的异常后，程序不应该死掉。</span></p>  <p>&nbsp; &nbsp; &nbsp; java<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">为系统异常和普通异常提供了不同的解决方案，编译器强制普通异常必须</span>try..catch<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">处理或用</span>throws<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">声明继续抛给上层调用方法处理，所以普通异常也称为</span>checked<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">异常，而系统异常可以处理也可以不处理，所以，编译器不强制用</span>try..catch<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">处理或用</span>throws<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">声明，所以系统异常也称为</span>unchecked<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">异常。</span></p>  <p>&nbsp; &nbsp; &nbsp;&nbsp;<span style="background-color: #ffffff; color: #555555; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 28px; ">Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。基本过程是用try语句块包住要监视的语句，如果在try语句块内出现异常，则异常会被抛出，你的代码在catch语句块中可以捕获到这个异常并做处理；还有以部分系统生成的异常在Java运行时自动抛出。你也可以通过throws关键字在方法上声明该方法要抛出异常，然后在方法内部通过throw抛出异常对象。finally语句块会在方法执行return之前执行，一般结构如下：</span></p><div style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #555555; line-height: 28px; background-color: #ffffff; ">&nbsp;try{<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;程序代码<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;}catch(异常类型1 异常的变量名1){<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;程序代码<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;}catch(异常类型2 异常的变量名2){<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;程序代码<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;}finally{<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;程序代码<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;}</div><div style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #555555; line-height: 28px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch语句可以有多个，用来匹配多个异常，匹配上多个中一个后，执行catch语句块时候仅仅执行匹配上的异常。catch的类型是Java语言中定义的或者程序员自己定义的，表示代码抛出异常的类型，异常的变量名表示抛出异常的对象的引用，如果catch捕获并匹配上了该异常，那么就可以直接用这个异常变量名，此时该异常变量名指向所匹配的异常，并且在catch代码块中可以直接引用。这一点非常非常的特殊和重要！</div><div style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #555555; line-height: 28px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Java异常处理的目的是提高程序的健壮性，你可以在catch和finally代码块中给程序一个修正机会，使得程序不因异常而终止或者流程发生以外的改变。同时，通过获取Java异常信息，也为程序的开发维护提供了方便，一般通过异常信息就很快就能找到出现异常的问题（代码）所在。</div><div style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #555555; line-height: 28px; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Java异常处理是Java语言的一大特色，也是个难点，掌握异常处理可以让写的代码更健壮和易于维护。<br /><hr /><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">下面是这几个类的层次图：<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /><span style="color: red; ">java.lang.Object</span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /><span style="color: red; ">&nbsp; java.lang.Throwable</span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /><span style="color: red; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.lang.Exception</span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /><span style="color: red; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.lang.RuntimeException</span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /><span style="color: red; ">&nbsp;&nbsp; java.lang.Error</span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /><span style="color: red; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.lang.ThreadDeath</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">下面四个类的介绍来自java api 文档。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">1、Throwable<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类（或其子类之一）的实例时，才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地，只有此类或其子类之一才可以是 catch 子句中的参数类型。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">两个子类的实例，Error 和 Exception，通常用于指示发生了异常情况。通常，这些实例是在异常情况的上下文中新近创建的，因此包含了相关的信息（比如堆栈跟踪数据）。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">2、Exception<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exception 类及其子类是 Throwable 的一种形式，它指出了合理的应用程序想要捕获的条件，表示程序本身可以处理的异常。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">3、Error<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Error 是 Throwable 的子类，表示仅靠程序本身无法恢复的严重错误，用于指示合理的应用程序不应该试图捕获的严重问题。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">在执行该方法期间，无需在方法中通过throws声明可能抛出但没有捕获的 Error 的任何子类，因为Java编译器不去检查它，也就是说，当程序中可能出现这类异常时，即使没有用try...catch语句捕获它，也没有用throws字句声明抛出它，还是会编译通过。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">4、RuntimeException<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。Java编译器不去检查它，也就是说，当程序中可能出现这类异常时，即使没有用try...catch语句捕获它，也没有用throws字句声明抛出它，还是会编译通过，这种异常可以通过改进代码实现来避免。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">5、ThreadDeath<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用 Thread 类中带有零参数的 stop 方法时，受害线程将抛出一个 ThreadDeath 实例。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;仅当应用程序在被异步终止后必须清除时才应该捕获这个类的实例。如果 ThreadDeath 被一个方法捕获，那么将它重新抛出非常重要，因为这样才能让该线程真正终止。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">如果没有捕获 ThreadDeath，则顶级错误处理程序不会输出消息。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;虽然 ThreadDeath 类是&#8220;正常出现&#8221;的，但它只能是 Error 的子类而不是 Exception 的子类，因为许多应用程序捕获所有出现的 Exception，然后又将其放弃。</div><hr /><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;对于可能出现异常的代码，有两种处理办法：<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;</strong><strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">第一、在方法中用try...catch语句捕获并处理异常，catach语句可以有多个，用来匹配多个异常。</strong>例如：<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />public void p(int x){<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;try{<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;...<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;}catch(Exception e){<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;...<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;}finally{<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;...<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;}<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">第二、对于处理不了的异常或者要转型的异常，在方法的声明处通过throws语句抛出异常。</strong>例如：</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">public void test1() throws MyException{<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;...<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;if(....){<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;throw new MyException();<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;}<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />}&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果每个方法都是简单的抛出异常，那么在方法调用方法的多层嵌套调用中，Java虚拟机会从出现异常的方法代码块中往回找，直到找到处理该异常的代码块为止。然后将异常交给相应的catch语句处理。如果Java虚拟机追溯到方法调用栈最底部main()方法时，如果仍然没有找到处理异常的代码块，将按照下面的步骤处理：<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一、调用异常的对象的printStackTrace()方法，打印方法调用栈的异常信息。<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第二、如果出现异常的线程为主线程，则整个程序运行终止；如果非主线程，则终止该线程，其他线程继续运行。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过分析思考可以看出，越早处理异常消耗的资源和时间越小，产生影响的范围也越小。因此，不要把自己能处理的异常也抛给调用者。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;还有一点，不可忽视：finally语句在任何情况下都必须执行的代码，这样可以保证一些在任何情况下都必须执行代码的可靠性。比如，在数据库查询异常的时候，应该释放JDBC连接等等。finally语句先于return语句执行，而不论其先后位置，也不管是否try块出现异常。finally语句唯一不被执行的情况是方法执行了System.exit()方法。System.exit()的作用是终止当前正在运行的 Java 虚拟机。finally语句块中不能通过给变量赋新值来改变return的返回值，也建议不要在finally块中使用return语句，没有意义还容易导致错误。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最后还应该注意一下异常处理的语法规则：<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第一、try语句不能单独存在，可以和catch、finally组成 try...catch...finally、try...catch、try...finally三种结构，catch语句可以有一个或多个，finally语句最多一个，try、catch、finally这三个关键字均不能单独使用。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第二、try、catch、finally三个代码块中变量的作用域分别独立而不能相互访问。如果要在三个块中都可以访问，则需要将变量定义到这些块的外面。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第三、多个catch块时候，Java虚拟机会匹配其中一个异常类或其子类，就执行这个catch块，而不会再执行别的catch块。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第四、throw语句后不允许有紧跟其他语句，因为这些没有机会执行。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第五、如果一个方法调用了另外一个声明抛出异常的方法，那么这个方法要么处理异常，要么声明抛出。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;那怎么判断一个方法可能会出现异常呢？一般来说，方法声明的时候用了throws语句，方法中有throw语句，方法调用的方法声明有throws关键字。</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw和throws关键字的区别<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw用来抛出一个异常，在方法体内。语法格式为：throw 异常对象。<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws用来声明方法可能会抛出什么异常，在方法名后，语法格式为：throws 异常类型1，异常类型2...异常类型n。</div><br /></div><img src ="http://www.blogjava.net/leochiang/aggbug/385304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-08-12 07:44 <a href="http://www.blogjava.net/leochiang/archive/2012/08/12/385304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>String ，StringBuffer与StringBuilder</title><link>http://www.blogjava.net/leochiang/archive/2012/08/10/385192.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Fri, 10 Aug 2012 00:21:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/08/10/385192.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/385192.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/08/10/385192.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/385192.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/385192.html</trackback:ping><description><![CDATA[<p style="margin-left:-8.9pt; text-indent:17.85pt">&nbsp; &nbsp;&nbsp;<span style="text-indent: 17.85pt; ">JAVA</span><span style="text-indent: 17.85pt; font-family: 宋体; ">平台提供了两个类：</span><span style="text-indent: 17.85pt; ">String</span><span style="text-indent: 17.85pt; font-family: 宋体; ">和</span><span style="text-indent: 17.85pt; ">StringBuffer</span><span style="text-indent: 17.85pt; font-family: 宋体; ">，它们可以储存和操作字符串，即包含多个字符的字符数据。</span><span style="text-indent: 17.85pt; ">String</span><span style="text-indent: 17.85pt; font-family: 宋体; ">类表示内容不可改变的字符串。而</span><span style="text-indent: 17.85pt; ">StringBuffer</span><span style="text-indent: 17.85pt; font-family: 宋体; ">类表示内容可以被修改的字符串。当你知道字符数据要改变的时候你就可以使用</span><span style="text-indent: 17.85pt; ">StringBuffer</span><span style="text-indent: 17.85pt; font-family: 宋体; ">。典型地，你可以使用</span><span style="text-indent: 17.85pt; ">StringBuffers</span><span style="text-indent: 17.85pt; font-family: 宋体; ">来动态构造字符数据。另外，</span><span style="text-indent: 17.85pt; ">String</span><span style="text-indent: 17.85pt; font-family: 宋体; ">实现了</span><span style="text-indent: 17.85pt; ">equals</span><span style="text-indent: 17.85pt; font-family: 宋体; ">方法，</span><span style="text-indent: 17.85pt; ">new String(&#8220;abc&#8221;).equals(new String(&#8220;abc&#8221;)</span><span style="text-indent: 17.85pt; font-family: 宋体; ">的结果为</span><span style="text-indent: 17.85pt; ">true,</span><span style="text-indent: 17.85pt; font-family: 宋体; ">而</span><span style="text-indent: 17.85pt; ">StringBuffer</span><span style="text-indent: 17.85pt; font-family: 宋体; ">没有实现</span><span style="text-indent: 17.85pt; ">equals</span><span style="text-indent: 17.85pt; font-family: 宋体; ">方法，所以，</span><span style="text-indent: 17.85pt; ">new StringBuffer(&#8220;abc&#8221;).equals(new StringBuffer(&#8220;abc&#8221;)</span><span style="text-indent: 17.85pt; font-family: 宋体; ">的结果为</span><span style="text-indent: 17.85pt; ">false</span><span style="text-indent: 17.85pt; font-family: 宋体; ">。<br /><br /></span></p><p class="MsoNormal"><span lang="EN-US">String</span><span style="font-family:宋体;
mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:&quot;Times New Roman&quot;">覆盖了</span><span lang="EN-US">equals</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;
mso-hansi-font-family:&quot;Times New Roman&quot;">方法和</span><span lang="EN-US">hashCode</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">方法，而</span><span lang="EN-US">StringBuffer</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">没有覆盖</span><span lang="EN-US">equals</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">方法和</span><span lang="EN-US">hashCode</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">方法，所以，将</span><span lang="EN-US">StringBuffer</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">对象存储进</span><span lang="EN-US">Java</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">集合类中时会出现问题。</span><span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">StringBuffer</span><span style="font-family:
宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:&quot;Times New Roman&quot;">和</span><span lang="EN-US">StringBuilder</span><span style="font-family:宋体;mso-ascii-font-family:
&quot;Times New Roman&quot;;mso-hansi-font-family:&quot;Times New Roman&quot;">类都表示内容可以被修改的字符串，</span><span lang="EN-US">StringBuilder</span><span style="font-family:宋体;mso-ascii-font-family:
&quot;Times New Roman&quot;;mso-hansi-font-family:&quot;Times New Roman&quot;">是线程不安全的，运行效率高，如果一个字符串变量是在方法里面定义，这种情况只可能有一个线程访问它，不存在不安全的因素了，则用</span><span lang="EN-US">StringBuilder</span><span style="font-family:宋体;mso-ascii-font-family:
&quot;Times New Roman&quot;;mso-hansi-font-family:&quot;Times New Roman&quot;">。如果要在类里面定义成员变量，并且这个类的实例对象会在多线程环境下使用，那么最好用</span><span lang="EN-US">StringBuffer</span><span style="font-family:宋体;mso-ascii-font-family:
&quot;Times New Roman&quot;;mso-hansi-font-family:&quot;Times New Roman&quot;">。</span><span lang="EN-US"><o:p></o:p></span></p>&nbsp; &nbsp; 另： 逗号分隔字符串转换成数组、<br /><p style="text-indent:18.0pt"><span style="font-size: 9pt; font-family: 宋体; ">如果不查</span><span style="font-size: 9pt; ">jdk api</span><span style="font-size: 9pt; font-family: 宋体; ">，我很难写出来！我可以说说我的思路：</span></p>  <p style="margin-left:36.0pt;text-indent:-18.0pt;"><span style="font-size: 9pt; ">1.<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9pt; font-family: 宋体; ">用正则表达式，代码大概为：</span><span style="font-size: 9pt; ">String [] result = orgStr.split(&#8220;,&#8221;);</span></p>  <p style="margin-left:36.0pt;text-indent:-18.0pt;"><span style="font-size: 9pt; ">2.<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9pt; font-family: 宋体; ">用</span><span style="font-size: 9pt; "> StingTokenizer ,</span><span style="font-size: 9pt; font-family: 宋体; ">代码为：</span><span style="font-size: 9pt; ">StringTokenizer&nbsp; tokener = StringTokenizer(orgStr,&#8221;,&#8221;);</span></p>  <p style="margin-left:33.0pt;text-indent:3.0pt"><span style="font-size: 9pt; ">String [] result = new String[tokener .<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\%E6%A1%8C%E9%9D%A2\jdk150.chm::/jdk150/api/java/util/StringTokenizer.html#countTokens()"><span style="color:black;text-decoration:none;text-underline:none">countTokens</span></a>()];</span></p>  <p style="margin-left:33.0pt;text-indent:3.0pt"><span style="font-size: 9pt; ">Int i=0;</span></p>  <p style="margin-left:36.0pt"><span style="font-size: 9pt; ">while(tokener.hasNext(){result[i++]=toker.nextToken();}</span></p><p>&nbsp;</p><img src ="http://www.blogjava.net/leochiang/aggbug/385192.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-08-10 08:21 <a href="http://www.blogjava.net/leochiang/archive/2012/08/10/385192.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java内部类2  ---总结</title><link>http://www.blogjava.net/leochiang/archive/2012/08/10/385189.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Fri, 10 Aug 2012 00:02:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/08/10/385189.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/385189.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/08/10/385189.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/385189.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/385189.html</trackback:ping><description><![CDATA[另有：&nbsp;<a href="http://blog.csdn.net/ilibaba/article/details/3866537">http://blog.csdn.net/ilibaba/article/details/3866537</a>&nbsp;<br /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; "><br />1.首先，把内部类作为外部类的一个特殊的成员来看待，因此它有类成员的封闭等级：private ,protected,默认(friendly),public 它有类成员的修饰符:&nbsp;&nbsp; static,final,abstract&nbsp;<br /></span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">2.非静态内部类nested inner class,内部类隐含有一个外部类的指针this,因此，它可以访问外部类的一切资源（当然包括private）&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">&nbsp; 外部类访问内部类的成员，先要取得内部类的对象,并且取决于内部类成员的封装等级。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">&nbsp; 非静态内部类不能包含任何static成员.&nbsp;<br /></span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">3.静态内部类：static inner class,不再包含外部类的this指针，并且在外部类装载时初始化.&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">&nbsp; 静态内部类能包含static或非static成员.&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">&nbsp; 静态内部类只能访问外部类static成员.&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">&nbsp; 外部类访问静态内部类的成员，循一般类法规。对于static成员，用类名.成员即可访问，对于非static成员，只能&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">&nbsp;&nbsp;&nbsp; 用对象.成员进行访问&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">4.对于方法中的内部类或块中内部类只能访问块中或方法中的final变量。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">类成员有两种static , non-static，同样内部类也有这两种&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">non-static 内部类的实例，必须在外部类的方法中创建或通过外部类的实例来创建(OuterClassInstanceName.new innerClassName(ConstructorParameter)),并且可直接访问外部类的信息,外部类对象可通过OuterClassName.this来引用&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">static 内部类的实例, 直接创建即可，没有对外部类实例的引用。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">内部类不管static还是non-static都有对外部类的引用&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">non-static 内部类不允许有static成员&nbsp;</span>&nbsp;<br /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">方法中的内部类只允许访问方法中的final局部变量和方法的final参数列表，所以说方法中的内部类和内部类没什麽区别。但方法中的内部类不能在方法以外访问，方法中不可以有static内部类&nbsp;<br />匿名内部类如果继承自接口,必须实现指定接口的方法,且无参数&nbsp;<br />匿名内部类如果继承自类,参数必须按父类的构造函数的参数传递</span>&nbsp;&nbsp;<br /><br /><span style="color: red; ">内部类的作用</span><br /><br /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: large; ">java 中的内部类和接口加在一起，可以的解决常被 C++ 程序员抱怨 java 中存在的一个问题??没有多继承。实际上，C++ 的多继承设计起来很复杂，而 java 通过内部类加上接口，可以很好的实现多继承的效果。&nbsp;</span>&nbsp;<br /><br /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: large; ">内部类：一个内部类的定义是定义在另一个内部的类。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: large; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: large; ">原因是：&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: large; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: large; ">1.一个内部类的对象能够访问创建它的对象的实现，包括私有数据。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: large; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: large; ">2.对于同一个包中的其他类来说，内部类能够隐藏起来。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: large; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: large; ">3.匿名内部类可以很方便的定义回调。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: large; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: large; ">4.使用内部类可以非常方便的编写事件驱动程序。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: large; " /><img src ="http://www.blogjava.net/leochiang/aggbug/385189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-08-10 08:02 <a href="http://www.blogjava.net/leochiang/archive/2012/08/10/385189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java内部类</title><link>http://www.blogjava.net/leochiang/archive/2012/08/09/385113.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Thu, 09 Aug 2012 02:12:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/08/09/385113.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/385113.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/08/09/385113.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/385113.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/385113.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt; ">&nbsp; &nbsp; java内部类分为：成员内部类，局部内部类，静态内部类，匿名内部类。</span><br /><span style="font-size: 12pt; ">1） 成员内部类：</span><br /><span style="font-size: 12pt; ">&nbsp; &nbsp; &nbsp; &nbsp; 什么是成员内部类：作为外部类的成员存在，与外部类的属性和方法并列。注意：成员内部类中不能定义静态变量，但是可以访问外部类的所有成员。<br /></span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 成员内部类的用处： &nbsp; 见最后的内部类作用。 &nbsp;&nbsp;<br /><span style="font-size: 12pt; ">&nbsp; &nbsp; &nbsp; &nbsp; 成员内部类的优点： 1.内部类作为外部类的成员可以访问外部类的所有成员包括私有成员或属性。2.</span><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: 12pt; ">用内部类定义在外部类中不可访问的属性。这样就在外部类中实现了比外部类的private还要小的访问权限。<br /></span><span style="font-size: 12pt; ">&nbsp; &nbsp; &nbsp; &nbsp; 成员内部类注意：</span><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; font-size: 12pt; background-color: #ffffff; ">内部类是一个编译时的概念，一旦编译成功，就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类。<br />&nbsp;</span>&nbsp;<span style="background-color: #eeeeee; font-size: 13px; color: #0000ff; ">public</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; color: #0000ff; ">class</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;Outer{</span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;1;<br /><span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;j=10;<br /><span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;k=20;<br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;outer_f1(){<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">do&nbsp;more&nbsp;something</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("outer's&nbsp;outer_f1");<br />}<br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;out_f2(){<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">do&nbsp;more&nbsp;something</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">成员内部类</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">class</span>&nbsp;Inner{<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">static&nbsp;int&nbsp;inner_i&nbsp;=100;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">内部类中不允许定义静态变量</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">int</span>&nbsp;j=100;<span style="color: #008000; ">//</span><span style="color: #008000; ">内部类中外部类的实例变量可以共存</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">int</span>&nbsp;inner_i=1;<br /><span style="color: #0000FF; ">void</span>&nbsp;inner_f1(){<br />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(i);<span style="color: #008000; ">//</span><span style="color: #008000; ">外部类的变量如果和内部类的变量没有同名的，则可以直接用变量名访问外部类的变量</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(j);<span style="color: #008000; ">//</span><span style="color: #008000; ">在内部类中访问内部类自己的变量直接用变量名</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span style="color: #0000FF; ">this</span>.j);<span style="color: #008000; ">//</span><span style="color: #008000; ">也可以在内部类中用"this.变量名"来访问内部类变量<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">访问外部类中与内部类同名的实例变量可用"外部类名.this.变量名"。</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(k);<span style="color: #008000; ">//</span><span style="color: #008000; ">外部类的变量如果和内部类的变量没有同名的，则可以直接用变量名访问外部类的变量</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;outer_f1();&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">可以直接访问外部类的静态方法<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;outer_f2();&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">compile&nbsp;error，访问外部类非静态方法，必须使用外部类的实例,如下一句</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;Outer.<span style="color: #0000FF; ">this</span>.out_f2();<br />}&nbsp;<br /><br />}<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">外部类的非静态方法访问成员内部类</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;outer_f3(){<br />&nbsp;&nbsp;&nbsp;&nbsp;Inner&nbsp;inner&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Inner();<br />&nbsp;&nbsp;&nbsp;&nbsp;inner.inner_f1();<br />}<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">外部类的静态方法访问成员内部类，与在外部类外部访问成员内部类一样</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;outer_f4(){<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">step1&nbsp;建立外部类对象</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;Outer&nbsp;out&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Outer();<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">***step2&nbsp;根据外部类对象建立内部类对象***</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;Inner&nbsp;inner=out.<span style="color: #0000FF; ">new</span>&nbsp;Inner();<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">step3&nbsp;访问内部类的方法</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;inner.inner_f1();<br />}<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args){<br />&nbsp;&nbsp;&nbsp;&nbsp;outer_f4();<br />}<br />}</div><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: 12pt; ">2） 局部内部类：<br /></span>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="font-size: 12pt; ">什么是局部内部类：</span>
<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">即在方法中定义的内部类，与局部变量类似，在局部内部类前不加修饰符public或private，其范围为定义它的代码块。</span>&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; 局部内部类的用处： &nbsp; 见最后的内部类作用。 &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; 局部内部类的优点：<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">在类外不可直接生成局部内部类（保证局部内部类对外是不可见的）。要想使用局部内部类时需要生成对象，对象调用方法，在方法中才能调用其局部内部类。通过内部类和接口达到一个强制的弱耦合，用局部内部类来实现接口，并在方法中返回接口类型，使局部内部类不可见，屏蔽实现类的可见性。&nbsp;</span>&nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><font size="3"><br /></font></span><span style="font-size: 12pt; ">&nbsp; &nbsp; &nbsp; &nbsp;局部内部类注意：</span><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">局部内部类中不可定义静态变量，可以访问外部类的局部变量(即方法内的变量)，但是变量必须是final的。</span>&nbsp;&nbsp;<br /><div style="text-align: left;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Outer&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;s&nbsp;=&nbsp;100;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;out_i&nbsp;=&nbsp;1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;f(<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;k)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;s&nbsp;=&nbsp;200;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;j&nbsp;=&nbsp;10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Inner&nbsp;{&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;定义在方法内部</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;s&nbsp;=&nbsp;300;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;可以定义与外部类同名的变量<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;static&nbsp;int&nbsp;m&nbsp;=&nbsp;20;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">不可以定义静态变量</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inner(<span style="color: #0000FF; ">int</span>&nbsp;k)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inner_f(k);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;inner_i&nbsp;=&nbsp;100;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;inner_f(<span style="color: #0000FF; ">int</span>&nbsp;k)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(out_i);<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;如果内部类没有与外部类同名的变量，在内部类中可以直接访问外部类的实例变量</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(k);<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;*****可以访问外部类的局部变量(即方法内的变量)，但是变量必须是final的*****<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(i);&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">compile&nbsp;error，i必须是final的</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(s);<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;如果内部类中有与外部类同名的变量，直接用变量名访问的是内部类的变量</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span style="color: #0000FF; ">this</span>.s);<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;用"this.变量名"&nbsp;访问的也是内部类变量</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Outer.<span style="color: #0000FF; ">this</span>.s);<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;用外部"外部类类名.this.变量名"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;访问的是外部类变量</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">inner</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Inner(k);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;访问局部内部类必须先有外部类对象</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Outer&nbsp;out&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Outer();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.f(3);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div></div><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: 12pt; ">&nbsp;</span>&nbsp;<br />3）静态内部类：<br />&nbsp; &nbsp;&nbsp;<span style="font-size: 12pt; ">什么是静态内部类：</span>&nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">&nbsp;静态内部类定义在类中，任何方法外，用static定义。&nbsp;</span>&nbsp;<br />&nbsp; &nbsp; 静态内部类的用处： &nbsp; 见最后的内部类作用。 &nbsp;<br />&nbsp; &nbsp; 静态内部类的优点：<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">&nbsp;</span>&nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; "><br /></span><span style="font-size: 12pt; ">&nbsp; &nbsp;静态内部类注意：</span><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">静态内部类中可以定义静态或者非静态的成员</span>&nbsp;，<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">*******</span><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">生成（new）一个静态内部类不需要外部类成员：这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成：&nbsp;<br /></span>&nbsp; &nbsp;&nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; font-size: medium; background-color: #ffffff; ">Outer.Inner in=new Outer.Inner()；&nbsp;<br />而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类。静态内部类可用private，protected，public，abstract等来修饰*******</span>&nbsp;&nbsp;<br />&nbsp; &nbsp;<br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Outer&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;j&nbsp;=&nbsp;10;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;outer_f1()&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;outer_f2()&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;静态内部类可以用public,protected,private修饰<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;静态内部类中可以定义静态或者非静态的成员</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Inner&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;inner_i&nbsp;=&nbsp;100;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;inner_j&nbsp;=&nbsp;200;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;inner_f1()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Outer.i&nbsp;"&nbsp;+&nbsp;i);<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;静态内部类只能访问外部类的静态成员</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outer_f1();<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;包括静态变量和静态方法</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;inner_f2()&nbsp;{<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Outer.i"+j);</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;error&nbsp;静态内部类不能访问外部类的非静态成员<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outer_f2();</span><span style="color: #008000; ">//</span><span style="color: #008000; ">error&nbsp;包括非静态变量和非静态方法</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;outer_f3()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;外部类访问内部类的静态成员：内部类.静态成员</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Inner.inner_i);&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">100</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inner.inner_f1();&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">Outer.i&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;外部类访问内部类的非静态成员:实例化内部类即可</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inner&nbsp;inner&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Inner();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inner.inner_f2();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Outer().outer_f3();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><br />4）匿名内部类：<br />&nbsp; &nbsp;&nbsp;<span style="font-size: 12pt; ">什么是匿名内部类：</span>&nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">&nbsp;</span>
<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">匿名内部类是一种特殊的局部内部类，它是通过匿名类实现接口。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">IA被定义为接口。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; " />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">IA I=new IA(){};&nbsp;</span>&nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">&nbsp;</span>&nbsp;<br />&nbsp; &nbsp; 匿名内部类的用处： &nbsp; 见最后的内部类作用。 &nbsp;<br />&nbsp; &nbsp; 匿名内部类的优点： &nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">1，一个类用于继承其他类或是实现接口，并不需要增加额外的方法，只是对继承方法的实现或是覆盖。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">2，只是为了获得一个对象实例，不需要知道其实际类型。&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; " />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">3，类名没有意义，也就是不需要使用到。</span>&nbsp;<br /><span style="font-size: 12pt; ">&nbsp; &nbsp;匿名内部类注意：</span>&nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">一个匿名内部类一定是在new的后面，用其隐含实现一个接口或实现一个类，没有类名，根据多态，我们使用其父类名。因他是局部内部类，那么局部内部类的所有限制都对其生效。匿名内部类是唯一一种无构造</span>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">方</span><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">法类。大部分匿名内部类是用于接口回调用的。匿名内部类在编译的时候由系统自动起名Out$1.class。如果一个对象编译时的类型是接口，那么其运行的类型为实现这个接口的类。因匿名内部类无构造方法，所以其</span>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; font-size: medium; ">使用范围非常的有限。当需要多个对象时使用局部内部类，因此局部内部类的应用相对比较多。匿名内部类中不能定义构造方法。如果一个对象编译时的类型是接口，那么其运行的类型为实现这个接口的类。</span>&nbsp;<br /><span style="color: #333333; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; font-size: 13px; line-height: 26px; text-align: left; background-color: #fff4e9; ">在java的事件处理的匿名适配器中，匿名内部类被大量的使用。例如在想关闭窗口时加上这样一句代码：</span>&nbsp;<br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->frame.addWindowListener(<span style="color: #0000FF; ">new</span>&nbsp;WindowAdapter(){<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;windowClosing(WindowEvent&nbsp;e){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.exit(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />});&nbsp;</div><br />转载自：<a href="http://hnzhoujunmei.iteye.com/blog/1067335">http://hnzhoujunmei.iteye.com/blog/1067335<br /><br /><br /><br /></a><img src ="http://www.blogjava.net/leochiang/aggbug/385113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-08-09 10:12 <a href="http://www.blogjava.net/leochiang/archive/2012/08/09/385113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java作用域以及多态2</title><link>http://www.blogjava.net/leochiang/archive/2012/08/07/385012.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Tue, 07 Aug 2012 13:19:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/08/07/385012.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/385012.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/08/07/385012.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/385012.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/385012.html</trackback:ping><description><![CDATA[&nbsp; &nbsp; &nbsp; <span style="font-size: 12pt; ">&nbsp;面向对象的特征有：封装、继承、 抽象、多态。</span><br />&nbsp;<span style="font-size: 12pt; ">&nbsp; &nbsp;&nbsp;</span>&nbsp;<span style="font-family: 宋体; font-size: 12pt; ">封装是保证软件部件具有优良的模块性的基础，封装的目标就是要实现软件部件的&#8220;高内聚、低耦合&#8221;，防止程序相互依赖性而带来的变动影响。在面向对象的编程语言中，对象是封装的最基本单位，面向对象的封装比传统语言的封装更为清晰、更为有力。</span><span style="font-family: 宋体; font-size: 12pt; ">面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个&#8220;模块&#8221;中，也就是一个类中，属性用变量定义，行为用方法进行定义，方法可以直接访问同一个对象中的属性。通常情况下，</span><span style="font-family: 宋体; font-size: 12pt; "><strong>只要记住让变量和访问这个变量的方法放在一起，将一个类中的成员变量全部定义成私有的，只有这个类自己的方法才可以访问到这些成员变量，这就基本上实现对象的封装，就很容易找出要分配到这个类上的方法了，就基本上算是会面向对象的编程了。把握一个原则：把对同一事物进行操作的方法和相关的方法放在同一个类中，把方法和它操作的数据放在同一个类中。<br /></strong></span><span style="font-size: 12pt; ">&nbsp; &nbsp; &nbsp; </span><span style="font-family: 宋体; font-size: 12pt; ">抽象就是找出一些事物的相似和共性之处，然后将这些事物归为一个类，这个类只考虑这些事物的相似和共性之处，并且会忽略与当前主题和目标无关的那些方面，将注意力集中在与当前目标有关的方面。例如，看到一只蚂蚁和大象，你能够想象出它们的相同之处，那就是抽象。</span><br />&nbsp; &nbsp; &nbsp; &nbsp;<span style="font-family: 宋体; font-size: 12pt; ">在定义和实现一个类的时候，可以在一个已经存在的类的基础之上来进行，把这个已经存在的类所定义的内容作为自己的内容，并可以加入若干新的内容，或修改原来的方法使之更适合特殊的需要，这就是继承。继承是子类自动共享父类数据和方法的机制，这是类之间的一种关系，提高了软件的可重用性和可扩展性。</span>&nbsp;&nbsp;<br />&nbsp; &nbsp; &nbsp;&nbsp;<span style="font-family: 宋体; font-size: 12pt; ">多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定，而是在程序运行期间才确定，即一个引用变量倒底会指向哪个类的实例对象，该引用变量发出的方法调用到底是哪个类中实现的方法，必须在由程序运行期间才能决定。</span><span style="font-family: 宋体; font-size: 12pt; ">因为在程序运行时才确定具体的类，这样，不用修改源程序代码，</span><span style="font-family: 宋体; font-size: 12pt; ">就可以让引用变量绑定到各种不同的类实现上，</span><span style="font-family: 宋体; font-size: 12pt; ">从而导致该引用调用的具体方法随之改变，</span><span style="font-family: 宋体; font-size: 12pt; ">即不修改程序代码就可以改变程序运行时所绑定的具体代码，让程序可以选择多个运行状态，这就是多态性。<br /></span><span style="font-size: 12pt; ">&nbsp; &nbsp; &nbsp; &nbsp;java实现多态的机制：</span><span style="font-family: 宋体; text-indent: 18pt; font-size: 12pt; ">靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象，而程序调用的方法在运行期才动态绑定，就是引用变量所指向的具体实例对象的方法，也就是内存里正在运行的那个对象的方法，而不是引用变量的类型中定义的方法。<br /><br /></span><p style="text-indent:18.0pt"><span style="font-size: 9.5pt; font-family: Arial, sans-serif; "></span></p>&nbsp; &nbsp; &nbsp; &nbsp; 另： javaEE中的session的理解--<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000066; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 26px; text-align: left; background-color: #ffffff; font-size: 12pt; ">session机制是一种服务器端的机制，服务器使用一种类似于散列表的结构（也可能就是使用散列表）来保存信息。</span><span style="font-size: 12pt; background-color: #efefef; line-height: 25px; text-align: left; font-family: Arial; ">在服务器上，通过Session来区分每一个上网用户</span><span style="font-size: 12pt; background-color: #efefef; line-height: 25px; text-align: left; font-family: Arial; ">用户只要一连接到服务器，则立刻分配一个Session给用户</span><span style="font-size: 12pt; background-color: #efefef; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; "><br /></span>&nbsp;<span style="background-color: #efefef; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; ">Session主要方法：</span><p style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-align: left; background-color: #efefef; "><div>1&nbsp; 服务器上通过Session来分别不同的用户--&gt;Session ID</div>任何连接到服务器上的用户，服务器都会位之分配唯一的一个不会重复的Session ID<br />Session ID是由服务器统一管理的，人为不能控制<br />方法：session.getID();<br />长度：32</p><p style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-align: left; background-color: #efefef; ">2&nbsp; 判断是否是新的Session<br />public boolean isNew();<br />判断当前的Session是否是新建立的Session</p><p style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-align: left; background-color: #efefef; ">3&nbsp; Session的属性设置<br />设置属性:public void setAttribute(String name,Object value)<br />取得属性:public Object getAttribute(String name)<br />删除属性:pbulic void removeAttribute(String name)<br />4&nbsp; 登陆验证<br />通过Session能够对用户是否登陆做出验证<br />public void putValue(String name,Object)--&gt;setAttribute<br />public Object getValue(String name)--&gt;getAttribute<br />public removeValue(String name)--&gt;removeAttribute<br />此三个方法已经过时，不建议再使用</p><p style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-align: left; background-color: #efefef; ">注销用户：让用户的Session失效<br />如果Session失效，则在Session所保留的全部操作也会消失<br />public void invalidate()使Session失效（手工）<br />如果Session长时间不被使用，则也会自动失效<br />5&nbsp; 得到Session的创建时间<br />public long getCreationTime()<br />此方法返回long类型，通过new Date()可以取得一个完成时间<br />取得用户最后操作的时间：public long getLastAccessedTime();</p><p style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-align: left; background-color: #efefef; ">6&nbsp; 总结<br />Session将信息保存在服务器上，而Cookie保存在客户端上<br />Session比Cookie更安全，Session比Cookie更占资源<br />开发原则：Session要尽量少用--尽量少向Session中保存信息<br />session使用了Cookie的机制，如果Cookie被禁用，则Session也无法使用,因为客户端的session ID以cookie形式,保存在了客户端的内存当中,这个时候我们可以通过url重写,来保证session的有效性.</p><p style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-align: left; background-color: #efefef; ">重写url的方法如下</p><p style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 25px; text-align: left; background-color: #efefef; ">resp.encodeURL(request.getRequestURL().toString()); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://phl.iteye.com/blog/699574">http://phl.iteye.com/blog/699574</a></p>&nbsp; &nbsp;<br /><br /><hr />转载： &nbsp;<br /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #fafafa; ">感觉网站最好不要依赖session&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #fafafa; " /><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #fafafa; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #fafafa; ">session 在做 多服务器负载的时候&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #fafafa; " /><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #fafafa; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #fafafa; ">会有点麻烦&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #fafafa; " /><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #fafafa; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #fafafa; ">直接用 cookie + 第三方缓存 比较的好...&nbsp;</span><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #fafafa; " /><br style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #fafafa; " /><span style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-align: left; background-color: #fafafa; ">自己在两个公司呆过后得出的结论,纯属个人体会 ...</span>&nbsp;<br /><hr /><img src ="http://www.blogjava.net/leochiang/aggbug/385012.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-08-07 21:19 <a href="http://www.blogjava.net/leochiang/archive/2012/08/07/385012.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java作用域以及多态</title><link>http://www.blogjava.net/leochiang/archive/2012/08/06/384862.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Mon, 06 Aug 2012 01:27:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/08/06/384862.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/384862.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/08/06/384862.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/384862.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/384862.html</trackback:ping><description><![CDATA[<table summary="" align="" border="1" cellpadding="1" cellspacing="1" style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; color: #333333; font-size: 14px; line-height: 26px; text-align: left; background-color: #ffffff; width: 500px; height: 147px; "><tbody><tr><td>作用域&nbsp;<br /></td><td>当前类</td><td>同一package</td><td>子孙类&nbsp;<br /></td><td>其他package</td></tr><tr><td>public</td><td>&#8730;&nbsp;&nbsp;&nbsp;&nbsp;<br /></td><td>&#8730;&nbsp;&nbsp;&nbsp;&nbsp;<br /></td><td>&#8730;&nbsp;&nbsp;&nbsp;&nbsp;<br /></td><td>&#8730;&nbsp;&nbsp;&nbsp;&nbsp;<br /></td></tr><tr><td>protected&nbsp;<br /></td><td>&#8730;&nbsp;&nbsp;&nbsp;&nbsp;<br /></td><td>&#8730;&nbsp;&nbsp;&nbsp;&nbsp;<br /></td><td>&#8730;&nbsp;&nbsp;&nbsp;&nbsp;<br /></td><td>&nbsp; &#215;&nbsp;&nbsp;<br /></td></tr><tr><td>default</td><td>&#8730;&nbsp;&nbsp;&nbsp;&nbsp;<br /></td><td>&#8730;&nbsp;&nbsp;&nbsp;&nbsp;<br /></td><td>&nbsp; &#215;&nbsp;&nbsp;<br /></td><td>&nbsp; &#215;&nbsp;</td></tr><tr><td>private</td><td>&#8730;&nbsp;&nbsp;&nbsp;&nbsp;<br /></td><td>&nbsp; &#215;&nbsp;&nbsp;<br /></td><td>&nbsp; &#215;&nbsp;&nbsp;<br /></td><td>&nbsp; &#215;&nbsp;&nbsp;<br /></td></tr></tbody></table><br />关于overload与override的区别：<br />&nbsp; &nbsp;overload是重载，意思是<span style="font-size:10.5pt;font-family:宋体;">我们可以定义一些名称相同的方法，通过定义不同的输入参数来区分这些方法，然后再调用时，</span><span style="font-size:10.5pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;">VM</span><span style="font-size:10.5pt;font-family:宋体;">就会根据不同的参数样式，来选择合适的方法执行。</span>
<span style="color: #333333; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-indent: 28px; background-color: #ffffff; ">方法重载支持多态性，因为它是Java 实现&#8220;一个</span><a class="channel_keylink" href="http://www.shenmeshi.com/Computer/Computer_20070627221543.html" rel="external" target="_blank" style="font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; color: #216ea1; text-decoration: none; line-height: 25px; text-indent: 28px; background-color: #ffffff; ">接口</a><span style="color: #333333; font-family: 'WenQuanYi Micro Hei Mono', 'WenQuanYi Micro Hei', 'Microsoft Yahei Mono', 'Microsoft Yahei', sans-serif; line-height: 25px; text-indent: 28px; background-color: #ffffff; ">，多个方法&#8221;范型的一种方式。要理解这一点，考虑下面这段话：在不支持方法重载的语言中，每个方法必须有一个惟一的名字。但是，你经常希望实现数据类型不同但本质上相同的方法。</span>&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; 1）使用重载时必须使用不同的参数样式<br />&nbsp; &nbsp; &nbsp; &nbsp; 2）<span style="font-family: 宋体; font-size: 12pt; ">对于继承来说，如果某一方法在父类中是访问权限是private，那么就不能在子类对其进行重载，如果定义的话，也只是定义了一个新方法，而不会达到重载的效果。</span><br />&nbsp; &nbsp; override是重写（比如说对接口的重写，继承中子类重写父类的方法）。<br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="background-color: white; line-height: 16.5pt; text-align: left; font-family: Arial, sans-serif; ">1）</span><span style="background-color: white; line-height: 16.5pt; text-align: left; font-family: 宋体; ">覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配，才能达到覆盖的效果；</span>  <br /><p align="left" style="text-align:left;line-height:16.5pt; background:white">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">2）</span><span style="font-family:宋体;">覆盖的方法的返回值必须和被覆盖的方法的返回一致；</span></p>  <p align="left" style="text-align:left;line-height:16.5pt; background:white">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">3）</span><span style="font-family:宋体;">覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致，或者是其子类；</span></p>  <p align="left" style="text-align: left; line-height: 16.5pt; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; ">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;">4）</span><span style="font-family:宋体;">被覆盖的方法不能为</span><span style="font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;">private</span><span style=" font-family:宋体;">，否则在其子类中只是新定义了一个方法，并没有对其进行覆盖。</span></p>关于抽象类（abstract）&nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; 所有的对象都是通过类来描述的，然而，所有的类不一定是通过对象来描述清楚，因此不能描述的这些类定义为抽象类 。 &nbsp;&nbsp;<br />&nbsp; &nbsp; &nbsp; 抽象类与接口紧密相关。然接口又比抽象类更抽象，这主要体现在它们的差别上：1）类可以实现无限个接口，但仅能从一个抽象（或任何其他类型）类继承，从抽象类派生的类仍可实现接口，从而得出接口是用来解决多重继承问题的。2）抽象类当中可以存在非抽象的方法，可接口不能且它里面的方法只是一个声名必须用public来修饰没有具体实现的方法。3）抽象类中的成员变量可以被不同的修饰符来修饰，可接口中的成员变量默认的都是静态常量（static final）。4）这一点也是最重要的一点本质的一点"抽象类是对象的抽象，然接口是一种行为规范"。&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="background-color: #eeeeee; font-size: 13px; color: #0000ff; ">package</span><span style="font-size: 13px; background-color: #eeeeee; ">&nbsp;core_java;</span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><br /><span style="color: #0000FF; ">abstract</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Ch{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">abstract</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;doSome();<br />}<br /><br /><span style="color: #0000FF; ">class</span>&nbsp;A&nbsp;<span style="color: #0000FF; ">extends</span>&nbsp;Ch{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;doSome(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("a");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><span style="color: #0000FF; ">class</span>&nbsp;B&nbsp;<span style="color: #0000FF; ">extends</span>&nbsp;Ch{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;doSome(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("b");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;TestAbstract&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;args<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ch&nbsp;aa&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;A();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ch&nbsp;bb&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;B();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;aaa&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;A();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;bbb&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;B();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aa.doSome();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bb.doSome();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aaa.doSome();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bbb.doSome();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doSomething(aa);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doSomething(bb);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doSomething(aaa);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doSomething(bbb);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;doSomething(Ch&nbsp;a){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.doSome();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div><img src ="http://www.blogjava.net/leochiang/aggbug/384862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-08-06 09:27 <a href="http://www.blogjava.net/leochiang/archive/2012/08/06/384862.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>冒泡排序与选择排序与倒序排序</title><link>http://www.blogjava.net/leochiang/archive/2012/08/02/384634.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Thu, 02 Aug 2012 09:57:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/08/02/384634.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/384634.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/08/02/384634.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/384634.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/384634.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;core_java;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.util.Scanner;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;ExchangeArray&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;args<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;split2array(String&nbsp;str){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;m&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m&nbsp;=&nbsp;str.split(",");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;a&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">int</span>[m.length];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;i=0;i&lt;m.length;i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;=&nbsp;&nbsp;Integer.parseInt(m[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;a;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;exchange(<span style="color: #0000FF; ">int</span>[]&nbsp;a){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;b&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">int</span>[a.length];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;j=0;j&lt;a.length;j++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[j]=a[a.length-1-j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;b;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;bubsort(<span style="color: #0000FF; ">int</span>[]&nbsp;a){<span style="color: #008000; ">//</span><span style="color: #008000; ">冒泡排序</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;b&nbsp;=&nbsp;a;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;b.length;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;j=i;j&lt;b.length;j++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(b[i]&lt;b[j]){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;b[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[i]&nbsp;=&nbsp;b[j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[j]&nbsp;=&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;b;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;selsort(<span style="color: #0000FF; ">int</span>[]&nbsp;a){<span style="color: #008000; ">//</span><span style="color: #008000; ">选择排序</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;b&nbsp;=&nbsp;a;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;b.length;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;minIndex&nbsp;=&nbsp;i;<span style="color: #008000; ">//</span><span style="color: #008000; ">以最小值为基准</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;j=i;j&lt;b.length;j++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;temp1&nbsp;=&nbsp;b[minIndex];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;temp2&nbsp;=&nbsp;b[j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(temp1&gt;temp2){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minIndex&nbsp;=&nbsp;j;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(minIndex!=i){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;b[minIndex];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[minIndex]&nbsp;=&nbsp;b[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[i]&nbsp;=&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;b;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;print(<span style="color: #0000FF; ">int</span>[]&nbsp;a){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;m=0;m&lt;a.length-1;m++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(a[m]+",");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(a[a.length-1]);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("请输入序列（以逗号隔开回车结束）：");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scanner&nbsp;sc&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Scanner(System.in);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;ss&nbsp;=&nbsp;sc.nextLine();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;o&nbsp;=&nbsp;ss.split(",");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("原序列：");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;o.length-1;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(o[i]+",");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(o[o.length-1]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;r&nbsp;=&nbsp;exchange(split2array(ss));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("处理后的序列：");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;m=0;m&lt;r.length-1;m++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(r[m]+",");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(r[r.length-1]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("选择排序后的结果：");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(selsort(r));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">System.out.println();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("冒泡排序后的结果：");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(bubsort(r));</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div><br />注意其中的异常：<br />数组越界异常 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="background-color: #ffffff; color: #333333; font-family: Arial; line-height: 26px; text-align: left; ">ArrayIndexOutOfBoundsException</span><br />空指针异常 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="background-color: #ffffff; color: #333333; font-family: Arial; line-height: 26px; text-align: left; ">NullPointerException</span><br /><br /><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/leochiang/aggbug/384634.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-08-02 17:57 <a href="http://www.blogjava.net/leochiang/archive/2012/08/02/384634.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中的hashcode与内存地址与“==”</title><link>http://www.blogjava.net/leochiang/archive/2012/08/01/384546.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Wed, 01 Aug 2012 10:37:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/08/01/384546.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/384546.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/08/01/384546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/384546.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/384546.html</trackback:ping><description><![CDATA[&nbsp; &nbsp; &nbsp;&nbsp;<span style="font-family: 'Comic Sans MS'; font-size: 12pt; ">首先，</span><span style="background-color: #ffffff; text-align: left; font-family: 'Comic Sans MS'; font-size: 12pt; ">hashCode就是一种查找的索引值。就好比一个数组，你用数组下标来查找</span><span style="background-color: #ffffff; text-align: left; font-family: 'Comic Sans MS'; font-size: 12pt; ">你的数组元素，同样，hashCode来查找hashTable中的存储元素。当然，作为散列方</span><span style="background-color: #ffffff; text-align: left; font-family: 'Comic Sans MS'; font-size: 12pt; ">式的查找和存储，要比数组这种线性数据结构复杂的多。这涉及到hash函数的构造，&nbsp;</span><span style="background-color: #ffffff; text-align: left; font-family: 'Comic Sans MS'; font-size: 12pt; ">hash &nbsp; Collision等问题，数据结构中。<br /></span><div><div><span style="text-align: left; background-color: #ffffff; font-family: 'Comic Sans MS'; font-size: 12pt; ">而每个对象在内存当中的存储组织方式就是利用这种散列方式存储，当然也就有它的&nbsp;</span><span style="text-align: left; background-color: #ffffff; font-family: 'Comic Sans MS'; font-size: 12pt; ">hashCode了，如果想获取这个对象在Hash表中的位置，就可以调用&nbsp;</span><span style="text-align: left; background-color: #ffffff; font-family: 'Comic Sans MS'; font-size: 12pt; ">Object.hashCode()&nbsp;</span><span style="text-align: left; background-color: #ffffff; font-family: 'Comic Sans MS'; font-size: 12pt; ">结果返回int型。</span><span style="font-family: 'Comic Sans MS'; font-size: 12pt; ">还有一点需要注意的是：hashcode &nbsp; 相等，则对象一定一样；hashcode &nbsp; 不相等，对象&nbsp;也可能相等（不是相同）， &nbsp; 如果对于不等的对象构造不同的hashCode那么将会提高&nbsp;</span><span style="font-family: 'Comic Sans MS'; font-size: 12pt; ">hash表的性能。（具体原因可以查看数据结构中hash表的构造方式）&nbsp;</span>&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;下面的两个程序是hashcode的理解：<br />&nbsp;student.java<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;core_java;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Student&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;String&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;age;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;Student(String&nbsp;name,<span style="color: #0000FF; ">int</span>&nbsp;age){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.name&nbsp;=&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.age&nbsp;=&nbsp;age;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;hashCode(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;7*name.hashCode()+13*age;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div>在同一个包下 Testhashcode.java<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;core_java;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Testhashcode&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;args<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Student&nbsp;stu1&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Student("aa",17);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Student&nbsp;stu2&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Student("aa",17);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(stu1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(stu2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(stu1&nbsp;==&nbsp;stu2);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div>得出的结果：<br /><div><div>core_java.Student@55bd</div><div>core_java.Student@55bd</div><div>false<br />说明：1.system.out.println(Object)输出的是Object.toString(),Student类重写了hashcode方法，如果不重写则结果不一样<br />&nbsp; &nbsp; &nbsp; &nbsp; 2.== 比较的不仅仅是对象在虚拟机中的内存地址<br />&nbsp; &nbsp; &nbsp; &nbsp; 深入了解hashcode与内存分配：<br /><br />HashCodeMeaning.java<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;com.leo.test.action;<br /><br /><br /><span style="color: #0000FF; ">import</span>&nbsp;java.util.ArrayList;<br /><br /><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MK<br />&nbsp;*<br />&nbsp;*&nbsp;此方法的作用是证明&nbsp;java.lang.Object的hashcode&nbsp;不是代表&nbsp;对象所在内存地址。<br />&nbsp;*&nbsp;我产生了10000个对象，这10000个对象在内存中是不同的地址，但是实际上这10000个对象<br />&nbsp;*&nbsp;的hashcode的是完全可能相同的<br />&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;HashCodeMeaning&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&nbsp;list&nbsp;=&nbsp;&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ArrayList();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;numberExist=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">证明hashcode的值不是内存地址</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;10000;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;obj=<span style="color: #0000FF; ">new</span>&nbsp;Object();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(list.contains(obj.toString()))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(obj.toString()&nbsp;+"&nbsp;&nbsp;exists&nbsp;in&nbsp;the&nbsp;list.&nbsp;"+&nbsp;i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numberExist++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(obj.toString());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("repetition&nbsp;number:"+numberExist);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("list&nbsp;size:"+list.size());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">证明内存地址是不同的。</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numberExist=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.clear();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;10000;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;obj=<span style="color: #0000FF; ">new</span>&nbsp;Object();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(list.contains(obj))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(obj&nbsp;+"&nbsp;&nbsp;exists&nbsp;in&nbsp;the&nbsp;list.&nbsp;"+&nbsp;i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numberExist++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(obj);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("repetition&nbsp;number:"+numberExist);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("list&nbsp;size:"+list.size());<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div>运行输出结果：<br /><br /><div><div>java.lang.Object@922804 &nbsp;exists in the list. 1778</div><div>java.lang.Object@e29820 &nbsp;exists in the list. 2077</div><div>repetition number:2</div><div>list size:9998</div><div>repetition number:0</div><div>list size:10000<br /><br />说明：<br />存入hashcode到list中时不同对象的hashcode有可能相等，而不同对象的内存地址是不相等的<br /><br />现在脑子里还有点混乱 &nbsp;需要深刻理解下。<br />哪位可以给我点详细的资料啊？</div></div><br />补充：<br /><div><p style="text-indent:21.0pt"><span style="font-size: 9pt; font-family: 宋体; ">如果一个类没有自己定义</span><span style="font-size: 9pt; ">equals</span><span style="font-size: 9pt; font-family: 宋体; ">方法，它默认的</span><span style="font-size: 9pt; ">equals</span><span style="font-size: 9pt; font-family: 宋体; ">方法（从</span><span style="font-size: 9pt; ">Object </span><span style="font-size: 9pt; font-family: 宋体; ">类继承的）就是使用</span><span style="font-size: 9pt; ">==</span><span style="font-size: 9pt; font-family: 宋体; ">操作符，也是在比较两个变量指向的对象是否是同一对象，这时候使用</span><span style="font-size: 9pt; ">equals</span><span style="font-size: 9pt; font-family: 宋体; ">和使用</span><span style="font-size: 9pt; ">==</span><span style="font-size: 9pt; font-family: 宋体; ">会得到同样的结果，如果比较的是两个独立的对象则总返回</span><span style="font-size: 9pt; ">false</span><span style="font-size: 9pt; font-family: 宋体; ">。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同，那么你必须覆盖</span><span style="font-size: 9pt; ">equals</span><span style="font-size: 9pt; font-family: 宋体; ">方法，由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。</span></p></div><br /><br /><br /><br /><br /></div></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div></div><img src ="http://www.blogjava.net/leochiang/aggbug/384546.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-08-01 18:37 <a href="http://www.blogjava.net/leochiang/archive/2012/08/01/384546.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于昨天的问题，思考java String中汉字的问题或者说是双字节字符的问题</title><link>http://www.blogjava.net/leochiang/archive/2012/07/31/384449.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Tue, 31 Jul 2012 08:10:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/07/31/384449.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/384449.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/07/31/384449.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/384449.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/384449.html</trackback:ping><description><![CDATA[首先，判断一个字符串中是否含有双字节字符：<br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;1&nbsp;String&nbsp;str&nbsp;=&nbsp;"test中文汉字";<br />&nbsp;2&nbsp;String&nbsp;regEx&nbsp;=&nbsp;"[//u4e00-//u9fa5]";<br />&nbsp;3&nbsp;<br />&nbsp;4&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;5&nbsp;*&nbsp;判断有没有中文<br />&nbsp;6&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;7&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(str.getBytes().length&nbsp;==&nbsp;str.length())&nbsp;{<br />&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("无汉字");<br />&nbsp;9&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("有汉字");<br />11&nbsp;}<br />12&nbsp;<br />13&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />14&nbsp;*&nbsp;如果有则打印出来<br />15&nbsp;</span><span style="color: #008000; ">*/</span><br />16&nbsp;Pattern&nbsp;p&nbsp;=&nbsp;Pattern.compile(regEx);<br />17&nbsp;Matcher&nbsp;m&nbsp;=&nbsp;p.matcher(str);<br />18&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(m.find())&nbsp;{&nbsp;<br />19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(m.group(0)&nbsp;+&nbsp;"");<br />20&nbsp;} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><hr /><hr />其次，是关于昨天的面试题街区字符串的问题：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;core_java;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;StringInter&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;vd(<span style="color: #0000FF; ">char</span>&nbsp;c){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;isGB2312=<span style="color: #0000FF; ">false</span>;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">byte</span>[]&nbsp;bytes=(""+c).getBytes();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(bytes.length==2){&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;ints=<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">int</span>[2];&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ints[0]=bytes[0]&amp;&nbsp;0xff;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ints[1]=bytes[1]&amp;&nbsp;0xff;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(ints[0]&gt;=0x81&nbsp;&amp;&amp;&nbsp;ints[0]&lt;=0xFE&nbsp;&amp;&amp;&nbsp;ints[1]&gt;=0x40&nbsp;&amp;&amp;&nbsp;ints[1]&lt;=0xFE){&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isGB2312=<span style="color: #0000FF; ">true</span>;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;isGB2312;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;String&nbsp;Interception(String&nbsp;ss,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;nn)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;nn&nbsp;&gt;&nbsp;(ss.length()))&nbsp;nn&nbsp;=&nbsp;(ss.length());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;i=0;&nbsp;i&nbsp;&lt;=&nbsp;ss.length();&nbsp;i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">System.out.print("now&nbsp;nn&nbsp;is&nbsp;"&nbsp;+nn&nbsp;+&nbsp;"\n");</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;nn&nbsp;&lt;=&nbsp;0&nbsp;)&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ss;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;t&nbsp;=&nbsp;ss.charAt(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(vd(t))&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">说明是汉字&nbsp;nn减二</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(nn&nbsp;==&nbsp;1)&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ss;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(t);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nn-=2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;非汉字，nn减一</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(t);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nn--;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ss;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(&nbsp;String&nbsp;args[]&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;a&nbsp;=&nbsp;"aま哈abcdefg";&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;length()&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;charAt(0..)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">asd我是System.out.print(a.length());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">Scanner&nbsp;in&nbsp;=&nbsp;new&nbsp;Scanner(System.in);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">String&nbsp;s&nbsp;=&nbsp;in.nextLine();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">int&nbsp;n&nbsp;=&nbsp;in.nextInt();</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Interception(a,&nbsp;2);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/leochiang/aggbug/384449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-07-31 16:10 <a href="http://www.blogjava.net/leochiang/archive/2012/07/31/384449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java基本数据类型的理解</title><link>http://www.blogjava.net/leochiang/archive/2012/07/30/384311.html</link><dc:creator>leoChiang</dc:creator><author>leoChiang</author><pubDate>Mon, 30 Jul 2012 06:06:00 GMT</pubDate><guid>http://www.blogjava.net/leochiang/archive/2012/07/30/384311.html</guid><wfw:comment>http://www.blogjava.net/leochiang/comments/384311.html</wfw:comment><comments>http://www.blogjava.net/leochiang/archive/2012/07/30/384311.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leochiang/comments/commentRss/384311.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leochiang/services/trackbacks/384311.html</trackback:ping><description><![CDATA[<div>
<p style="margin-left: 21pt; text-indent: 21pt; "><span style="font-family:宋体;">在Java中有8种基本数据类型，其中6种是数值类型，另外两种分别是字符类型和布尔类型。而6种数值类型中有4种是整数类型，另外两种是浮点类型<br /></span>&nbsp; &nbsp; 基本数据类型<br />&nbsp; &nbsp; &nbsp; &nbsp; ......................数值型<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ................整数类型（byte 1字节 short 2字节 int 4字节 long 8字节）<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ................浮点类型 （float 4字节 double 8字节）<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; ......................字符型 &nbsp; （char &nbsp;2字节 存储unicode编码的字符）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ......................布尔型 &nbsp; （boolean。。。true or false）<br /><br />试题一</p><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000ff; ">switch</span>(expr)</div><span style="font-family: 宋体; ">expr只能为整数或枚举类型 &nbsp; 类型转换由低级到高级。。。（byte short char int）<br /></span>&nbsp; &nbsp;&nbsp;<span style="font-family: 宋体; ">试题 二<br /></span><div><span style="color: #333333; line-height: 28px; background-color: #f8f8f8; ">&nbsp; &nbsp; &nbsp;编写一个截取字符串的函数，输入为一个字符串和字节数，输出为按字节截取的字符串。但是要保证汉字不被截半个，如"我ABC"4，应该截为"我AB"，输入"我ABC汉DEF"6，应该输出"我ABC"，而不是"我ABC+汉的半个"。</span></div>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="background-color: #eeeeee; font-size: 13px; color: #008080; ">&nbsp;1</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px; color: #0000ff; ">package</span><span style="background-color: #eeeeee; font-size: 13px; ">&nbsp;core_java;</span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;java.util.Scanner;<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;InterceptionStr&nbsp;{<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;args<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;String&nbsp;ss;<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;n;<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;Interception(String[]&nbsp;string){<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;count&nbsp;=&nbsp;0;<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;m&nbsp;=&nbsp;"[\u4e00-\u9fa5]";<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">汉字的正则表达式</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("以每"+&nbsp;n&nbsp;+"字节划分的字符串如下所示：");<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;string.length;&nbsp;i++)&nbsp;{<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(string[i].matches(m)){<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count&nbsp;=&nbsp;count&nbsp;+&nbsp;2;<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="color: #0000FF; ">else</span>{<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count&nbsp;=&nbsp;count&nbsp;+&nbsp;1;<br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(count&lt;n){<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(string[i]);<br /><span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>(count==n){<br /><span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(string[i]);<br /><span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count&nbsp;=&nbsp;0;<br /><span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println();<br /><span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="color: #0000FF; ">else</span>{<br /><span style="color: #008080; ">29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count&nbsp;=&nbsp;0;<br /><span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println();<br /><span style="color: #008080; ">31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">33</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">34</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;String[]&nbsp;setValue(){<br /><span style="color: #008080; ">36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">此方法将字符串转化为字符串数组</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">37</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;str&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;String[ss.length()];<br /><span style="color: #008080; ">38</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">创建字符数组</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">39</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;str.length;&nbsp;i++)&nbsp;{<br /><span style="color: #008080; ">40</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str[i]&nbsp;=&nbsp;ss.substring(i,&nbsp;i+1);<br /><span style="color: #008080; ">41</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">42</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;str;<br /><span style="color: #008080; ">43</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">44</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br /><span style="color: #008080; ">45</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">46</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("请输入字符串：");<br /><span style="color: #008080; ">47</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scanner&nbsp;scStr&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Scanner(System.in);<br /><span style="color: #008080; ">48</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ss&nbsp;=&nbsp;scStr.next();<br /><span style="color: #008080; ">49</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("请输入字节数：");&nbsp;&nbsp;<br /><span style="color: #008080; ">50</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scanner&nbsp;scByte&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Scanner(System.in);<br /><span style="color: #008080; ">51</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;=&nbsp;scByte.nextInt();<br /><span style="color: #008080; ">52</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Interception(setValue());<br /><span style="color: #008080; ">53</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">54</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">55</span>&nbsp;<br /><span style="color: #008080; ">56</span>&nbsp;}<br /><span style="color: #008080; ">57</span>&nbsp;</div><p>&nbsp;得出的结果是截取的一段一段的，比题目给出的丰富了点</p><div></div>
<p>&nbsp;</p>
</div><img src ="http://www.blogjava.net/leochiang/aggbug/384311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leochiang/" target="_blank">leoChiang</a> 2012-07-30 14:06 <a href="http://www.blogjava.net/leochiang/archive/2012/07/30/384311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>