﻿<?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-饶荣庆 -- 您今天UCWEB了吗？--http://www.ucweb.com</title><link>http://www.blogjava.net/gooogle/</link><description> &lt;a href="http://www.3geye.net"&gt;&lt;color ="0xFFFFFF"&gt;3G 手机开发网&lt;/color&gt;&lt;/a&gt;</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 19:24:06 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 19:24:06 GMT</pubDate><ttl>60</ttl><item><title>自己在校内做了歌UCWEB的插件</title><link>http://www.blogjava.net/gooogle/archive/2008/09/22/230348.html</link><dc:creator>3G工作室</dc:creator><author>3G工作室</author><pubDate>Mon, 22 Sep 2008 01:51:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2008/09/22/230348.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/230348.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2008/09/22/230348.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/230348.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/230348.html</trackback:ping><description><![CDATA[<div class="blog_content">
<p>前几天，到校内玩下开发者，体验下现在户互联网上最新的开放平台。因此自己搞个可以在互联网上体验<a href="javascript:;" onclick="javascript:tagshow(event, 'UCWEB');" target="_self"><u><strong>UCWEB</strong></u></a>的插件。</p>
<p>&nbsp;</p>
<p>不过插件很简单只是个引用而已</p>
<p>&nbsp;</p>
<p>各位老大有兴趣也可以体验下啊。</p>
<p>&nbsp;</p>
<p>安装地址</p>
<p><a href="http://apps.xiaonei.com/goucweb">http://apps.xiaonei.com/goucweb</a></p>
</div><img src ="http://www.blogjava.net/gooogle/aggbug/230348.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G工作室</a> 2008-09-22 09:51 <a href="http://www.blogjava.net/gooogle/archive/2008/09/22/230348.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EasyMF 新版本放出 0.1.1</title><link>http://www.blogjava.net/gooogle/archive/2008/06/07/206508.html</link><dc:creator>3G工作室</dc:creator><author>3G工作室</author><pubDate>Sat, 07 Jun 2008 04:45:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2008/06/07/206508.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/206508.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2008/06/07/206508.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/206508.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/206508.html</trackback:ping><description><![CDATA[<p>
作者：wuhua<br />
空间：<a href="htt://wuhua.3geye.net" target="_blank" title="htt://wuhua.3geye.net">htt://wuhua.3geye.net</a>
<br />
转载请保留上面的信息（请尊重知识产品）谢谢
</p>
<p><br />
</p>
<p>EasyMF  简易J2ME开发框架 </p>
<p><strong> 目标： 设计一个简单，稳定，可快速开发的J2ME开发框架。 </strong></p>
<p><strong> 一.说明：
<ol>
    <li>此框架的意图是解决手机软件开发中常遇到，并且可以通用话的问题。 </li>
    <li>旨在提高无线应用程序的开发效率 </li>
</ol>
</strong></p>
<p><strong> 二.EasyMF 能做什么
<ol>
    <li>简化UI设计 </li>
    <li>RMS的简化操作 </li>
    <li>简单的日志框架 </li>
    <li>简单的联网框架 </li>
    <li>通用工具的设计 </li>
    <li>一些图形相关的特效 </li>
</ol>
</strong></p>
<strong> 三.EasyMF 的功能列表
<ol>
    <li>UI 框架 </li>
    <li>日志框架 </li>
    <li>RMS框架 </li>
    <li>通用工具框架 </li>
    <li>图形相关 </li>
    <li>一堆有用的DEMO</li>
