﻿<?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-johnny</title><link>http://www.blogjava.net/johnny-sang/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 11:31:22 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 11:31:22 GMT</pubDate><ttl>60</ttl><item><title>java范型介绍 （转载）</title><link>http://www.blogjava.net/johnny-sang/archive/2007/08/30/141473.html</link><dc:creator>心月狐</dc:creator><author>心月狐</author><pubDate>Thu, 30 Aug 2007 09:55:00 GMT</pubDate><guid>http://www.blogjava.net/johnny-sang/archive/2007/08/30/141473.html</guid><wfw:comment>http://www.blogjava.net/johnny-sang/comments/141473.html</wfw:comment><comments>http://www.blogjava.net/johnny-sang/archive/2007/08/30/141473.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/johnny-sang/comments/commentRss/141473.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/johnny-sang/services/trackbacks/141473.html</trackback:ping><description><![CDATA[<p align=center><span class=Title><font color=#000000>java范型简介</font></span></p>
<p><strong>一.简单认识java范型</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 经常听人说&#8220;范型&#8221;，我一直不是太明白什么叫&#8220;范型&#8221;，今天就查阅了一些文章，给我的第一感觉就是之所以在java中用范型，就是为了让一些错误在编译阶段就可以暴露出来，而不用在运行阶段才抛出异常。下面给出一个简单例子来说明。</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align=top><img style="DISPLAY: none" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span><span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 没有利用范型的例子<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align=top><img style="DISPLAY: none" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> example1()</span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span><span style="COLOR: #000000">{<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayList array</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ArrayList();<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array.add(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">this is a string</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Integer(</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">));</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">这里可以正确添加</span><span style="COLOR: #008000"><br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator iterator</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">array.iterator();<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img style="DISPLAY: none" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(iterator.hasNext())</span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span><span style="COLOR: #000000">{<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(String)iterator.next();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">编译时没错，但在运行时会抛出ClassCastException异常</span><span style="COLOR: #008000"><br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(str);<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp; }</span></span></div>
</div>
运行以上程序，会抛出 java.lang.ClassCastException异常，而该异常是在程序运行过程中才会发现的，如果我们利用了范型，则在编译阶段就会发现异常，从而保证类型转换安全。如下面程序：
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align=top><img style="DISPLAY: none" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> example2()</span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span><span style="COLOR: #000000">{<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayList</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">String</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> array</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ArrayList</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">String</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">();<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array.add(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">this is a string</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">array.add(new Integer(3));</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">编译时会报异常：The method add(String) in the type ArrayList&lt;String&gt; is not applicable for the arguments(Integer)</span><span style="COLOR: #008000"><br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">String</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> iterator</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">array.iterator();<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img style="DISPLAY: none" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(iterator.hasNext())</span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span><span style="COLOR: #000000">{<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">iterator.next();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">这里就不需要进行强制类型转换</span><span style="COLOR: #008000"><br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(str);<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp; }</span></span></div>
</div>
<p>这样，我们在编译阶段就可以捕获可能存在地危险。</p>
<p>通过以上简单例子，我们可以看出，使用java范型的好处有：</p>
<ol>
    <li>内在的类型转换优于在外部的人工转换
    <li>类型的匹配问题在编译阶段就可以发现，而不用在运行阶段 </li>
</ol>
<p><strong>二.创建自己的范型</strong></p>
<p>任何类，接口，异常，方法都可以使用范型，下面是个简单的例子，使用范型来比较两个对象的大小，两个对象必须都实现了<font face=Verdana>Comparable接口。</font></p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align=top><img style="DISPLAY: none" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">T </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> Comparable</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> T max(T t1, T t2) </span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span><span style="COLOR: #000000">{<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img style="DISPLAY: none" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(t1.compareTo(t2) </span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) </span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span><span style="COLOR: #000000">{<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> t2;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img style="DISPLAY: none" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span><span style="COLOR: #000000">{<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> t1;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></span><span style="COLOR: #000000"><br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp; }</span></span></div>
</div>
<img src ="http://www.blogjava.net/johnny-sang/aggbug/141473.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/johnny-sang/" target="_blank">心月狐</a> 2007-08-30 17:55 <a href="http://www.blogjava.net/johnny-sang/archive/2007/08/30/141473.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java其它</title><link>http://www.blogjava.net/johnny-sang/archive/2007/08/30/141470.html</link><dc:creator>心月狐</dc:creator><author>心月狐</author><pubDate>Thu, 30 Aug 2007 09:53:00 GMT</pubDate><guid>http://www.blogjava.net/johnny-sang/archive/2007/08/30/141470.html</guid><wfw:comment>http://www.blogjava.net/johnny-sang/comments/141470.html</wfw:comment><comments>http://www.blogjava.net/johnny-sang/archive/2007/08/30/141470.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/johnny-sang/comments/commentRss/141470.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/johnny-sang/services/trackbacks/141470.html</trackback:ping><description><![CDATA[<p>1.&nbsp;打jar包<br>&nbsp;&nbsp;&nbsp;&nbsp;默认保存到C:\Documents and Settings\Administrator</p>
<p>&nbsp;&nbsp;&nbsp;jar cvf 要保存的名字&nbsp;&nbsp; 路径</p>
<p>&nbsp;&nbsp;&nbsp;例如&nbsp;&nbsp;&nbsp;jar&nbsp;&nbsp;&nbsp; cvf&nbsp;&nbsp;&nbsp;&nbsp; upload.jar&nbsp;&nbsp;&nbsp; D:\project\hospital\web\WEB-INF\lib\a\upload</p>
<img src ="http://www.blogjava.net/johnny-sang/aggbug/141470.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/johnny-sang/" target="_blank">心月狐</a> 2007-08-30 17:53 <a href="http://www.blogjava.net/johnny-sang/archive/2007/08/30/141470.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单的MD5加密</title><link>http://www.blogjava.net/johnny-sang/archive/2007/08/30/141469.html</link><dc:creator>心月狐</dc:creator><author>心月狐</author><pubDate>Thu, 30 Aug 2007 09:51:00 GMT</pubDate><guid>http://www.blogjava.net/johnny-sang/archive/2007/08/30/141469.html</guid><wfw:comment>http://www.blogjava.net/johnny-sang/comments/141469.html</wfw:comment><comments>http://www.blogjava.net/johnny-sang/archive/2007/08/30/141469.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/johnny-sang/comments/commentRss/141469.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/johnny-sang/services/trackbacks/141469.html</trackback:ping><description><![CDATA[<p>package com.MD5;<br>import java.security.*;</p>
<p>import java.security.spec.*;</p>
<p><br>public class MD5{</p>
<p>public static String getMD5(String s){</p>
<p>&nbsp;&nbsp; char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};<br>&nbsp;&nbsp; try<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; byte[] strTemp = s.getBytes();<br>&nbsp;&nbsp;&nbsp; MessageDigest mdTemp = MessageDigest.getInstance("MD5");<br>&nbsp;&nbsp;&nbsp; mdTemp.update(strTemp);<br>&nbsp;&nbsp;&nbsp; byte[] md = mdTemp.digest();<br>&nbsp;&nbsp;&nbsp; int j = md.length;<br>&nbsp;&nbsp;&nbsp; char str[] = new char[j*2];<br>&nbsp;&nbsp;&nbsp; int k = 0;<br>&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; j; i++) <br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; byte byte0 = md[i];<br>&nbsp;&nbsp;&nbsp;&nbsp; str[k++] = hexDigits[byte0 &gt;&gt;&gt; 4 &amp; 0xf];<br>&nbsp;&nbsp;&nbsp;&nbsp; str[k++] = hexDigits[byte0 &amp; 0xf];<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return new String(str);<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; catch (Exception e)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; return null;<br>&nbsp;&nbsp; }<br>}<br>public static void main(String[] args)<br>{<br>&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp; System.out.print(MD5.getMD5("张三"));</p>
<p>}<br>}</p>
<img src ="http://www.blogjava.net/johnny-sang/aggbug/141469.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/johnny-sang/" target="_blank">心月狐</a> 2007-08-30 17:51 <a href="http://www.blogjava.net/johnny-sang/archive/2007/08/30/141469.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>获取时间</title><link>http://www.blogjava.net/johnny-sang/archive/2007/08/30/141468.html</link><dc:creator>心月狐</dc:creator><author>心月狐</author><pubDate>Thu, 30 Aug 2007 09:49:00 GMT</pubDate><guid>http://www.blogjava.net/johnny-sang/archive/2007/08/30/141468.html</guid><wfw:comment>http://www.blogjava.net/johnny-sang/comments/141468.html</wfw:comment><comments>http://www.blogjava.net/johnny-sang/archive/2007/08/30/141468.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/johnny-sang/comments/commentRss/141468.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/johnny-sang/services/trackbacks/141468.html</trackback:ping><description><![CDATA[<p>String t=String.valueOf(System.currentTimeMillis());//获得时间（精确到毫秒）</p>
<p>首先System.currentTimeMillis()产生一个当前的毫秒，这个毫秒其实就是自1970年1月1日0时起的毫秒数，Date()其实就是相当于Date(System.currentTimeMillis());因为Date类还有构造Date(long date)，用来计算long秒与1970年1月1日之间的毫秒差。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 得到了这个毫秒数，我们自己也可以算起现在的年月日周时，但是这不是我们去计算的，因为有Calendar。Calendar最终出的结果就是年月日周时时区。</p>
<p>也可以用这个来做上传文件的名称（那就不可能有重复值了哦）</p>
<img src ="http://www.blogjava.net/johnny-sang/aggbug/141468.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/johnny-sang/" target="_blank">心月狐</a> 2007-08-30 17:49 <a href="http://www.blogjava.net/johnny-sang/archive/2007/08/30/141468.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>