﻿<?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-不过而而-随笔分类-Java</title><link>http://www.blogjava.net/lincode/category/33765.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 16 Jun 2010 18:01:34 GMT</lastBuildDate><pubDate>Wed, 16 Jun 2010 18:01:34 GMT</pubDate><ttl>60</ttl><item><title>『摘录』 Java   中的 transient 和 volatile 关键字 </title><link>http://www.blogjava.net/lincode/archive/2010/06/14/323584.html</link><dc:creator>lincode</dc:creator><author>lincode</author><pubDate>Mon, 14 Jun 2010 15:03:00 GMT</pubDate><guid>http://www.blogjava.net/lincode/archive/2010/06/14/323584.html</guid><wfw:comment>http://www.blogjava.net/lincode/comments/323584.html</wfw:comment><comments>http://www.blogjava.net/lincode/archive/2010/06/14/323584.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lincode/comments/commentRss/323584.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lincode/services/trackbacks/323584.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="word-spacing: 0px; font: medium 'Times New Roman'; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span class="Apple-style-span" style="font-size: 14px; line-height: 25px; font-family: 宋体; text-align: left">
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px 0px; padding-top: 0px; word-wrap: break-word">　　<strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px; word-wrap: break-word">transient:</strong></p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px 0px; padding-top: 0px; word-wrap: break-word">　　java有个特点就是序列化，简单地来说就是可以将这个类存储在物理空间（当然还是以文件的形式存在），那么当你从本地还原这个文件时，你可以将它转换为它本身。这可以极大地方便网络上的一些操作，但同时，因为涉及到安全问题，所以并不希望把类里面所有的东西都能存储（因为那样，别人可以通过序列化知道类里面的内容），那么我们就可以用上transient这个关键字，它的意思是临时的，即不会随类一起序列化到本地，所以当还原后，这个关键字定义的变量也就不再存在。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px 0px; padding-top: 0px; word-wrap: break-word">　　<strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px; word-wrap: break-word">volatile:</strong></p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px 0px; padding-top: 0px; word-wrap: break-word">　　Volatile 修饰的成员变量在每次被线程访问时，都强迫从共享内存中重读该成员变量的值。而且，当成员变量发生变化时，强迫线程将变化值回写到共享内存。这样在任何时刻，两个不同的线程总是看到某个成员变量的同一个值。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px 0px; padding-top: 0px; word-wrap: break-word">　　Java 语言规范中指出：为了获得最佳速度，允许线程保存共享成员变量的私有拷贝，而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px 0px; padding-top: 0px; word-wrap: break-word">　　这样当多个线程同时与某个对象交互时，就必须要注意到要让线程及时的得到共享成员变量的变化。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px 0px; padding-top: 0px; word-wrap: break-word">　　而volatile关键字就是提示VM：对于这个成员变量不能保存它的私有拷贝，而应直接与共享成员变量交互。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px 0px; padding-top: 0px; word-wrap: break-word">　　使用建议：在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中，或者为常量时，不必使用。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px 0px; padding-top: 0px; word-wrap: break-word">　　由于使用volatile屏蔽掉了VM中必要的代码优化，所以在效率上比较低，因此一定在必要时才使用此关键字。</p>
</span></span>
<img src ="http://www.blogjava.net/lincode/aggbug/323584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lincode/" target="_blank">lincode</a> 2010-06-14 23:03 <a href="http://www.blogjava.net/lincode/archive/2010/06/14/323584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 中的 字符集 和 编码</title><link>http://www.blogjava.net/lincode/archive/2010/04/29/319743.html</link><dc:creator>lincode</dc:creator><author>lincode</author><pubDate>Thu, 29 Apr 2010 15:31:00 GMT</pubDate><guid>http://www.blogjava.net/lincode/archive/2010/04/29/319743.html</guid><wfw:comment>http://www.blogjava.net/lincode/comments/319743.html</wfw:comment><comments>http://www.blogjava.net/lincode/archive/2010/04/29/319743.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lincode/comments/commentRss/319743.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lincode/services/trackbacks/319743.html</trackback:ping><description><![CDATA[<br />
<strong style="font-size: 14pt">一 基本概念</strong><br />
这篇文章比较清楚地讲述了字符集和编码的基本概念<br />
http://www.regexlab.com/zh/encoding.htm<br />
<br />
摘抄：<br />
<p>各个国家和地区所制定的不同 ANSI 编码标准中，都只规定了各自语言所需的&#8220;字符&#8221;。比如：汉字标准（GB2312）中没有规定韩国语字符怎样存储。这些 ANSI 编码标准所规定的内容包含两层含义：</p>
<ol>
    <li>使用哪些字符。也就是说哪些汉字，字母和符号会被收入标准中。所包含&#8220;字符&#8221;的集合就叫做&#8220;<strong>字符集</strong>&#8221;。 </li>
    <li>规定每个&#8220;字符&#8221;分别用一个字节还是多个字节存储，用哪些字节来存储，这个规定就叫做&#8220;<strong>编码</strong>&#8221;。 </li>