</ol>
这个版本更新了0.1.0的一些bug， 设计完成了Logger的设计。基本完成了日志框架的设计。<br />
日志框架支持的功能有<br />
1. 按tag分类<br />
2. 支持保存到rms中<br />
3.支持从rms中载入日志<br />
4.支持日志的显示在手机上供开发者查看。<br />
5.支持对debug，error，info的日志级别<br />
6.准备支持（日志的网络存储接口）<br />
7.准备支持日志的即时查看（比如即时在手机屏幕上显示）方便日志的调试。<br />
<br />
</strong><a href="http://www.3geye.net/batch.download.php?aid=175" target="_blank"><img src="http://www.3geye.net/attachments/2008/06/3_200806071208501.jpg" border="0"  alt="" /></a><br />
<br />
项目主页<a href="http://code.google.com/p/easymf/" target="_blank">http://code.google.com/p/easymf/</a><img src ="http://www.blogjava.net/gooogle/aggbug/206508.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G工作室</a> 2008-06-07 12:45 <a href="http://www.blogjava.net/gooogle/archive/2008/06/07/206508.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EasyMF 简易J2ME开发框架</title><link>http://www.blogjava.net/gooogle/archive/2008/06/04/205719.html</link><dc:creator>3G工作室</dc:creator><author>3G工作室</author><pubDate>Wed, 04 Jun 2008 02:05:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2008/06/04/205719.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/205719.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2008/06/04/205719.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/205719.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/205719.html</trackback:ping><description><![CDATA[<strong>关键字: easymf</strong>
<div>
<p>作者：wuhua<br />
空间：<a href="htt://wuhua.3geye.net" target="_blank">htt://wuhua.3geye.net</a>
<br />
转载请保留上面的信息（请尊重知识产品）谢谢</p>
<p>
EasyMF&nbsp; 简易J2ME开发框架<br />
<span style="color: #0001ff;">EasyMF&nbsp; ---&nbsp;&nbsp; Easy Mobile Framework</span>
<br />
目标： 设计一个简单，稳定，可快速开发的J2ME开发框架。<br />
一.说明：<br />
&nbsp;&nbsp; 此框架的意图是解决手机软件开发中常遇到，并且可以通用话的问题。<br />
&nbsp;&nbsp; 旨在提高无线应用程序的开发效率<br />
二.EasyMF 能做什么<br />
&nbsp;&nbsp; 1.简化UI设计<br />
&nbsp;&nbsp; 2.RMS的简化操作<br />
&nbsp;&nbsp; 3.简单的日志框架<br />
&nbsp;&nbsp; 4.简单的联网框架<br />
&nbsp;&nbsp; 5.通用工具的设计<br />
&nbsp;&nbsp; 6.一些图形相关的特效<br />
三.EasyMF 的功能列表<br />
&nbsp;&nbsp; 1.UI 框架<br />
&nbsp;&nbsp; 2.日志框架<br />
&nbsp;&nbsp; 3.RMS框架<br />
&nbsp;&nbsp; 4.通用工具框架<br />
&nbsp;&nbsp; 5.图形相关<br />
&nbsp;&nbsp; 6.一堆有用的DEMO &nbsp;<br />
四.EasyMF 的设计原理<br />
&nbsp;&nbsp; 1.UI的设计原理<br />
&nbsp;&nbsp;&nbsp;&nbsp; UI是所有应用程序的核心。 这些核心在PC上的变动性比较固定，而由于手机屏幕，<br />
&nbsp;&nbsp;&nbsp;&nbsp; 运算能力 等差异，会导致设计一个手机软件大部分时间都花在UI层的设计上，业务<br />
&nbsp;&nbsp;&nbsp;&nbsp; 逻辑层往往比较少，这也就是80/20原则吧。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果有一个可以组装的UI的出现，将大大减少应用程序的开发时间，而EasyMF UI<br />
&nbsp;&nbsp;&nbsp;&nbsp; 层就是为了这个而设计的。<br />
&nbsp;&nbsp;&nbsp; 2.日志框架设计成尽量的简单，并且有效的记录下用户想需要记录的日志<br />
&nbsp;&nbsp;&nbsp; 3.联网框架，简化Http的联网，并十分的符合中国网络环境的东西。<br />
&nbsp;&nbsp;&nbsp; 4.工具集合<br />
&nbsp;&nbsp;&nbsp; 5.图形图片处理<br />
&nbsp;&nbsp;&nbsp; 6.RMS的简易操作<br />
<br />
上面是基本结构<br />
<br />
源代码 http://code.google.com/p/easymf/</p>
</div><img src ="http://www.blogjava.net/gooogle/aggbug/205719.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G工作室</a> 2008-06-04 10:05 <a href="http://www.blogjava.net/gooogle/archive/2008/06/04/205719.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>探讨J2ME 流媒体的实现</title><link>http://www.blogjava.net/gooogle/archive/2008/05/27/203127.html</link><dc:creator>3G工作室</dc:creator><author>3G工作室</author><pubDate>Tue, 27 May 2008 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2008/05/27/203127.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/203127.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2008/05/27/203127.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/203127.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/203127.html</trackback:ping><description><![CDATA[<p>作者：wuhua<br />
空间：<a href="htt://wuhua.3geye.net" target="_blank">htt://wuhua.3geye.net</a>
<br />
转载请保留上面的信息（请尊重知识产品）谢谢</p>
<p>记得以前看过一篇高手写的文章。</p>
<p><a href="http://www.cnblogs.com/zhengyun_ustc/archive/2006/03/28/j2me_streaming_demo.html" target="_blank">http://www.cnblogs.com/zhengyun_ustc/archive/2006/03/28/j2me_streaming_demo.html</a></p>
<p>这种思想需要用到两个线程去控制视频的播放，感觉思路是好的，不过比较复杂。</p>
<p>上个礼拜我结合了上面高手的思路，自己总结了另外一直播放的方式。 那就是队列的方式。</p>
<p>我们可以采用一些元数据的描述方式。来指导媒体播放类型，播放名车，已经播放路径，播放队列的。我们的程序只需要解释下这个元数据，并且按照这种元素局的格式来获取媒体播放队列，最后采用一个线程构造播放队列的方式进行播放。</p>
<p>下面看看我是怎么样描述这些数据的</p>
<p>&lt;root name="wuhua"&gt;<br />
&lt;li url="/video.xml"&gt;MTV&lt;/li&gt;<br />
&lt;li url="/music.xml"&gt;MUSIC&lt;/li&gt;<br />
&lt;/root&gt;</p>
<p>上面的是一些xml播放列表描述文件。</p>
<p>这段是指定一些参数以及一些媒体编码。跟播放队列。</p>
<p>&lt;video name="信乐团--离歌" desc="about" encode="audio/x-wav" &gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/0.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/1.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/2.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/3.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/4.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/5.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/6.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/7.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/8.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/9.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/10.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/11.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/12.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/13.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/14.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/15.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/16.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/17.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/18.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/19.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/20.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/21.wav&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/22.wav&lt;/item&gt;&nbsp;&nbsp; &nbsp;<br />
&lt;/video&gt;</p>
<p>这是一部小电影的播放队列</p>
<p>&lt;video name="一部很简单的电影" desc="about" encode="video/mpeg" &gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/0.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/1.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/2.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/3.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/4.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/5.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/6.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/7.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/8.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/9.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/10.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/11.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/12.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/13.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/14.mpg&lt;/item&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;item&gt;/15.mpg&lt;/item&gt;<br />
&lt;/video&gt;</p>
<p>我基本已经实现了上面的流媒体播放方式，不过在测试的过程中发现在播放音频，或者视频设备的时候，感觉到</p>
<p>两个Player之间切换有点卡，大概卡那么0.1秒。暂时还没有想到解决办法。 </p>
<p>有好东西需要跟大家分享。你有好思路吗，大家分享下吧。</p>
<p>PS： 实现上面的流媒体方法，采用了EasyMF 框架</p><img src ="http://www.blogjava.net/gooogle/aggbug/203127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G工作室</a> 2008-05-27 10:11 <a href="http://www.blogjava.net/gooogle/archive/2008/05/27/203127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>再次复习 ： 运算符和表达式 </title><link>http://www.blogjava.net/gooogle/archive/2008/04/17/193654.html</link><dc:creator>3G工作室</dc:creator><author>3G工作室</author><pubDate>Thu, 17 Apr 2008 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2008/04/17/193654.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/193654.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2008/04/17/193654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/193654.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/193654.html</trackback:ping><description><![CDATA[<p>出自 <a href="http://www.3geye.net/?3/viewspace-3425" target="_blank">http://www.3geye.net/?3/viewspace-3425</a></p>
<p><br />
</p>
<p><a href="http://www.3geye.net/?3/viewspace-3425" target="_blank"><strong><span style="font-size: x-small;">
<pre>这里排版不好可以到原文查看</pre>
</span></strong></a></p>
<p>运 算 符 指 明 对 操 作 数 所 进 行 的 运 算 。 按 操 作 数 的 数 目 来 分 ,可 以 有 一 元 运 算 符 (如 ++、<br />
<br />
-),二 元 运 算 符 (如 +、 ＞)和 三 元 运 算 符 (如 ?:),它 们 分 别 对 应 于 一 个 、 两 个 和 三 个 操 作 数 。 对<br />
<br />
于 一 元 运 算 符 来 说 ,可 以 有 前 缀 表 达 式 (如 ++i )和 后 缀 表 达 式 (如 i++),对 于 二 元 运 算 符 来 说 则<br />
<br />
采 用 中 缀 表 达 式 (如 a+b)。 按 照 运 算 符 功 能 来 分 ,基 本 的 运 算 符 有 下 面 几 类 :<br />
<br />
1.算 术 运 算 符 (+,-,*,/,%,++,--)<br />
<br />
2.关 系 运 算 符 (＞,＜,＞=,＜=,==,!=)<br />
<br />
3.布 尔 逻 辑 运 算 符 (!,&amp;&amp;,||)<br />
<br />
4.位 运 算 符 (＞＞,＜＜,＞＞＞,&amp;,|,^,～ )<br />
<br />
5.赋 值 运 算 符 (=,及 其 扩 展 赋 值 运 算 符 如 +=)<br />
<br />
6.条 件 运 算 符 ( ?:)<br />
<br />
7.其 它 (包 括 分 量 运 算 符 ? ,下 标 运 算 符 [],实 例 运 算 符 instanc eof,内 存 分 配 运 算 符 new,强 制 类<br />
<br />
型 转 换 运 算 符 (类 型 ),方 法 调 用 运 算 符 () 等 )<br />
<br />
本 章 中 我 们 主 要 讲 述 前 6类 运 算 符 。<br />
<br />
&#167; 3.1算 术 运 算 符<br />
<br />
算 术 运 算 符 作 用 于 整 型 或 浮 点 型 数 据 ,完 成 算 术 运 算 。<br />
<br />
一 、 二 元 算 术 运 算 符 ,如 下 表 所 示<br />
<br />
运算符 用法 描述<br />
<br />
+ op1+op2 加<br />
<br />
- op1-op2 减<br />
<br />
* op1*op2 乘<br />
<br />
/ op1/op2 除<br />
<br />
% op1%op2 取模(求余)<br />
<br />
Java对 加 运 算 符 进 行 了 扩 展 ,使 它 能 够 进 行 字 符 串 的 连 接 ,如 "abc"+"de",得 到 串 "abcde"。 我<br />
<br />
们 将 在 第 七 章 中 讲 解 。<br />
<br />
与 C、 C++不 同 ,对 取 模 运 算 符 %来 说 ,其 操 作 数 可 以 为 浮 点 数 , 如 37.2%10=7.2。<br />
<br />
二 、 一 元 算 术 运 算 符 ,如 下 表 所 示 :<br />
<br />
运算符 用法 描述<br />
<br />
+ +op 正值<br />
<br />
- -op 负值<br />
<br />
++ ++op,op++ 加1<br />
<br />
-- --op,op-- 减1<br />
<br />
i++与 ++i的 区 别<br />
<br />
i++在 使 用 i之 后 ,使 i的 值 加 1,因 此 执 行 完 i++后 ,整 个 表 达 式 的 值 为 i,而 i的 值 变 为 i+1。<br />
<br />
++i在 使 用 i之 前 ,使 i的 值 加 1,因 此 执 行 完 ++i后 ,整 个 表 达 式 和 i的 值 均 为 i+1。<br />
<br />
对 i--与 --i同 样 。<br />
<br />
例 3.1.下 面 的 例 子 说 明 了 算 术 运 算 符 的 使 用<br />
<br />
public class ArithmaticOp{<br />
<br />
public static void main( String args[] ){<br />
<br />
int a=5+4; //a=9<br />
<br />
int b=a*2; //b=18<br />
<br />
int c=b/4; //c=4<br />
<br />
int d=b-c; //d=14<br />
<br />
int e=-d; //e=-14<br />
<br />
int f=e%4; //f=-2<br />
<br />
double g=18.4;<br />
<br />
double h=g%4; //h=2.4<br />
<br />
int i=3;<br />
<br />
int j=i++; //i=4,j=3<br />
<br />
int k=++i; //i=5,k=5<br />
<br />
System.out.println("a = "+a);<br />
<br />
System.out.println("b = "+b);<br />
<br />
System.out.println("c = "+c);<br />
<br />
System.out.println("d = "+d);<br />
<br />
System.out.println("e = "+e);<br />
<br />
System.out.println("f = "+f);<br />
<br />
System.out.println("g = "+g);<br />
<br />
System.out.println("h = "+h);<br />
<br />
System.out.println("i = "+i);<br />
<br />
System.out.println("j = "+j);<br />
<br />
System.out.println("k = "+k);<br />
<br />
}<br />
<br />
}<br />
<br />
其结果为:<br />
<br />
C:\＞java ArithmaticOp<br />
<br />
a = 9<br />
<br />
b = 18<br />
<br />
c = 4<br />
<br />
d = 14<br />
<br />
e = -14<br />
<br />
f = -2<br />
<br />
g = 18.4<br />
<br />
h = 2.4<br />
<br />
i = 5<br />
<br />
j = 3<br />
<br />
k = 5<br />
<br />
&#167; 3.2关 系 运 算 符<br />
<br />
关 系 运 算 符 用 来 比 较 两 个 值 ,返 回 布 尔 类 型 的 值 true或 false。 关 系 运 算 符 都 是 二 元 运 算<br />
<br />
符 ,如 下 表 所 示 :<br />
<br />
运算符 用法 返回true的情况<br />
<br />
＞ op1＞op2 op1大于op2<br />
<br />
＞+ op1＞=op2 op1大于或等于op2<br />
<br />
＜ op1＜op2 op1小于op2<br />
<br />
＜= op1＜=op2 op1小于或等于op2<br />
<br />
== op1==op2 op1与op2相等<br />
<br />
!= op1!=op2 op1与op2不等<br />
<br />
Java中 ,任 何 数 据 类 型 的 数 据 (包 括 基 本 类 型 和 组 合 类 型 )都 可 以 通 过 ==或 !=来 比 较 是 否<br />
<br />
相 等 (这 与 C、 C++不 同 )。<br />
<br />
关 系 运 算 的 结 果 返 回 true或 false,而 不 是 C、 C++中 的 1或 0。<br />
<br />
关 系 运 算 符 常 与 布 尔 逻 辑 运 算 符 一 起 使 用 ,作 为 流 控 制 语 句 的 判 断 条 件 。 如<br />
<br />
if( a＞b &amp;&amp; b==c)<br />
<br />
&#167; 3.3布 尔 逻 辑 运 算 符<br />
<br />
布 尔 逻 辑 运 算 符 进 行 布 尔 逻 辑 运 算 ,如 下 表 所 示 :<br />
<br />
op1 op2 op1&amp;&amp;op2 op1||op2 !op1<br />
<br />
false false false false true<br />
<br />
false true false true true<br />
<br />
true false false true false<br />
<br />
true true true true false<br />
<br />
}@@@<br />
<br />
?&amp;&amp;、‖<br />
<br />
为二元运算符,实现逻辑与、逻辑或。<br />
<br />
?! 为一元运算符,实现逻辑非。<br />
<br />
?对于布尔逻辑运算,先求出运算符左边的表达式的值,对或运算如果为true,则整个表<br />
<br />
达式的结果为true,不必对运算符右边的表达式再进行运算;同样,对与运算,如果左边表达式<br />
<br />
的值为false,则不必对右边的表达式求值,整个表达式的结果为false。<br />
<br />
下面的例子说明了关系运算符和布尔逻辑运算符的使用。<br />
<br />
@@@[<br />
<br />
public class RelationAndConditionOp{<br />
<br />
public static void main( String args[] ){<br />
<br />
int a=25,b=3;<br />
<br />
boolean d=a＜b; //d=false<br />
<br />
System.out.println("a＜b = "+d);<br />
<br />
int e=3;<br />
<br />
if(e!=0 &amp;&amp; a/e＞5)<br />
<br />
System.out.println("a/e = "+a/e);<br />
<br />
int f=0;<br />
<br />
if(f!=0 &amp;&amp; a/f＞5)<br />
<br />
System.out.println("a/f = "+a/f);<br />
<br />
else<br />
<br />
System.out.println("f = "+f);<br />
<br />
}<br />
<br />
}<br />
<br />
其运行结果为:<br />
<br />
C:\＞java RelationAndConditionOp<br />
<br />
a＜b = false<br />
<br />
a/e = 8<br />
<br />
f = 0<br />
<br />
注 意 :上 例 中 ,第 二 个 if语 句 在 运 行 时 不 会 发 生 除 0溢 出 的 错 误 ,因 为 e!=0为 false,所 以 就 不 需<br />
<br />
要 对 a/e进 行 运 算 。<br />
<br />
&#167; 3.4位 运 算 符<br />
<br />
位 运 算 符 用 来 对 二 进 制 位 进 行 操 作 ,Java中 提 供 了 如 下 表 所 示 的 位 运 算 符 :<br />
<br />
位 运 算 符 中 ,除<br />
<br />
～<br />
<br />
以 外 ,其 余 均 为 二 元 运 算 符 。<br />
<br />
操 作 数 只 能 为 整 型 和 字 符 型 数 据 。<br />
<br />
3.4.1补 码<br />
<br />
Java使 用 补 码 来 表 示 二 进 制 数 ,在 补 码 表 示 中 ,最 高 位 为 符 号 位 ,正 数 的 符 号 位 为 0,负 数<br />
<br />
为 1。 补 码 的 规 定 如 下 :<br />
<br />
对 正 数 来 说 ,最 高 位 为 0,其 余 各 位 代 表 数 值 本 身 (以 二 进 制 表 示 ),如 +42的 补 码 为<br />
<br />
00101010。<br />
<br />
对 负 数 而 言 ,把 该 数 绝 对 值 的 补 码 按 位 取 反 ,然 后 对 整 个 数 加 1,即 得 该 数 的 补 码 。 如<br />
<br />
-42的 补 码 为 11010110 (00101010 按 位 取 反 11010101 +1 11010110 )<br />
<br />
用 补 码 来 表 示 数 ,0的 补 码 是 唯 一 的 ,都 为 00000000。 (而 在 原 码 ,反 码 表 示 中 ,+0和 -0的 表 示<br />
<br />
是 不 唯 一 的 ,可 参 见 相 应 的 书 籍 )。 而 且 可 以 用 111111表 示 -1的 补 码 (这 也 是 补 码 与 原 码 和 反<br />
<br />
码 的 区 别 )。<br />
<br />
3.4.2按 位 取 反 运 算 符<br />
<br />
～<br />
<br />
～<br />
<br />
是 一 元 运 算 法 ,对 数 据 的 每 个 二 进 制 位 取 反 ,即 把 1变 为 0,把 0变 为 1。<br />
<br />
例 如 :<br />
<br />
0010101<br />
<br />
～<br />
<br />
1101010<br />
<br />
注 意 ,～ 运 算 符 与 - 运 算 符 不 同 ,～ 21&#8800; -21。<br />
<br />
3.4.3按 位 与 运 算 符 &amp;<br />
<br />
参 与 运 算 的 两 个 值 ,如 果 两 个 相 应 位 都 为 1,则 该 位 的 结 果 为 1,否 则 为 0。 即 :<br />
<br />
0 &amp; 0 = 0,0 &amp;1 = 0,1 &amp; 0 = 0,1 &amp; 1 = 1<br />
<br />
</p>
<p><strong>移位运算符</strong>
</p>
<p>&nbsp;&nbsp;&nbsp; 包括：<br />
&nbsp;&nbsp;&nbsp; &#8220;&gt;&gt; 右移&#8221;；&#8220;&lt;&lt; 左移&#8221;；&#8220;&gt;&gt;&gt; 无符号右移&#8221;</p>
<p>例子：<br />
-5&gt;&gt;3=-1<br />
1111 1111 1111 1111 1111 1111 1111 1011<br />
1111 1111 1111 1111 1111 1111 1111 1111<br />
其结果与 Math.floor((double)-5/(2*2*2)) 完全相同。</p>
<p>-5&lt;&lt;3=-40<br />
1111 1111 1111 1111 1111 1111 1111 1011<br />
1111 1111 1111 1111 1111 1111 1101 1000 <br />
其结果与 -5*2*2*2 完全相同。</p>
<p>5&gt;&gt;3=0<br />
0000 0000 0000 0000 0000 0000 0000 0101<br />
0000 0000 0000 0000 0000 0000 0000 0000<br />
其结果与 5/(2*2*2) 完全相同。</p>
<p>5&lt;&lt;3=40<br />
0000 0000 0000 0000 0000 0000 0000 0101<br />
0000 0000 0000 0000 0000 0000 0010 1000<br />
其结果与 5*2*2*2 完全相同。</p>
<p>-5&gt;&gt;&gt;3=536870911&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
1111 1111 1111 1111 1111 1111 1111 1011<br />
0001 1111 1111 1111 1111 1111 1111 1111</p>
<p>无论正数、负数，它们的右移、左移、无符号右移 32 位都是其本身，比如 -5&lt;&lt;32=-5、-5&gt;&gt;32=-5、-5&gt;&gt;&gt;32=-5。<br />
一个有趣的现象是，把 1 左移 31 位再右移 31 位，其结果为 -1。<br />
0000 0000 0000 0000 0000 0000 0000 0001<br />
1000 0000 0000 0000 0000 0000 0000 0000<br />
1111 1111 1111 1111 1111 1111 1111 1111</p>
<p><strong><br />
&nbsp;</strong>
<span style="font-size: 10pt;">Java&nbsp;定义的位运算（bitwise&nbsp;operators&nbsp;）直接对整数类型的位进行操作，这些整数类型包括long，int，short，char，and&nbsp;byte&nbsp;。表4-2&nbsp;列出了位运算：&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; 运算符&nbsp;结果&nbsp; <br />
&nbsp;&nbsp;&nbsp; ~&nbsp;按位非（NOT）（一元运算）&nbsp; <br />
&nbsp;&nbsp;&nbsp; &amp;&nbsp;按位与（AND）&nbsp; <br />
&nbsp;&nbsp;&nbsp; |&nbsp;按位或（OR）&nbsp; <br />
&nbsp;&nbsp;&nbsp; ^&nbsp;按位异或（XOR）&nbsp; <br />
&nbsp;&nbsp;&nbsp; &gt;&gt;&nbsp;右移&nbsp; <br />
&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;&nbsp;右移，左边空出的位以0填充&nbsp; <br />
&nbsp;&nbsp;&nbsp; 运算符&nbsp;结果&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;&lt;&nbsp;左移&nbsp; <br />
&nbsp;&nbsp;&nbsp; &amp;=&nbsp;按位与赋值&nbsp; <br />
&nbsp;&nbsp;&nbsp; |=&nbsp;按位或赋值&nbsp; <br />
&nbsp;&nbsp;&nbsp; ^=&nbsp;按位异或赋值&nbsp; <br />
&nbsp;&nbsp;&nbsp; &gt;&gt;=&nbsp;右移赋值&nbsp; <br />
&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;=&nbsp;右移赋值，左边空出的位以0填充&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;&lt;=&nbsp;左移赋值&nbsp; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp; 既然位运算符在整数范围内对位操作，因此理解这样的操作会对一个值产生什么效果是重要的。具体地说，知道Java&nbsp;是如何存储整数值并且如何表示负数的是有用的。因此，在继续讨论之前，让我们简短概述一下这两个话题。 <br />
<br />
&nbsp;&nbsp;&nbsp;
所有的整数类型以二进制数字位的变化及其宽度来表示。例如，byte&nbsp;型值42的二进制代码是00101010&nbsp;，其中每个位置在此代表2的次方，在最右
边的位以20开始。向左下一个位置将是21，或2，依次向左是22，或4，然后是8，16，32等等，依此类推。因此42在其位置1，3，5的值为1（从
右边以0开始数）；这样42是21+23+25的和，也即是2+8+32&nbsp;。 <br />
<br />
&nbsp;&nbsp;&nbsp;
所有的整数类型（除了char&nbsp;类型之外）都是有符号的整数。这意味着他们既能表示正数，又能表示负数。Java&nbsp;使用大家知道的2的补码
（two&#8217;s&nbsp;complement&nbsp;）这种编码来表示负数，也就是通过将与其对应的正数的二进制代码取反（即将1变成0，将0变成1），然后对其结果加
1。例如，-42就是通过将42的二进制代码的各个位取反，即对00101010&nbsp;取反得到11010101&nbsp;，然后再加1，得到11010110&nbsp;，即
-42&nbsp;。要对一个负数解码，首先对其所有的位取反，然后加1。例如-42，或11010110&nbsp;取反后为00101001&nbsp;，或41，然后加1，这样就
得到了42。 <br />
<br />
&nbsp;&nbsp;&nbsp;
如果考虑到零的交叉（zero&nbsp;crossing&nbsp;）问题，你就容易理解Java&nbsp;（以及其他绝大多数语言）这样用2的补码的原因。假定byte&nbsp;类型的
值零用00000000&nbsp;代表。它的补码是仅仅将它的每一位取反，即生成11111111&nbsp;，它代表负零。但问题是负零在整数数学中是无效的。为了解决负
零的问题，在使用2的补码代表负数的值时，对其值加1。即负零11111111&nbsp;加1后为100000000&nbsp;。但这样使1位太靠左而不适合返回到
byte&nbsp;类型的值，因此人们规定，-0和0的表示方法一样，-1的解码为11111111&nbsp;。尽管我们在这个例子使用了byte&nbsp;类型的值，但同样的基
本的原则也适用于所有Java&nbsp;的整数类型。 <br />
<br />
&nbsp;&nbsp;&nbsp;
因为Java&nbsp;使用2的补码来存储负数，并且因为Java&nbsp;中的所有整数都是有符号的，这样应用位运算符可以容易地达到意想不到的结果。例如，不管你如何
打算，Java&nbsp;用高位来代表负数。为避免这个讨厌的意外，请记住不管高位的顺序如何，它决定一个整数的符号。 <br />
<br />
&nbsp;&nbsp;&nbsp; 4.2.1&nbsp;位逻辑运算符 <br />
位逻辑运算符有&#8220;与&#8221;（AND）、&#8220;或&#8221;（OR）、&#8220;异或（XOR&nbsp;）&#8221;、&#8220;非（NOT）&#8221;，分别用&#8220;&amp;&#8221;、&#8220;|&#8221;、&#8220;^&#8221;、&#8220;~&#8221;表示，4-3&nbsp;表显示了每个位逻辑运算的结果。在继续讨论之前，请记住位运算符应用于每个运算数内的每个单独的位。 <br />
&nbsp;&nbsp;&nbsp; 表4-3&nbsp;位逻辑运算符的结果&nbsp; <br />
&nbsp;&nbsp; A&nbsp;0&nbsp;1&nbsp;0&nbsp;1&nbsp;B&nbsp;0&nbsp;0&nbsp;1&nbsp;1&nbsp;A&nbsp;|&nbsp;B&nbsp;0&nbsp;1&nbsp;1&nbsp;1&nbsp;A&nbsp;&amp;&nbsp;B&nbsp;0&nbsp;0&nbsp;0&nbsp;1&nbsp;A&nbsp;^&nbsp;B&nbsp;0&nbsp;1&nbsp;1&nbsp;0&nbsp;~A&nbsp;1&nbsp;0&nbsp;1&nbsp;0&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; 按位非（NOT） <br />
<br />
&nbsp;&nbsp;&nbsp; 按位非也叫做补，一元运算符NOT&#8220;~&#8221;是对其运算数的每一位取反。例如，数字42，它的二进制代码为： <br />
<br />
&nbsp;&nbsp;&nbsp; 00101010&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; 经过按位非运算成为 <br />
<br />
&nbsp;&nbsp;&nbsp; 11010101&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; 按位与（AND） <br />
<br />
&nbsp;&nbsp;&nbsp; 按位与运算符&#8220;&amp;&#8221;，如果两个运算数都是1，则结果为1。其他情况下，结果均为零。看下面的例子： <br />
<br />
&nbsp;&nbsp;&nbsp; 00101010&nbsp;42&nbsp;&amp;00001111&nbsp;15&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; 00001010&nbsp;10&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; 按位或（OR） <br />
<br />
&nbsp;&nbsp;&nbsp; 按位或运算符&#8220;|&#8221;，任何一个运算数为1，则结果为1。如下面的例子所示： <br />
<br />
&nbsp;&nbsp;&nbsp; 00101010&nbsp;42&nbsp;|&nbsp;00001111&nbsp;15&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; 00101111&nbsp;47&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; 按位异或（XOR） <br />
<br />
&nbsp;&nbsp;&nbsp;
按位异或运算符&#8220;^&#8221;，只有在两个比较的位不同时其结果是&nbsp;1。否则，结果是零。下面的例子显示了&#8220;^&#8221;运算符的效果。这个例子也表明了XOR&nbsp;运算符的
一个有用的属性。注意第二个运算数有数字1的位，42对应二进制代码的对应位是如何被转换的。第二个运算数有数字0的位，第一个运算数对应位的数字不变。
当对某些类型进行位运算时，你将会看到这个属性的用处。 <br />
<br />
&nbsp;&nbsp;&nbsp; 00101010&nbsp;42&nbsp;^&nbsp;00001111&nbsp;15&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; 00100101&nbsp;37 <br />
&nbsp;&nbsp;&nbsp; 位逻辑运算符的应用 <br />
</span>
</p>
<p><span style="font-size: x-small;">下面的例子说明了位逻辑运算符： <br />
</span>
</p>
<div style="overflow: auto; width: 500px;">
<pre><span style="font-size: x-small;">//&nbsp;Demonstrate&nbsp;the&nbsp;bitwise&nbsp;logical&nbsp;operators. <br />
class&nbsp;BitLogic&nbsp;{ <br />
public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[])&nbsp;{ <br />
<br />
<br />
String&nbsp;binary[]&nbsp;=&nbsp;{"0000",&nbsp;"0001",&nbsp;"0010",&nbsp;"0011",&nbsp;"0100",&nbsp;"0101",&nbsp;"0110",&nbsp;"0111",&nbsp;"1000",&nbsp;"1001",&nbsp;"1010",&nbsp;"1011",&nbsp;"1100",&nbsp;"1101",&nbsp;"1110",&nbsp;"1111"&nbsp; <br />
<br />
}; <br />
int&nbsp;a&nbsp;=&nbsp;3;&nbsp;//&nbsp;0&nbsp;+&nbsp;2&nbsp;+&nbsp;1&nbsp;or&nbsp;0011&nbsp;in&nbsp;binary <br />
int&nbsp;b&nbsp;=&nbsp;6;&nbsp;//&nbsp;4&nbsp;+&nbsp;2&nbsp;+&nbsp;0&nbsp;or&nbsp;0110&nbsp;in&nbsp;binary <br />
int&nbsp;c&nbsp;=&nbsp;a&nbsp;|&nbsp;b; <br />
int&nbsp;d&nbsp;=&nbsp;a&nbsp;&amp;&nbsp;b;&nbsp; <br />
int&nbsp;e&nbsp;=&nbsp;a&nbsp;^&nbsp;b;&nbsp; <br />
int&nbsp;f&nbsp;=&nbsp;(~a&nbsp;&amp;&nbsp;b)&nbsp;|&nbsp;(a&nbsp;&amp;&nbsp;~b); <br />
int&nbsp;g&nbsp;=&nbsp;~a&nbsp;&amp;&nbsp;0x0f;&nbsp; <br />
<br />
<br />
System.out.println("&nbsp;a&nbsp;=&nbsp;"&nbsp;+&nbsp;binary[a]); <br />
System.out.println("&nbsp;b&nbsp;=&nbsp;"&nbsp;+&nbsp;binary<strong>); <br />
System.out.println("&nbsp;a|b&nbsp;=&nbsp;"&nbsp;+&nbsp;binary[c]); <br />
System.out.println("&nbsp;a&amp;b&nbsp;=&nbsp;"&nbsp;+&nbsp;binary[d]); <br />
System.out.println("&nbsp;a^b&nbsp;=&nbsp;"&nbsp;+&nbsp;binary[e]); <br />
System.out.println("~a&amp;b|a&amp;~b&nbsp;=&nbsp;"&nbsp;+&nbsp;binary[f]); <br />
System.out.println("&nbsp;~a&nbsp;=&nbsp;"&nbsp;+&nbsp;binary[g]); <br />
<br />
<br />
} <br />
} <br />
</strong><br />
</span><br />
<strong><br />
</strong>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<strong><br />
</strong>
</pre>
</div>
<p>
<strong><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp;
在本例中，变量a与b对应位的组合代表了二进制数所有的&nbsp;4&nbsp;种组合模式：0-0，0-1，1-0&nbsp;，和1-1&nbsp;。&#8220;|&#8221;运算符和&#8220;&amp;&#8221;运算符分
别对变量a与b各个对应位的运算得到了变量c和变量d的值。对变量e和f的赋值说明了&#8220;^&#8221;运算符的功能。字符串数组binary&nbsp;代表了0到15&nbsp;对应
的二进制的值。在本例中，数组各元素的排列顺序显示了变量对应值的二进制代码。数组之所以这样构造是因为变量的值n对应的二进制代码可以被正确的存储在数
组对应元素binary[n]&nbsp;中。例如变量a的值为3，则它的二进制代码对应地存储在数组元素binary[3]&nbsp;中。~a的值与数字0x0f&nbsp;（对应
二进制为0000&nbsp;1111&nbsp;）进行按位与运算的目的是减小~a的值，保证变量g的结果小于16。因此该程序的运行结果可以用数组binary&nbsp;对应的元
素来表示。该程序的输出如下： <br />
</span>
</strong>
</p>
<div style="overflow: auto; width: 500px;">
<pre><strong><span style="font-size: x-small;">a&nbsp;=&nbsp;0011&nbsp;b&nbsp;=&nbsp;0110&nbsp;a|b&nbsp;=&nbsp;0111&nbsp;a&amp;b&nbsp;=&nbsp;0010&nbsp;a^b&nbsp;=&nbsp;0101&nbsp;~a&amp;b|a&amp;~b&nbsp;=&nbsp;0101&nbsp;~a&nbsp;=&nbsp;1100&nbsp; </span><br />
<br />
</strong>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<strong><br />
</strong>
</pre>
</div>
<p>
<strong><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp; 4.2.2&nbsp;左移运算符 <br />
&nbsp;&nbsp;&nbsp; 左移运算符&lt;&lt;使指定值的所有位都左移规定的次数。它的通用格式如下所示： <br />
<br />
&nbsp;&nbsp;&nbsp; value&nbsp;&lt;&lt;&nbsp;num <br />
&nbsp;&nbsp;&nbsp;
这里，num&nbsp;指定要移位值value&nbsp;移动的位数。也就是，左移运算符&lt;&lt;使指定值的所有位都左移num位。每左移一个位，高阶位都被移出
（并且丢弃），并用0填充右边。这意味着当左移的运算数是int&nbsp;类型时，每移动1位它的第31位就要被移出并且丢弃；当左移的运算数是long&nbsp;类型
时，每移动1位它的第63位就要被移出并且丢弃。 <br />
<br />
&nbsp;&nbsp;&nbsp;
在对byte&nbsp;和short类型的值进行移位运算时，你必须小心。因为你知道Java&nbsp;在对表达式求值时，将自动把这些类型扩大为&nbsp;int&nbsp;型，而且，表
达式的值也是int&nbsp;型。对byte&nbsp;和short类型的值进行移位运算的结果是int&nbsp;型，而且如果左移不超过31位，原来对应各位的值也不会丢弃。但
是，如果你对一个负的byte&nbsp;或者short类型的值进行移位运算，它被扩大为int&nbsp;型后，它的符号也被扩展。这样，整数值结果的高位就会被1填充。
因此，为了得到正确的结果，你就要舍弃得到结果的高位。这样做的最简单办法是将结果转换为byte&nbsp;型。下面的程序说明了这一点： </span>
<br />
<br />
</strong>
</p>
<div style="overflow: auto; width: 500px;">
<pre><strong><span style="font-size: x-small;">//&nbsp;Left&nbsp;shifting&nbsp;a&nbsp;byte&nbsp;value. <br />
class&nbsp;ByteShift&nbsp;{<br />
<br />
<br />
<br />
public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[])&nbsp;{ <br />
byte&nbsp;a&nbsp;=&nbsp;64,&nbsp;b;<br />
<br />
int&nbsp;i;&nbsp; <br />
<br />
<br />
i&nbsp;=&nbsp;a&nbsp;&lt;&lt;&nbsp;2; <br />
b&nbsp;=&nbsp;(byte)&nbsp;(a&nbsp;&lt;&lt;&nbsp;2);&nbsp;<br />
<br />
<br />
<br />
System.out.println("Original&nbsp;value&nbsp;of&nbsp;a:&nbsp;"&nbsp;+&nbsp;a);<br />
<br />
System.out.println("i&nbsp;and&nbsp;b:&nbsp;"&nbsp;+&nbsp;i&nbsp;+&nbsp;"&nbsp;"&nbsp;+&nbsp;b); <br />
} <br />
} </span><br />
<br />
</strong>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<strong><br />
</strong>
</pre>
</div>
<p>
<strong><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp; 该程序产生的输出下所示： <br />
<br />
<div style="overflow: auto; width: 500px;">
<pre>Original&nbsp;value&nbsp;of&nbsp;a:&nbsp;64 <br />
i&nbsp;and&nbsp;b:&nbsp;256&nbsp;0&nbsp;<br />
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<br />
<br />
</pre>
</div>
</span>
<span style="font-size: x-small;"> 因变量a在赋值表达式中，故被扩大为int&nbsp;型，64（0100&nbsp;0000&nbsp;）被左移两次生成值256&nbsp;（10000&nbsp;0000&nbsp;）被赋给变量i。然而，经过左移后，变量b中惟一的1被移出，低位全部成了0，因此b的值也变成了0。 <br />
<br />
&nbsp;&nbsp;&nbsp; 既然每次左移都可以使原来的操作数翻倍，程序员们经常使用这个办法来进行快速的2&nbsp;的乘法。但是你要小心，如果你将1移进高阶位（31或63位），那么该值将变为负值。下面的程序说明了这一点： <br />
</span>
</strong>
</p>
<div style="overflow: auto; width: 500px;">
<pre><strong><span style="font-size: x-small;">//&nbsp;Left&nbsp;shifting&nbsp;as&nbsp;a&nbsp;quick&nbsp;way&nbsp;to&nbsp;multiply&nbsp;by&nbsp;2. <br />
class&nbsp;MultByTwo&nbsp;{ <br />
<br />
<br />
public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[])&nbsp;{ <br />
int&nbsp;i; <br />
int&nbsp;num&nbsp;=&nbsp;0xFFFFFFE;&nbsp; <br />
<br />
<br />
for(i=0;&nbsp;i&lt;4;&nbsp;i++)&nbsp;{ <br />
num&nbsp;=&nbsp;num&nbsp;&lt;&lt;&nbsp;1;&nbsp; <br />
System.out.println(num); <br />
<br />
<br />
} <br />
} <br />
</span><br />
<br />
</strong>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<strong><br />
</strong>
</pre>
</div>
<p>
<strong><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp;
这里，num&nbsp;指定要移位值value&nbsp;移动的位数。也就是，左移运算符&lt;&lt;使指定值的所有位都左移num位。每左移一个位，高阶位都被移出
（并且丢弃），并用0填充右边。这意味着当左移的运算数是int&nbsp;类型时，每移动1位它的第31位就要被移出并且丢弃；当左移的运算数是long&nbsp;类型
时，每移动1位它的第63位就要被移出并且丢弃。 <br />
<br />
&nbsp;&nbsp;&nbsp;
在对byte&nbsp;和short类型的值进行移位运算时，你必须小心。因为你知道Java&nbsp;在对表达式求值时，将自动把这些类型扩大为&nbsp;int&nbsp;型，而且，表
达式的值也是int&nbsp;型。对byte&nbsp;和short类型的值进行移位运算的结果是int&nbsp;型，而且如果左移不超过31位，原来对应各位的值也不会丢弃。但
是，如果你对一个负的byte&nbsp;或者short类型的值进行移位运算，它被扩大为int&nbsp;型后，它的符号也被扩展。这样，整数值结果的高位就会被1填充。
因此，为了得到正确的结果，你就要舍弃得到结果的高位。这样做的最简单办法是将结果转换为byte&nbsp;型。下面的程序说明了这一点： <br />
</span>
</strong>
</p>
<div style="overflow: auto; width: 500px;">
<pre><strong><span style="font-size: x-small;">//&nbsp;Left&nbsp;shifting&nbsp;a&nbsp;byte&nbsp;value. <br />
class&nbsp;ByteShift&nbsp;{ <br />
<br />
<br />
public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[])&nbsp;{ <br />
byte&nbsp;a&nbsp;=&nbsp;64,&nbsp;b; <br />
int&nbsp;i;&nbsp; <br />
<br />
<br />
i&nbsp;=&nbsp;a&nbsp;&lt;&lt;&nbsp;2; <br />
b&nbsp;=&nbsp;(byte)&nbsp;(a&nbsp;&lt;&lt;&nbsp;2);&nbsp; <br />
<br />
<br />
System.out.println("Original&nbsp;value&nbsp;of&nbsp;a:&nbsp;"&nbsp;+&nbsp;a); <br />
System.out.println("i&nbsp;and&nbsp;b:&nbsp;"&nbsp;+&nbsp;i&nbsp;+&nbsp;"&nbsp;"&nbsp;+&nbsp;b); <br />
} <br />
} <br />
</span><br />
<br />
</strong>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<strong><br />
</strong>
</pre>
</div>
<p>
<strong><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp; 该程序产生的输出下所示：<br />
</span>
</strong>
</p>
<div style="overflow: auto; width: 500px;">
<pre>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--><strong><span style="font-size: x-small;"><img src="http://129.0.0.116/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
Original&nbsp;value&nbsp;of&nbsp;a:&nbsp;64 <br />
i&nbsp;and&nbsp;b:&nbsp;256&nbsp;0&nbsp; <br />
</span><br />
</strong>
</div>
<br />
<strong><br />
</strong>
</pre>
</div>
<p>
<strong><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp; 因变量a在赋值表达式中，故被扩大为int&nbsp;型，64（0100&nbsp;0000&nbsp;）被左移两次生成值256&nbsp;（10000&nbsp;0000&nbsp;）被赋给变量i。然而，经过左移后，变量b中惟一的1被移出，低位全部成了0，因此b的值也变成了0。 <br />
<br />
&nbsp;&nbsp;&nbsp; 既然每次左移都可以使原来的操作数翻倍，程序员们经常使用这个办法来进行快速的2&nbsp;的乘法。但是你要小心，如果你将1移进高阶位（31或63位），那么该值将变为负值。下面的程序说明了这一点： <br />
</span>
</strong>
</p>
<div style="overflow: auto; width: 500px;">
<pre><strong><span style="font-size: x-small;">//&nbsp;Left&nbsp;shifting&nbsp;as&nbsp;a&nbsp;quick&nbsp;way&nbsp;to&nbsp;multiply&nbsp;by&nbsp;2. <br />
class&nbsp;MultByTwo&nbsp;{ <br />
<br />
<br />
public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[])&nbsp;{ <br />
int&nbsp;i; <br />
int&nbsp;num&nbsp;=&nbsp;0xFFFFFFE;&nbsp; <br />
<br />
<br />
for(i=0;&nbsp;i&lt;4;&nbsp;i++)&nbsp;{ <br />
num&nbsp;=&nbsp;num&nbsp;&lt;&lt;&nbsp;1;&nbsp; <br />
System.out.println(num); <br />
<br />
<br />
} <br />
} <br />
}&nbsp; <br />
</span><br />
<br />
</strong>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<strong><br />
</strong>
</pre>
</div>
<p>
<strong><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp; 该程序的输出如下所示：<br />
<div style="overflow: auto; width: 500px;">
<pre>536870908&nbsp; <br />
1073741816&nbsp; <br />
2147483632&nbsp; <br />
-32&nbsp;<br />
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<br />
</pre>
</div>
</span>
<br />
<br />
<span style="font-size: x-small;"> 因变量a在赋值表达式中，故被扩大为int&nbsp;型，64（0100&nbsp;0000&nbsp;）被左移两次生成值256&nbsp;（10000&nbsp;0000&nbsp;）被赋给变量i。然而，经过左移后，变量b中惟一的1被移出，低位全部成了0，因此b的值也变成了0。 <br />
<br />
&nbsp;&nbsp;&nbsp; 既然每次左移都可以使原来的操作数翻倍，程序员们经常使用这个办法来进行快速的2&nbsp;的乘法。但是你要小心，如果你将1移进高阶位（31或63位），那么该值将变为负值。下面的程序说明了这一点： <br />
</span>
</strong>
</p>
<div style="overflow: auto; width: 500px;">
<pre><strong><span style="font-size: x-small;">//&nbsp;Left&nbsp;shifting&nbsp;as&nbsp;a&nbsp;quick&nbsp;way&nbsp;to&nbsp;multiply&nbsp;by&nbsp;2. <br />
class&nbsp;MultByTwo&nbsp;{ <br />
<br />
<br />
public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[])&nbsp;{ <br />
int&nbsp;i; <br />
int&nbsp;num&nbsp;=&nbsp;0xFFFFFFE;&nbsp; <br />
<br />
<br />
for(i=0;&nbsp;i&lt;4;&nbsp;i++)&nbsp;{ <br />
num&nbsp;=&nbsp;num&nbsp;&lt;&lt;&nbsp;1;&nbsp; <br />
System.out.println(num); <br />
<br />
<br />
} <br />
} <br />
</span><br />
<br />
</strong>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<strong><br />
</strong>
</pre>
</div>
<p>
<strong><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp;
这里，num&nbsp;指定要移位值value&nbsp;移动的位数。也就是，左移运算符&lt;&lt;使指定值的所有位都左移num位。每左移一个位，高阶位都被移出
（并且丢弃），并用0填充右边。这意味着当左移的运算数是int&nbsp;类型时，每移动1位它的第31位就要被移出并且丢弃；当左移的运算数是long&nbsp;类型
时，每移动1位它的第63位就要被移出并且丢弃。 <br />
<br />
&nbsp;&nbsp;&nbsp;
在对byte&nbsp;和short类型的值进行移位运算时，你必须小心。因为你知道Java&nbsp;在对表达式求值时，将自动把这些类型扩大为&nbsp;int&nbsp;型，而且，表
达式的值也是int&nbsp;型。对byte&nbsp;和short类型的值进行移位运算的结果是int&nbsp;型，而且如果左移不超过31位，原来对应各位的值也不会丢弃。但
是，如果你对一个负的byte&nbsp;或者short类型的值进行移位运算，它被扩大为int&nbsp;型后，它的符号也被扩展。这样，整数值结果的高位就会被1填充。
因此，为了得到正确的结果，你就要舍弃得到结果的高位。这样做的最简单办法是将结果转换为byte&nbsp;型。下面的程序说明了这一点： <br />
</span>
</strong>
</p>
<div style="overflow: auto; width: 500px;">
<pre><strong><span style="font-size: x-small;">//&nbsp;Left&nbsp;shifting&nbsp;a&nbsp;byte&nbsp;value. <br />
class&nbsp;ByteShift&nbsp;{ <br />
<br />
<br />
public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[])&nbsp;{ <br />
byte&nbsp;a&nbsp;=&nbsp;64,&nbsp;b; <br />
int&nbsp;i;&nbsp; <br />
<br />
<br />
i&nbsp;=&nbsp;a&nbsp;&lt;&lt;&nbsp;2; <br />
b&nbsp;=&nbsp;(byte)&nbsp;(a&nbsp;&lt;&lt;&nbsp;2);&nbsp; <br />
<br />
<br />
System.out.println("Original&nbsp;value&nbsp;of&nbsp;a:&nbsp;"&nbsp;+&nbsp;a); <br />
System.out.println("i&nbsp;and&nbsp;b:&nbsp;"&nbsp;+&nbsp;i&nbsp;+&nbsp;"&nbsp;"&nbsp;+&nbsp;b); <br />
} <br />
} <br />
</span><br />
<br />
</strong>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<strong><br />
</strong>
</pre>
</div>
<p>
<strong><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp; 该程序产生的输出下所示：<br />
</span>
</strong>
</p>
<div style="overflow: auto; width: 500px;">
<pre>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--><strong><span style="font-size: x-small;"><img src="http://129.0.0.116/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
Original&nbsp;value&nbsp;of&nbsp;a:&nbsp;64 <br />
i&nbsp;and&nbsp;b:&nbsp;256&nbsp;0&nbsp; <br />
</span><br />
</strong>
</div>
<br />
<strong><br />
</strong>
</pre>
</div>
<p>
<strong><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp; 因变量a在赋值表达式中，故被扩大为int&nbsp;型，64（0100&nbsp;0000&nbsp;）被左移两次生成值256&nbsp;（10000&nbsp;0000&nbsp;）被赋给变量i。然而，经过左移后，变量b中惟一的1被移出，低位全部成了0，因此b的值也变成了0。 <br />
<br />
&nbsp;&nbsp;&nbsp; 既然每次左移都可以使原来的操作数翻倍，程序员们经常使用这个办法来进行快速的2&nbsp;的乘法。但是你要小心，如果你将1移进高阶位（31或63位），那么该值将变为负值。下面的程序说明了这一点： <br />
</span>
</strong>
</p>
<div style="overflow: auto; width: 500px;">
<pre><strong><span style="font-size: x-small;">//&nbsp;Left&nbsp;shifting&nbsp;as&nbsp;a&nbsp;quick&nbsp;way&nbsp;to&nbsp;multiply&nbsp;by&nbsp;2. <br />
class&nbsp;MultByTwo&nbsp;{ <br />
<br />
<br />
public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[])&nbsp;{ <br />
int&nbsp;i; <br />
int&nbsp;num&nbsp;=&nbsp;0xFFFFFFE;&nbsp; <br />
<br />
<br />
for(i=0;&nbsp;i&lt;4;&nbsp;i++)&nbsp;{ <br />
num&nbsp;=&nbsp;num&nbsp;&lt;&lt;&nbsp;1;&nbsp; <br />
System.out.println(num); <br />
<br />
<br />
} <br />
} <br />
}&nbsp; <br />
</span><br />
<br />
</strong>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<strong><br />
</strong>
</pre>
</div>
<p>
<strong><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp; 该程序的输出如下所示：<br />
<div style="overflow: auto; width: 500px;">
<pre>536870908&nbsp; <br />
1073741816&nbsp; <br />
2147483632&nbsp; <br />
-32&nbsp;<br />
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<br />
</pre>
</div>
</span>
<br />
</strong>
</p>
<pre><strong><span style="font-size: x-small;"><br />
}; <br />
byte&nbsp;b&nbsp;=&nbsp;(byte)&nbsp;0xf1;&nbsp; <br />
<br />
<br />
System.out.println("b&nbsp;=&nbsp;0x"&nbsp;+&nbsp;hex[(b&nbsp;&gt;&gt;&nbsp;4)&nbsp;&amp;&nbsp;0x0f]&nbsp;+&nbsp;hex[b&nbsp;&amp;&nbsp;0x0f]);}}&nbsp; </span><br />
<br />
<br />
</strong>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<strong><br />
</strong>
</pre>
<strong><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp; 该程序的输出如下：<br />
<div style="overflow: auto; width: 500px;">
<pre>b&nbsp;=&nbsp;0xf1&nbsp;<br />
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<br />
</pre>
</div>
&nbsp;&nbsp; &nbsp;4 .2.4&nbsp;无符号右移 <br />
&nbsp;&nbsp;&nbsp;
正如上面刚刚看到的，每一次右移，&gt;&gt;运算符总是自动地用它的先前最高位的内容补它的最高位。这样做保留了原值的符号。但有时这并不是我们想
要的。例如，如果你进行移位操作的运算数不是数字值，你就不希望进行符号位扩展（保留符号位）。当你处理像素值或图形时，这种情况是相当普遍的。在这种情
况下，不管运算数的初值是什么，你希望移位后总是在高位（最左边）补0。这就是人们所说的无符号移动（unsigned&nbsp;shift&nbsp;）。这时你可以使用
Java&nbsp;的无符号右移运算符&gt;&gt;&gt;&nbsp;，它总是在左边补0。 <br />
<br />
&nbsp;&nbsp;&nbsp; 下面的程序段说明了无符号右移运算符&gt;&gt;&gt;&nbsp;。在本例中，变量a被赋值为-1，用二进制表示就是32位全是1。这个值然后被无符号右移24位，当然它忽略了符号位扩展，在它的左边总是补0。这样得到的值255被赋给变量a。 <br />
<br />
&nbsp;&nbsp;&nbsp; int&nbsp;a&nbsp;=&nbsp;-1;&nbsp;a&nbsp;=&nbsp;a&nbsp;&gt;&gt;&gt;&nbsp;24;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp; 下面用二进制形式进一步说明该操作： <br />
<br />
&nbsp;&nbsp;&nbsp; 11111111&nbsp;11111111&nbsp;11111111&nbsp;11111111&nbsp;int型-1的二进制代码&gt;&gt;&gt;&nbsp;24&nbsp;无符号右移24位00000000&nbsp;00000000&nbsp;00000000&nbsp;11111111&nbsp;int型255的二进制代码 <br />
<br />
&nbsp;&nbsp;&nbsp;
由于无符号右移运算符&gt;&gt;&gt;&nbsp;只是对32位和64位的值有意义，所以它并不像你想象的那样有用。因为你要记住，在表达式中过小的值总是
被自动扩大为int&nbsp;型。这意味着符号位扩展和移动总是发生在32位而不是8位或16位。这样，对第7位以0开始的byte&nbsp;型的值进行无符号移动是不可
能的，因为在实际移动运算时，是对扩大后的32位值进行操作。下面的例子说明了这一点： <br />
<div style="overflow: auto; width: 500px;">
<pre>//&nbsp;Unsigned&nbsp;shifting&nbsp;a&nbsp;byte&nbsp;value. <br />
class&nbsp;ByteUShift&nbsp;{ <br />
static&nbsp;public&nbsp;void&nbsp;main(String&nbsp;args[])&nbsp;{ <br />
int&nbsp;b&nbsp;=&nbsp;2; <br />
int&nbsp;c&nbsp;=&nbsp;3;&nbsp; <br />
<br />
<br />
a&nbsp;|=&nbsp;4; <br />
b&nbsp;&gt;&gt;=&nbsp;1;&nbsp; <br />
c&nbsp;&lt;&lt;=&nbsp;1;&nbsp; <br />
a&nbsp;^=&nbsp;c; <br />
System.out.println("a&nbsp;=&nbsp;"&nbsp;+&nbsp;a); <br />
System.out.println("b&nbsp;=&nbsp;"&nbsp;+&nbsp;b); <br />
System.out.println("c&nbsp;=&nbsp;"&nbsp;+&nbsp;c); <br />
<br />
<br />
} <br />
} <br />
<br />
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--></div>
<br />
<br />
</pre>
</div>
&nbsp;&nbsp;&nbsp; 该程序的输出如下所示：<br />
<div style="overflow: auto; width: 500px;">
<pre>a&nbsp;=&nbsp;3&nbsp; <br />
b&nbsp;=&nbsp;1&nbsp; <br />
c&nbsp;=&nbsp;6 <br />
<br />
<br />
</pre>
</div>
</span></strong><img src ="http://www.blogjava.net/gooogle/aggbug/193654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G工作室</a> 2008-04-17 10:19 <a href="http://www.blogjava.net/gooogle/archive/2008/04/17/193654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C# 采用线程重绘图形应该注意的问题。</title><link>http://www.blogjava.net/gooogle/archive/2008/04/11/192155.html</link><dc:creator>3G工作室</dc:creator><author>3G工作室</author><pubDate>Fri, 11 Apr 2008 04:45:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2008/04/11/192155.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/192155.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2008/04/11/192155.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/192155.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/192155.html</trackback:ping><description><![CDATA[<div class="blog_content">
<p>原文</p>
<p><a href="http://www.3geye.net/?3/viewspace-3350">http://www.3geye.net/?3/viewspace-3350</a>
</p>
<p>&nbsp;</p>
<p>
大家都知道J2ME 采用一个线程去获取数据，然后得到数据后更新屏幕是件很容易的事情，<br />
<span style="display: none;">`n
hxq1u^3</span>
比如<br />
<span style="display: none;">hQ.Pd0P%r$~f3</span>
Thread{<br />
<span style="display: none;">7Quk%n+_&amp;gar(K3</span>
public void run(){<span style="display: none;">3GEYE4l`_.w
v6?z5P</span>
<br />
getData();<br />
<span style="display: none;">^:LE%@5k?-l3</span>
repaint();<span style="display: none;">3GEYE6Z+M"W.K6h[3e</span>
<br />
}<br />
<span style="display: none;">+ZnLPk/jL)m f3</span>
<br />
<span style="display: none;">.\1X `1}"iN3</span>
}<br />
<span style="display: none;">T7q(M!vx+Z+i
k)U3</span>
这样做就OK了<span style="display: none;">3GEYER`8IL8S!I|+jFa</span>
<br />
<br />
<span style="display: none;">%LQ#LR"FgX3</span>
但是这个方法在C#上能成功吗。<br />
<span style="display: none;">	dV(],d.G3</span>
答案是NO，为什么呢。安装他们的APIs的说法是，采用线程更新屏幕的是应该要用一个委托的方式来执行。<br />
<span style="display: none;">,p~Zy_g&amp;V:Z3</span>
<span style="display: none;">3GEYEmH"L*T2?i:e</span>
<br />
看看我是怎么做的。<span style="display: none;">3GEYE2M?{}	VC#O#tqa</span>
<br />
<br />
<span style="display: none;">|R_a#|R8g3</span>
Thread{<br />
<span style="display: none;">GXY0c:~3@^3</span>
public void run(){<span style="display: none;">3GEYEl
E8ap a*u~-a9E\@</span>
<br />
getData();<span style="display: none;">3GEYEGQKLb*CI</span>
<br />
updateWebBrowser();<br />
<span style="display: none;">+P5?!K;f#m6D#H3</span>
}<span style="display: none;">3GEYE}I4\)r&amp;`$Jj1Y</span>
<br />
<br />
<span style="display: none;"> ZY,d%Suw5K3</span>
delegate void Repaint();<span style="display: none;">3GEYE!g.|Z5}t7f#`�j</span>
<br />
<br />
<span style="display: none;">D6Ez{y0t3</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void repaint()<span style="display: none;">3GEYEy&amp;Yi1m	i*S"C9J$E</span>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
<span style="display: none;">A	[So:?3</span>
<br />
<span style="display: none;">7KY%L6O
C!M
t3</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.webBrowser.repaint();<span style="display: none;">3GEYE*T4C})c
Vn]</span>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<span style="display: none;">H5{^"g/VM3</span>
<br />
<span style="display: none;">&amp;kz$^e&amp;b3</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<span style="display: none;">3GEYEb
|\$`lh</span>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 更新视图<br />
<span style="display: none;">8I}o&amp;J&amp;t/mW3</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br />
<span style="display: none;">n*gx	phQQ9o3</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void updateWebBrowser()<span style="display: none;">3GEYE:Q-T+P5{4E</span>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
<span style="display: none;">
a6w)V�mo4D0N3</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //这里是更新屏幕的代码，看各自需求做相应的实现。<span style="display: none;">3GEYE&amp;h:OBm,Ukm2y</span>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<span style="display: none;">?
GN!~Vm3</span>
<br />
<span style="display: none;">7y6m#a-ND	a(o3</span>
}<span style="display: none;">3GEYE+R!f9AH,@�k"K	y</span>
<br />
<br />
<span style="display: none;">-YgB'B/U
|3</span>
上面就是C#的处理方式。应该也是可以理解的</p>
</div><img src ="http://www.blogjava.net/gooogle/aggbug/192155.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G工作室</a> 2008-04-11 12:45 <a href="http://www.blogjava.net/gooogle/archive/2008/04/11/192155.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>七个优秀的开源J2ME项目</title><link>http://www.blogjava.net/gooogle/archive/2008/04/10/191876.html</link><dc:creator>3G工作室</dc:creator><author>3G工作室</author><pubDate>Thu, 10 Apr 2008 07:20:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2008/04/10/191876.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/191876.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2008/04/10/191876.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/191876.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/191876.html</trackback:ping><description><![CDATA[<h2><br />
</h2>
<h2>文章出处：<a href="http://www.3geye.net/?3/viewspace-3347">http://www.3geye.net/?3/viewspace-3347</a>
<br />
</h2>
<h2>MWT</h2>
<p>Micro Window
Toolkit(MWT)是一个用于开发<a onclick="javascript:tagshow(event, 'J2ME');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>J2ME</strong>
</span>
</a>
用户界面(UI)的工具包。它具有友好，强大，快速，<a onclick="javascript:tagshow(event, '%BF%AA%D4%B4');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>开源</strong>
</span>
</a>
等特性。因为它的"灵感"来自
AWT，Swing和SWT。可以使用bitmap fonts等来自定义组件。它专门为嵌入式开发而设计和优化。基于LGPL发布。<br />
<span style="display: none;">K[Lr%sRI3</span>
项目地址：<a href="http://j2me-mwt.sourceforge.net/" target="_blank">http://j2me-mwt.sourceforge.net/</a>
</p>
<p><a href="http://j2me-mwt.sourceforge.net/" target="_blank"><br />
<span style="display: none;">	V4TD6Y.n3?h*H3</span>
</a>
</p>
<table align="center" border="0">
    <tbody>
        <tr>
            <td class="title" colspan="4">1 - J2ME Desktop:</td>
        </tr>
        <tr>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo1-1.png" alt="" title="点击图片可在新窗口打开" />
            </td>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo1-2.png" alt="" title="点击图片可在新窗口打开" />
            </td>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo1-3.png" alt="" title="点击图片可在新窗口打开" />
            </td>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo1-4.png" alt="" title="点击图片可在新窗口打开" />
            </td>
        </tr>
        <tr>
            <td colspan="4">Download the<a href="http://j2me-mwt.sourceforge.net/demos/demo1.jad">Jad</a>
            and<a onclick="javascript:tagshow(event, 'Jar');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>Jar</strong>
            </span>
            </a>
            or view it with<a href="http://webstart.mpowerplayer.com/j2me-mwt.sourceforge.net/demos/demo1.jad.jnlp">Java WebStart</a>
            </td>
        </tr>
    </tbody>
</table>
<br />
<span style="display: none;">$?i6_7iPGl3U~3</span>
<table align="center" border="0">
    <tbody>
        <tr>
            <td class="title" colspan="4">2 - ELP ~ RPG:</td>
        </tr>
        <tr>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo2-1.png" alt="" title="点击图片可在新窗口打开" />
            </td>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo2-2.png" alt="" title="点击图片可在新窗口打开" />
            </td>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo2-3.png" alt="" title="点击图片可在新窗口打开" />
            </td>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo2-4.png" alt="" title="点击图片可在新窗口打开" />
            </td>
        </tr>
        <tr>
            <td colspan="4">Download the<a href="http://j2me-mwt.sourceforge.net/demos/demo2.jad">Jad</a>
            and<a href="http://j2me-mwt.sourceforge.net/demos/demo2.jar">Jar</a>
            or view it with<a href="http://webstart.mpowerplayer.com/j2me-mwt.sourceforge.net/demos/demo2.jad.jnlp">Java WebStart</a>
            </td>
        </tr>
    </tbody>
</table>
<br />
<span style="display: none;">JZCQYxT3</span>
<table align="center" border="0">
    <tbody>
        <tr>
            <td class="title" colspan="4">3 - Progress Bar:</td>
        </tr>
        <tr>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo3-1.png" alt="" title="点击图片可在新窗口打开" />
            </td>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo3-2.png" alt="" title="点击图片可在新窗口打开" />
            </td>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo3-3.png" alt="" title="点击图片可在新窗口打开" />
            </td>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo3-4.png" alt="" title="点击图片可在新窗口打开" />
            </td>
        </tr>
        <tr>
            <td colspan="4">Download the<a href="http://j2me-mwt.sourceforge.net/demos/demo3.jad">Jad</a>
            and<a href="http://j2me-mwt.sourceforge.net/demos/demo3.jar">Jar</a>
            or view it with<a href="http://webstart.mpowerplayer.com/j2me-mwt.sourceforge.net/demos/demo3.jad.jnlp">Java WebStart</a>
            </td>
        </tr>
    </tbody>
</table>
<span style="display: none;">3GEYEV/[+_Q?"D[N6i</span>
<br />
<table align="center" border="0">
    <tbody>
        <tr>
            <td class="title" colspan="4">4 - Messenger Interface:</td>
        </tr>
        <tr>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo4-1.png" alt="" title="点击图片可在新窗口打开" />
            </td>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo4-2.png" alt="" title="点击图片可在新窗口打开" />
            </td>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo4-3.png" alt="" title="点击图片可在新窗口打开" />
            </td>
            <td><img style="cursor: pointer;" src="http://j2me-mwt.sourceforge.net/img/demo4-4.png" alt="" title="点击图片可在新窗口打开" />
            </td>
        </tr>
        <tr>
            <td colspan="4">Download the<a href="http://j2me-mwt.sourceforge.net/demos/demo4.jad">Jad</a>
            and<a href="http://j2me-mwt.sourceforge.net/demos/demo4.jar">Jar</a>
            or view it with<a href="http://webstart.mpowerplayer.com/j2me-mwt.sourceforge.net/demos/demo4.jad.jnlp">Java WebStart</a>
            </td>
        </tr>
    </tbody>
</table>
<h1>J4ME-开源的UI Logger 项目</h1>
<p>J4ME
是一个J2ME应用程序开发包。它包括一个UI框架，一个日记框架用于帮助调试因不同品牌<a onclick="javascript:tagshow(event, '%CA%D6%BB%FA');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>手机</strong>
</span>
</a>
的差异而产生的问题，一个蓝牙GPS框架让你能够利
用JSR-179 Location
API接口从蓝牙GPS设备获取定位信息和一个Java类包其中包含了J2ME中没有的方法比如双精度型数字的计算等。<br />
<span style="display: none;">a7Oi6k^Z	u3</span>
<a rel="lightbox" href="http://www.kaiyuan8.org/upload/2008/2/ui.gif" title="ui.gif"><img id="urn:zoundry:jid:ui.gif" src="http://www.kaiyuan8.org/upload/2008/2/ui_tn.jpg" alt="ui.gif" title="ui.gif" border="0" height="170" width="140" />
</a>
<a rel="lightbox" href="http://www.kaiyuan8.org/upload/2008/2/logging.gif" title="logging.gif"><img id="urn:zoundry:jid:logging.gif" src="http://www.kaiyuan8.org/upload/2008/2/logging_tn.jpg" alt="logging.gif" title="logging.gif" border="0" height="170" width="140" />
</a>
<a rel="lightbox" href="http://www.kaiyuan8.org/upload/gps.gif" title="gps.gif"><img id="urn:zoundry:jid:gps.gif" src="http://www.kaiyuan8.org/upload/2008/2/gps_tn.jpg" alt="gps.gif" title="gps.gif" border="0" height="174" width="140" />
</a>
</p>
<h1>OpenBaseMovil</h1>
<p><span style="display: none;">3GEYE6ct|I\</span>
<br />
BaseMovil是一个J2ME应用程序开发框架。它由多个比较独立类库组成包括：<span style="display: none;">3GEYEJsTH$m"V,m
a+y0|K</span>
<br />
OpenBaseMovil-core：整个框架的底层<a onclick="javascript:tagshow(event, '%BB%F9%B4%A1');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>基础</strong>
</span>
</a>
类库，它主要提供<a onclick="javascript:tagshow(event, '%B9%FA%BC%CA%BB%AF');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>国际化</strong>
</span>
</a>
支持、任务控制、加密、压缩、浮点支持、properties文件支持、一个MVC框架、一个事件框架。<span style="display: none;">3GEYEXO3L0@C$z
M8E</span>
<br />
OpenBaseMovil-db：一个关系型<a onclick="javascript:tagshow(event, '%CA%FD%BE%DD%BF%E2');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>数据库</strong>
</span>
</a>
引擎，其中一个表格存储的数据可上千。<span style="display: none;">3GEYE1]
m$?/vE|1@</span>
<br />
OpenBaseMovil-script：一个<a onclick="javascript:tagshow(event, '%BD%C5%B1%BE');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>脚本</strong>
</span>
</a>
引擎。<span style="display: none;">3GEYE2\G:rVA7Ez</span>
<br />
OpenBaseMovil-ui：一个UI工具包。<br />
<span style="display: none;">C,h~%O2B|3</span>
这个几类库都能够完全集成在一起使用。<span style="display: none;">3GEYEotaZ5J</span>
<br />
<a rel="lightbox" href="http://www.kaiyuan8.org/upload/2008/2/OpenBaseMovil.jpg" title="OpenBaseMovil.jpg"><img id="urn:zoundry:jid:OpenBaseMovil.jpg" src="http://www.kaiyuan8.org/upload/2008/2/OpenBaseMovil_tn.jpg" alt="OpenBaseMovil.jpg" title="OpenBaseMovil.jpg" border="0" height="200" width="169" />
</a>
<br />
<span style="display: none;">+m'^1V[1L&amp;Q7L3</span>
<a href="http://www.openbasemovil.org/" target="_blank">http://www.openbasemovil.org/</a></p>
<h1>J2ME <a onclick="javascript:tagshow(event, '%D3%CE%CF%B7');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>游戏</strong>
</span>
</a>
脚本引擎/J2me <a onclick="javascript:tagshow(event, 'game');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>game</strong>
</span>
</a>
script engine</h1>
<p>一个非常小的script脚本引擎，可以同时在j2me / j2se / c++ platform上面运行<span style="display: none;">3GEYELBXR[-CR</span>
<br />
它的目标是使用这个脚本引擎便于开发一个更加灵活的j2me 游戏。<br />
<span style="display: none;">(FQ(wY$\N�{PsW3</span>
这个脚本有点像BASIC</p>
<p>这东西不错，是一个开源的脚本引擎，大家可以学习里面的思想<span style="display: none;">3GEYE-v
r.Ps!_+da[</span>
<br />
里面其中带了一个例子，是3子棋。感觉挺不错的。这东西在SF也挺活跃的。</p>
<p><a href="http://sourceforge.net/projects/j2megamescript/">http://sourceforge.net/projects/j2megamescript/</a>
</p>
<p>例子图片<a href="http://www.3geye.net/batch.download.php?aid=23" target="_blank"><img id="urn:zoundry:jid:3_200710301619291.jpg" src="http://www.kaiyuan8.org/upload/2008/2/3_200710301619291_tn.jpg" alt="3_200710301619291.jpg" title="3_200710301619291.jpg" height="200" width="155" />
</a>
</p>
<h2>Y!Go</h2>
<p>Y!Go这是一个Yahoo Messenger J2ME客户端。</p>
<p><a href="http://ygo.sourceforge.net/">http://ygo.sourceforge.net/</a>
</p>
<h2>EBookME</h2>
<p>EBookME是一个用于把导入的文本<a onclick="javascript:tagshow(event, '%CE%C4%BC%FE');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>文件</strong>
</span>
</a>
(HTML,DOC,PDF,&#8230;)生成J2ME电子书籍格式(JAD,JAR)的Java程序。生成的<a onclick="javascript:tagshow(event, '%B5%E7%D7%D3%CA%E9');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>电子书</strong>
</span>
</a>
籍可以在支持MIDP1.0的手机上阅读。</p>
<p><a href="http://ebookme.sourceforge.net/">http://ebookme.sourceforge.net/</a>
</p>
<h2>jMobileCore</h2>
<p>jMobileCore
包是一个强大的工具用来开发J2ME应用程序.jMobileCore提供支持开发简洁的，基于Canvas的<a onclick="javascript:tagshow(event, '%CD%BC%D0%CE');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>图形</strong>
</span>
</a>
用户接口，快速地数据访问，可靠地通
信,简化多线程midlet应用程序。jMobileCore包可工作在任何支持J2ME (MIDP1.0
和CLDC1.0)的移动电话与PDA设备.</p>
<p><a href="http://jmobilecore.sourceforge.net/">http://jmobilecore.sourceforge.net/</a>
</p>
<p>还有超级经典的J2ME-POLISH</p>
<p><a href="http://www.j2mepolish.org/" target="_blank">http://www.j2mepolish.org</a>
</p>
<h2>J2ME <a onclick="javascript:tagshow(event, 'Polish');" href="javascript:;" target="_self"><span style="text-decoration: underline;"><strong>Polish</strong>
</span>
</a>
2.0</h2>
<p style="margin: 0pt;"><a href="http://www.j2mepolish.org/download.html" target="_blank"><img src="http://www.j2mepolish.org/cms/uploads/RTEmagicC_304e2c44c8.gif.gif" alt="J2ME Polish 2.0 Release Candidate is here!" height="400" width="400" />
</a>
</p>
<table border="0">
    <tbody>
        <tr>
            <td>
            <p style="margin: 0pt;"><a href="http://www.j2mepolish.org/screenshots.html" target="_blank" class="imageLink"><img src="http://www.j2mepolish.org/cms/uploads/RTEmagicC_8ed5a6da16.png.png" alt="design example 1" height="181" width="137" />
            </a>
            </p>
            </td>
            <td>
            <p style="margin: 0pt;"><a href="http://www.j2mepolish.org/screenshots.html" target="_blank" class="imageLink"><img src="http://www.j2mepolish.org/cms/uploads/RTEmagicC_aaf5623ebb.png.png" alt="design example 2" height="181" width="135" />
            </a>
            </p>
            </td>
            <td>
            <p style="margin: 0pt;"><a href="http://www.j2mepolish.org/screenshots.html" target="_blank" class="imageLink"><img src="http://www.j2mepolish.org/cms/uploads/RTEmagicC_16f133bc5f.png.png" alt="design example 3" height="181" width="137" />
            </a>
            </p>
            </td>
        </tr>
    </tbody>
</table><img src ="http://www.blogjava.net/gooogle/aggbug/191876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G工作室</a> 2008-04-10 15:20 <a href="http://www.blogjava.net/gooogle/archive/2008/04/10/191876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>给你的程序加上菜单 </title><link>http://www.blogjava.net/gooogle/archive/2008/04/04/190837.html</link><dc:creator>3G工作室</dc:creator><author>3G工作室</author><pubDate>Fri, 04 Apr 2008 15:04:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2008/04/04/190837.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/190837.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2008/04/04/190837.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/190837.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/190837.html</trackback:ping><description><![CDATA[<strong>关键字</strong>: wince
<div class="blog_content">
<p>原文 <a href="http://www.3geye.net/?3/viewspace-3235">http://www.3geye.net/?3/viewspace-3235</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><br />
给WinCE程序加上菜单的功能。<br />
<span style="display: none;">_M.S8G8GAAq3</span><br />
<span style="display: none;">"e+?U2SKLg9e3WR9H3</span>&nbsp; public void createMainMenu()<br />
<span style="display: none;">:P9~;qK9`+e
@3</span>&nbsp;&nbsp;&nbsp; {<br />
<span style="display: none;">#X.ovClyE
a3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <a href="javascript:;" target="_self" onclick="javascript:tagshow(event, 'Create');"><u><strong>Create</strong></u></a> an empty MainMenu.<br />
<span style="display: none;">HQ�QdOK
n3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MainMenu mainMenu = new MainMenu();<br />
<span style="display: none;">[:W&amp;r)VgIG3</span><span style="display: none;">3GEYE%O)\g)kZ8V2c s/x~</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MenuItem menu = new MenuItem();<span style="display: none;">3GEYE(f;uJ7DQ</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<span style="display: none;">3GEYE`EF-G4z\</span><br />
<br />
<span style="display: none;">i;W9T
U
s&amp;\
m)rs3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; menu.Text = "菜单";<br />
<span style="display: none;">~:X,Nj:M3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MenuItem menuItem = new MenuItem();<span style="display: none;">3GEYE$R3[wGR*Q</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; menuItem.Text = "打开网页";<span style="display: none;">3GEYE)U0KP*h,k5mRog</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; menu.MenuItems.Add(menuItem);<span style="display: none;">3GEYE
x^Tip/j2X</span><br />
<span style="display: none;">3GEYE]#w1F!|:^-b kc</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; menuItem = new MenuItem();<br />
<span style="display: none;">v"m,@9D3P"{�u\Z.s3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; menuItem.Text = "源代码";<br />
<span style="display: none;">L'y5|FT7J#MD1vo9h3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; menu.MenuItems.Add(menuItem);<span style="display: none;">3GEYE8q,n
[cI
wR.Z+_5M</span><br />
<span style="display: none;">3GEYE
atI
bNi</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; menuItem = new MenuItem();<br />
<span style="display: none;">cwV3l/p:U#Pdw!R3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; menuItem.Text = "退出";<br />
<span style="display: none;">x)Ff%UO9c.A3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; menu.MenuItems.Add(menuItem);<br />
<span style="display: none;">H/U CgzG.mw3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
<span style="display: none;">K^A"A)E3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Add two MenuItem objects to the MainMenu.<span style="display: none;">3GEYE9MY
I
c3Pl$a</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mainMenu.MenuItems.Add(menu);<span style="display: none;">3GEYE%E6A]I*t*oTj_</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
<span style="display: none;">6P1S-?7J9B-Do3</span><span style="display: none;">3GEYE"}Mdl"n1ci:y</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Bind the MainMenu to Form1.<br />
<span style="display: none;">	D%G]3_,`1o3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Menu = mainMenu;<br />
<span style="display: none;">h
sT;w2l;b'I(c|;f3</span>&nbsp;&nbsp;&nbsp; }<br />
<span style="display: none;">Cc0[E3L|?d(t3</span>&nbsp;&nbsp; &nbsp;<br />
<span style="display: none;">5WH1X/v1t3</span>&nbsp;&nbsp; &nbsp;<br />
<span style="display: none;">^~7nB~*j3</span>&nbsp;&nbsp;&nbsp; 感觉微软的东西就是简单。 </p>
</div><img src ="http://www.blogjava.net/gooogle/aggbug/190837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G工作室</a> 2008-04-04 23:04 <a href="http://www.blogjava.net/gooogle/archive/2008/04/04/190837.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>终于解决了Mibole C# 闪烁问题</title><link>http://www.blogjava.net/gooogle/archive/2008/04/04/190835.html</link><dc:creator>3G工作室</dc:creator><author>3G工作室</author><pubDate>Fri, 04 Apr 2008 14:22:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2008/04/04/190835.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/190835.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2008/04/04/190835.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/190835.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/190835.html</trackback:ping><description><![CDATA[<p>原文：&nbsp;&nbsp; <a mce_href="http://www.3geye.net/?3/viewspace-3234" href="http://www.3geye.net/?3/viewspace-3234">http://www.3geye.net/?3/viewspace-3234</a></p>
<p>&nbsp; </p>
昨天晚上试验了下，发现双缓冲来是不起作用，很是郁闷。怎么办了，今天看了一篇文章才恍然大悟。。<span style="display: none;">3GEYE|Q~@$` PS,c</span><br />
<span style="display: none;">3GEYE7t_a6M`#c)I$|E</span><br />
我想你看了这篇文章也是很容易理解的。<span style="display: none;">3GEYE_�r�nP ]*@ ?</span><br />
<br />
<span style="display: none;">5A3]3G�S9B�`u3</span>下面是叶帆的一篇文章点醒了我。<span style="display: none;">3GEYE;Q,hc
S5b2\)c ua</span><br />
<br />
<span style="display: none;">1}%~@`	g2f3</span><a href="http://blog.csdn.net/yefanqiu/archive/2006/11/21/1402520.aspx" mce_href="http://blog.csdn.net/yefanqiu/archive/2006/11/21/1402520.aspx">&nbsp;WinCE 4.2（.net精简框架集）下的</a><a onclick="return true;javascript:tagshow(event, '%CD%BC%D0%CE');" href="javascript:;" mce_href="javascript:;" target="_self"><u><strong>图形</strong></u></a>双缓存处理&nbsp;&nbsp;<span><img src="http://blog.csdn.net/images/star.gif" style="cursor: pointer;" mce_src="http://blog.csdn.net/images/star.gif" alt="" title="点击图片可在新窗口打开" border="0" /><img src="http://blog.csdn.net/images/star.gif" style="cursor: pointer;" mce_src="http://blog.csdn.net/images/star.gif" alt="" title="点击图片可在新窗口打开" border="0" /><img src="http://blog.csdn.net/images/star.gif" style="cursor: pointer;" mce_src="http://blog.csdn.net/images/star.gif" alt="" title="点击图片可在新窗口打开" border="0" /><img src="http://blog.csdn.net/images/star.gif" style="cursor: pointer;" mce_src="http://blog.csdn.net/images/star.gif" alt="" title="点击图片可在新窗口打开" border="0" /><img src="http://blog.csdn.net/images/star_half.gif" style="cursor: pointer;" mce_src="http://blog.csdn.net/images/star_half.gif" alt="" title="点击图片可在新窗口打开" border="0" /></span>&nbsp;&nbsp;<img src="http://blog.csdn.net/images/ask.gif" style="cursor: pointer;" mce_src="http://blog.csdn.net/images/ask.gif" alt="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" title="点击图片可在新窗口打开" border="0" /><span><img src="http://blog.csdn.net/images/star.gif" style="cursor: pointer;" mce_src="http://blog.csdn.net/images/star.gif" alt="" title="点击图片可在新窗口打开" border="0" /><img src="http://blog.csdn.net/images/star.gif" style="cursor: pointer;" mce_src="http://blog.csdn.net/images/star.gif" alt="" title="点击图片可在新窗口打开" border="0" /><img src="http://blog.csdn.net/images/star.gif" style="cursor: pointer;" mce_src="http://blog.csdn.net/images/star.gif" alt="" title="点击图片可在新窗口打开" border="0" /><img src="http://blog.csdn.net/images/star.gif" style="cursor: pointer;" mce_src="http://blog.csdn.net/images/star.gif" alt="" title="点击图片可在新窗口打开" border="0" /><img src="http://blog.csdn.net/images/star_half.gif" style="cursor: pointer;" mce_src="http://blog.csdn.net/images/star_half.gif" alt="" title="点击图片可在新窗口打开" border="0" /></span>&nbsp;&nbsp;<img src="http://blog.csdn.net/images/ask.gif" style="cursor: pointer;" mce_src="http://blog.csdn.net/images/ask.gif" alt="CSDN Blog推出文章指数概念，文章指数是对Blog文章综合评分后推算出的，综合评分项分别是该文章的点击量，回复次数，被网摘收录数量，文章长度和文章类型；满分100，每月更新一次。" title="点击图片可在新窗口打开" border="0" />
<div class="postText">
<p><span size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在上位机Windows操作平台（ .net 2.0框架集）下实现图形双缓存有很多办法，每种办法在上位机都有很好的效果，但是很不幸，在WinCE4.2操作系统（.net 2.0精简框架集）下这些方法要么不支持，要么效果很差（还是闪烁的厉害）。</span></p>
<p><span size="2">在上位机中，一般都有这么几种办法：</span></p>
<p><span size="2">1、<span color="black" face="宋体" style="font-size: 10pt;"><span face="Arial"><a onclick="return true;javascript:tagshow(event, '%D3%A6%D3%C3%B3%CC%D0%F2');" href="javascript:;" mce_href="javascript:;" target="_self"><u><strong>应用程序</strong></u></a>中使用双缓冲的最简便的方法是使用<span>.NET Framework</span>为窗体和控件提供的默认双缓冲，通过将<span>DoubleBuffered</span>属性设置为True即可。</span></span></span></p>
<p><span color="black" face="宋体" style="font-size: 10pt;"><span face="Arial">2、通过SetStyle修改控件属性。</span></span></p>
<p><span color="black" face="宋体" style="font-size: 10pt;">&nbsp;<span color="#000066" style="font-size: 13.5pt;">public void EnableDoubleBuffering()</span></span></p>
<p><span color="black" face="宋体" style="font-size: 10pt;"><span color="#000066" style="font-size: 13.5pt;">{</span></span></p>
<div style="margin: 0cm 0.75pt 0pt; text-align: left;" align="left"><span color="#000066" style="font-size: 13.5pt;">&nbsp;&nbsp; // Set the value of the double-buffering style bits to true.</span></div>
<div style="margin: 0cm 0.75pt 0pt; text-align: left;" align="left"><span color="#000066" style="font-size: 13.5pt;">&nbsp;&nbsp; this.SetStyle(ControlStyles.DoubleBuffer |</span></div>
<div style="margin: 0cm 0.75pt 0pt; text-align: left;" align="left"><span color="#000066" style="font-size: 13.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ControlStyles.UserPaint |</span></div>
<div style="margin: 0cm 0.75pt 0pt; text-align: left;" align="left"><span color="#000066" style="font-size: 13.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ControlStyles.AllPaintingInWmPaint,</span></div>
<div style="margin: 0cm 0.75pt 0pt; text-align: left;" align="left"><span color="#000066" style="font-size: 13.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; true);</span></div>
<div style="margin: 0cm 0.75pt 0pt; text-align: left;" align="left"><span color="#000066" style="font-size: 13.5pt;">&nbsp;&nbsp; this.UpdateStyles();</span></div>
<p><span color="#000066" style="font-size: 13.5pt;">}</span></p>
<p><span color="#000066" style="font-size: 13.5pt;"><span face="Arial" size="2">3、比较经典的一种如下：重载<span color="#000000" face="Verdana">OnPaint函数</span></span></span></p>
<span color="#000066" style="font-size: 13.5pt;">
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span size="2"><span color="#000000"><span face="Verdana">protected override void OnPaint(PaintEventArgs e)<br />
<span style="display: none;">|'B:lM�k wCg3</span>&nbsp;&nbsp;{<span style="display: none;">3GEYE�P(i#A$z9U].E#W</span><br />
<br />
<span style="display: none;">a%r4Et:B)o^[-_F3</span>&nbsp;&nbsp;&nbsp;System.Drawing.Bitmap b = new Bitmap(this.Width,this.Height);//</span><span>双缓冲技术</span><span face="Verdana">,</span><span>先将所有要画的画在该图片中</span><span face="Verdana">,</span><span>再调用</span><span face="Verdana">GS</span><span>画出该图片</span></span></span><span face="Verdana"><span size="2"><span color="#000000">.<br />
<span style="display: none;">"i-~/I-F
Nu3</span>&nbsp;&nbsp;&nbsp;Graphics g = Graphics.FromImage((System.Drawing.Image)b);<br />
<span style="display: none;">~)O~|0Q5OA4Yr3</span>&nbsp;&nbsp;&nbsp;//</span></span></span><span size="2"><span color="#000000"><span>在这里画你所需要画的</span></span></span></p>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span face="Verdana"><span size="2"><span color="#000000">&nbsp;&nbsp; //-------------------<span style="display: none;">3GEYE7Exk9V
d%eR:Toj</span><br />
&nbsp;&nbsp;&nbsp;e.Graphics.DrawImage((System.Drawing.Image)b,0,0);<br />
<span style="display: none;">RX$ZE'F3</span>&nbsp;&nbsp;&nbsp;g.Dispose();</span></span></span></p>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span face="Verdana"><span size="2"><span color="#000000">&nbsp;&nbsp; base.OnPaint (e);&nbsp;&nbsp;&nbsp;<br />
<span style="display: none;">	S	OxLI-`3</span>&nbsp;&nbsp;}</span></span></span></p>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span face="Verdana"><span size="2"><span color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; 前两种办法在WinCE下都不支持，第三种办法是可以使用的，但效果不佳，还是有明显的闪烁现象。经过上网查资料和测试，发现在第三种办法<a onclick="return true;javascript:tagshow(event, '%BB%F9%B4%A1');" href="javascript:;" mce_href="javascript:;" target="_self"><u><strong>基础</strong></u></a>上要进行如下处理，效果才非常完美。</span></span></span></p>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span face="Verdana"><span size="2"><span color="#000000">&nbsp;&nbsp; 由于我是在Panel上绘的图，所以我派生了一个类EmbedPanel，重载了OnPaintBackground函数，并且置该函数为空。<span style="display: none;">3GEYE&amp;W-}XFjr~+n</span><br />
</span></span></span></p>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span face="Verdana"><span size="2"><span color="#000000">&nbsp;&nbsp;&nbsp; public class EmbedPanel : Panel<span style="display: none;">3GEYE_XPJey%LIg</span><br />
&nbsp;&nbsp;&nbsp; {<br />
<span style="display: none;">&amp;vkt%ZXW�xJ_3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected override void OnPaintBackground(PaintEventArgs paintg)<br />
<span style="display: none;">zb1vSH-^%[%o*P3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="display: none;">3GEYE2L.FtJlIZ R</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //不绘制背景<span style="display: none;">3GEYE w,ki
@:Zz</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<span style="display: none;">3GEYE"iyM+y\'Un</span><br />
&nbsp;&nbsp;&nbsp; }&nbsp;</span></span></span></p>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span face="Verdana"><span size="2"><span color="#000000">&nbsp;&nbsp; &nbsp;private void pb_Paint(object sender, PaintEventArgs e)<br />
<span style="display: none;">BpM\BR|3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
<span style="display: none;">n	]{,g8v*u$d
D/YEO3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<span style="display: none;">3GEYE/W
kf,M+N$o$W</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<span style="display: none;">3GEYEL6f}wr2_2t</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pb_Graphics.FillRectangle(new SolidBrush(BackColor), Rect);&nbsp; //绘制背景<br />
<span style="display: none;">R'?/R0jx	yh/k6W]3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //--------------------------------------------------------</span></span></span></p>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span face="Verdana"><span size="2"><span color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... ... 具体的绘图代码</span></span></span></p>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span face="Verdana"><span size="2"><span color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //--------------------------------------------------------<br />
<span style="display: none;">:?6@&amp;}	JjcM3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.Graphics.DrawImage((System.Drawing.Image)pb_Bitmap, 0, 0);<span style="display: none;">3GEYEKpi�sk,T6?w</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<span style="display: none;">'RdyC.W Z.]3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception err)<span style="display: none;">3GEYEpO�jUm-?6Z</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
<span style="display: none;">"K
z|-k
Mj$AB~$W\3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ShowInfo(3000, 2, err.Message, "pb_Paint");<br />
<span style="display: none;">-CSXP[3B)g,b3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<span style="display: none;">3GEYEU,k*|9R7@4_'N cw</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></span></span></p>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span face="Verdana"><span size="2"><span color="#000000">&nbsp;&nbsp;&nbsp;
//注：在WINCE测试时发现，在OnPaint中的写System.Drawing.Bitmap b = new
Bitmap(this.Width,this.Height)代码，程序运行不长时间便会导致WinCE死机。所以我是在类的初始化中执行该代码的。</span></span></span></p>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span face="Verdana"><span size="2"><span color="#000000">&nbsp;&nbsp;&nbsp;&nbsp; 这样一来，就很完美的在.net精简框架集下解决了绘图闪烁问题。</span></span></span></p>
<p style="background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span face="Verdana"></span></p>
<p>&nbsp;</p>
</span><span style="display: none;">3GEYE}]m
h qx</span><br />
<br />
<span style="display: none;">/Ym{/zC9f#j3</span>
<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1402520</p>
</div>
<span style="display: none;">3GEYEg*kGS*p/~B</span>
<p>&nbsp;</p><img src ="http://www.blogjava.net/gooogle/aggbug/190835.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G工作室</a> 2008-04-04 22:22 <a href="http://www.blogjava.net/gooogle/archive/2008/04/04/190835.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>公告：博客搬家了到http://wuhua.3geye.net</title><link>http://www.blogjava.net/gooogle/archive/2008/04/01/189917.html</link><dc:creator>3G工作室</dc:creator><author>3G工作室</author><pubDate>Tue, 01 Apr 2008 01:34:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2008/04/01/189917.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/189917.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2008/04/01/189917.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/189917.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/189917.html</trackback:ping><description><![CDATA[如题，<br />
以后我个主要维护的博客是<br />
<a href="http://wuhua.3geye.net">http://wuhua.3geye.net</a><br />
<br />
里面有大量的移动开发文章已经相关经验，请大家多多来访。还有大量的源代码下载。实例解说。<br />
<br />
来吧，一起体验移动开发吧。这很有趣。<br />
<br /><img src ="http://www.blogjava.net/gooogle/aggbug/189917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">3G工作室</a> 2008-04-01 09:34 <a href="http://www.blogjava.net/gooogle/archive/2008/04/01/189917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>