</ol>
<p>各个国家和地区在制定编码标准的时候，&#8220;字符的集合&#8221;和&#8220;编码&#8221;一般都是同时制定的。因此，平常我们所说的&#8220;字符集&#8221;，比如：GB2312, GBK, JIS 等，除了有&#8220;字符的集合&#8221;这层含义外，同时也包含了&#8220;编码&#8221;的含义。</p>
<p>&#8220;<strong>UNICODE 字符集</strong>&#8221;包含了各种语言中使用到的所有&#8220;字符&#8221;。用来给 UNICODE 字符集编码的标准有很多种，比如：UTF-8, UTF-7, UTF-16, UnicodeLittle, UnicodeBig 等。</p>
<br />
<span style="font-size: 14pt"><strong>二 eclipse 中对于编码方式的设置</strong></span><br />
<br />
<span style="font-size: 14pt">1 源文件的编码设置</span><br />
<br />
preference -&gt; general -&gt; Content Types&nbsp;<br />
右边选择文件类型，右下更新 缺省编码方式<br />
<br />
2 控制台的编码设置<br />
Run -&gt; Run configuration( 或 Debug configuration)<br />
右边选项卡中&nbsp;common, 一般为最后一项<br />
在 console encoding 的 other 中选取需要的 编码方式<br />
<br />
<strong style="font-size: 14pt">三 java 中的 编码转换</strong><br />
<br />
byte[]&nbsp;bytes = oldStr.getBytes(); //默认编码方式下的字节数组<br />
String newStr = new String( bytes, "UTF-8" ); //转换成 UTF-8 编码下的字符串<br />
<br />
<br />
&nbsp;<br />
   <img src ="http://www.blogjava.net/lincode/aggbug/319743.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lincode/" target="_blank">lincode</a> 2010-04-29 23:31 <a href="http://www.blogjava.net/lincode/archive/2010/04/29/319743.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 返回原值的引用还是拷贝的引用</title><link>http://www.blogjava.net/lincode/archive/2010/02/24/313833.html</link><dc:creator>lincode</dc:creator><author>lincode</author><pubDate>Wed, 24 Feb 2010 13:36:00 GMT</pubDate><guid>http://www.blogjava.net/lincode/archive/2010/02/24/313833.html</guid><wfw:comment>http://www.blogjava.net/lincode/comments/313833.html</wfw:comment><comments>http://www.blogjava.net/lincode/archive/2010/02/24/313833.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lincode/comments/commentRss/313833.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lincode/services/trackbacks/313833.html</trackback:ping><description><![CDATA[<br />
Java 中函数参数传递和函数返回值都是以值方式传递的。当然，对于对象，我们也可以说是引用的方式传递，其实传递也是值，只不过是引用值。引用是一个对象的别名，对于引用的修改就是对于对象本身的修改。<br />
<br />
为了便于理解还是可以说成是两种类型，原始类型以值方式传递，对象以引用方式传递。<br />
<br />
向函数里传递参数，已经有很多java教程讲解了。这里主要记录一个 函数返回值的问题。在返回一个对象时，是返回值本身的应用，还是拷贝这个值，再传拷贝的引用呢。这是需要考虑清楚的。<br />
<br />
这个问题，是我在 不同手机上调试 J2ME 程序时遇到的。<br />
<br />
具体如下，这是一个关于时间的工具类。我发觉 <span style="color: #000000;">Calendar 的 getTime()</span> 在有的机器下 如 Nokia，返回的 <span style="color: #000000;">Calendar </span>当前时间的一个拷贝的引用，而 SAMSUNG 则直接返回 <span style="color: #000000;">Calendar </span>的当前时间的引用。这导致，我在想得到一个时间所在那一的起始时间和结束时间时，总是得到相同的值，即后一次调用的值。按照，比较正常的理解，这里应该返回拷贝的引用比较正确，就是说 SAMSUNG 的 JVM 实现有些问题。面对这种情况，我只能先用 Date 类 返回 一个 long 值，再用 long 值构造一个新日期，即日历当前日期的拷贝，返回这个拷贝。<br />
<br />
修改函数中的最后一行为<br />
return new Date(fCalendar.getTime().getTime());<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;Date&nbsp;fCalendar&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Calendar.getInstance();<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Get&nbsp;the&nbsp;beginning&nbsp;of&nbsp;a&nbsp;day<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;date&nbsp;&lt;description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@return</span><span style="color: #008000;">&nbsp;&lt;description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;Date&nbsp;getBeginOfDay(&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;Date&nbsp;pDate&nbsp;)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fCalendar.setTime(&nbsp;pDate&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fCalendar.set(&nbsp;Calendar.HOUR_OF_DAY,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fCalendar.set(&nbsp;Calendar.MINUTE,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fCalendar.set(&nbsp;Calendar.SECOND,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(ArrayIndexOutOfBoundsException&nbsp;ex){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;fCalendar.getTime();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Get&nbsp;the&nbsp;end&nbsp;of&nbsp;a&nbsp;day<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;date&nbsp;&lt;description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080;">@return</span><span style="color: #008000;">&nbsp;&lt;description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;Date&nbsp;getEndOfDay(&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;Date&nbsp;pDate&nbsp;){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fCalendar.setTime(&nbsp;pDate&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fCalendar.set(&nbsp;Calendar.HOUR_OF_DAY,&nbsp;</span><span style="color: #000000;">23</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fCalendar.set(&nbsp;Calendar.MINUTE,&nbsp;</span><span style="color: #000000;">59</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fCalendar.set(&nbsp;Calendar.SECOND,&nbsp;</span><span style="color: #000000;">59</span><span style="color: #000000;">&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(ArrayIndexOutOfBoundsException&nbsp;ex){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;fCalendar.getTime();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
<br />
<br />
<br />
<br />
  <img src ="http://www.blogjava.net/lincode/aggbug/313833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lincode/" target="_blank">lincode</a> 2010-02-24 21:36 <a href="http://www.blogjava.net/lincode/archive/2010/02/24/313833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 字符串链接</title><link>http://www.blogjava.net/lincode/archive/2010/02/10/312542.html</link><dc:creator>lincode</dc:creator><author>lincode</author><pubDate>Wed, 10 Feb 2010 10:46:00 GMT</pubDate><guid>http://www.blogjava.net/lincode/archive/2010/02/10/312542.html</guid><wfw:comment>http://www.blogjava.net/lincode/comments/312542.html</wfw:comment><comments>http://www.blogjava.net/lincode/archive/2010/02/10/312542.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lincode/comments/commentRss/312542.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lincode/services/trackbacks/312542.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原则很简单: 不要使用 字符串链接操作符来合并多个字符串，除非性能无关紧要。相反，应该使用StringBuffer的append方法，或者采用其它的方案，比如使用字符数组，或者每次只处理一个字符串，而不是将它们组合起来。&nbsp;&nbsp;<a href='http://www.blogjava.net/lincode/archive/2010/02/10/312542.html'>阅读全文</a><img src ="http://www.blogjava.net/lincode/aggbug/312542.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lincode/" target="_blank">lincode</a> 2010-02-10 18:46 <a href="http://www.blogjava.net/lincode/archive/2010/02/10/312542.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2me 中的 Log : log4j2me</title><link>http://www.blogjava.net/lincode/archive/2010/01/28/311018.html</link><dc:creator>lincode</dc:creator><author>lincode</author><pubDate>Wed, 27 Jan 2010 17:13:00 GMT</pubDate><guid>http://www.blogjava.net/lincode/archive/2010/01/28/311018.html</guid><wfw:comment>http://www.blogjava.net/lincode/comments/311018.html</wfw:comment><comments>http://www.blogjava.net/lincode/archive/2010/01/28/311018.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lincode/comments/commentRss/311018.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lincode/services/trackbacks/311018.html</trackback:ping><description><![CDATA[J2me 中使用 Log， 可以使用搜索引擎搜索下载 log4j2me.<br />
<br />
使用方法和 j2se 中有一些区别，下面是在 log4j2me 包中的一个例子<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">package</span><span style="color: #000000;">&nbsp;log4j2me.test;&nbsp;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.apache.log4j.</span><span style="color: #000000;">*</span><span style="color: #000000;">;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.apache.log4j.helpers.LogLog;<br />
<br />
</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;Very&nbsp;simple&nbsp;log4j&nbsp;usage&nbsp;example.<br />
<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">@author</span><span style="color: #008000;">&nbsp;&nbsp;Ceki&nbsp;G&amp;uuml;lc&amp;uuml;,&nbsp;Witmate&nbsp;&nbsp;<br />
&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Modifiers:&nbsp;&nbsp;&nbsp;&nbsp;Witmate&nbsp;[Nov,2004:&nbsp;Modified&nbsp;for&nbsp;log4j2me]</span><span style="color: #008000;"><br />
</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Hello&nbsp;{<br />
<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;Category&nbsp;log&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Category.getInstance(Hello.</span><span style="color: #0000ff;">class</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;Category&nbsp;log1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Category.getInstance(</span><span style="color: #000000;">"</span><span style="color: #000000;">Hello</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;main(String&nbsp;argv[])&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;Category&nbsp;root&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Category.getRoot();<br />
&nbsp;&nbsp;&nbsp; root.setPriority( Priority.DEBUG );<br />
&nbsp;&nbsp;&nbsp;&nbsp;Layout&nbsp;layout&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;PatternLayout(</span><span style="color: #000000;">"</span><span style="color: #000000;">%p&nbsp;[%t]&nbsp;%c&nbsp;-&nbsp;%m%n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root.addAppender(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileAppender(layout,&nbsp;System.out));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(Exception&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LogLog.warn(</span><span style="color: #000000;">"</span><span style="color: #000000;">Could&nbsp;not&nbsp;open&nbsp;file&nbsp;appender.</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;log.debug(</span><span style="color: #000000;">"</span><span style="color: #000000;">Hello&nbsp;world.</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;log.info(</span><span style="color: #000000;">"</span><span style="color: #000000;">What&nbsp;a&nbsp;beatiful&nbsp;day.</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;log1.debug(</span><span style="color: #000000;">"</span><span style="color: #000000;">Hello&nbsp;world.</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;log1.info(</span><span style="color: #000000;">"</span><span style="color: #000000;">What&nbsp;a&nbsp;beatiful&nbsp;day.</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;}<br />
}</span></div>
<br />
<br />
<br />
<br />
 <img src ="http://www.blogjava.net/lincode/aggbug/311018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lincode/" target="_blank">lincode</a> 2010-01-28 01:13 <a href="http://www.blogjava.net/lincode/archive/2010/01/28/311018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>嵌套类和内部类</title><link>http://www.blogjava.net/lincode/archive/2008/08/13/221594.html</link><dc:creator>lincode</dc:creator><author>lincode</author><pubDate>Tue, 12 Aug 2008 20:49:00 GMT</pubDate><guid>http://www.blogjava.net/lincode/archive/2008/08/13/221594.html</guid><wfw:comment>http://www.blogjava.net/lincode/comments/221594.html</wfw:comment><comments>http://www.blogjava.net/lincode/archive/2008/08/13/221594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lincode/comments/commentRss/221594.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lincode/services/trackbacks/221594.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Java将嵌套类分成两个主要的分类：静态嵌套类（static nested classes）和内部类（inner classes）&nbsp;&nbsp;<a href='http://www.blogjava.net/lincode/archive/2008/08/13/221594.html'>阅读全文</a><img src ="http://www.blogjava.net/lincode/aggbug/221594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lincode/" target="_blank">lincode</a> 2008-08-13 04:49 <a href="http://www.blogjava.net/lincode/archive/2008/08/13/221594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>