随笔 - 10, 文章 - 0, 评论 - 0, 引用 - 0
数据加载中……

2005年5月13日

[导入]转载: J2SE(TM) 5.0专题 之 语言特性 (完整版)

     摘要: [版权声明]作者保留本文的版权。如需转载,请保持文章完整,注明出处,并保留此声明;如需用于商业目的,须作者本人书面许可。作者的联系E-mail: gaoyuxiang@gmail.com     [准备工作]   首先,为了了解J2SE(TM) 5.0的新的语言特性,你需要下载新版的JDK,在这里可以找到下载链接:http://java.sun.com/...  阅读全文

posted @ 2005-06-03 10:43 赖小猪的家 阅读(299) | 评论 (0)编辑 收藏

[导入]你会在你的web应用里用"降龙十八掌"吗?



这是rain推荐的一篇关于SOA的文章. 比较易懂, 不过它框架名字比较牛:  X18p (Xiangnong 18 Palm, named for a legendary powerful kung fu fighter) .   降龙十八掌!!! 看作者是位中国人了,而且还是个金迷.


x18p 主要是解偶了web和biz层. Struts action里面不放任何的逻辑代码, 这当然很普通. 不管是heavy还是light container都告诉我们逻辑代码应该在ejb或是pojo里. 不过x18p是用soa的方式来封装biz层, 实现了web和biz的松藕合. 这样action不用管biz是用ejb还是用pojo,或者其它什么. biz层的重用性也大大加强,既可以服务于web client,也可以是Swing, 也可以是web service.

看了这篇文章,你会在你的web应用里尝试一下降龙十八掌吗?


文章来源:http://www.cnblogs.com/jackyzhong/archive/2005/06/02/166537.html

posted @ 2005-06-02 10:32 赖小猪的家 阅读(253) | 评论 (0)编辑 收藏

[导入]Spring presentaion (2)

Finaly I made a PPT file for presentaion, It's not an easy work. Here is my ppt
文章来源:http://www.cnblogs.com/jackyzhong/archive/2005/06/01/166129.html

posted @ 2005-06-01 16:31 赖小猪的家 阅读(224) | 评论 (0)编辑 收藏

[导入]转贴:Spring vs. EJB

引自:http://www.cnblogs.com/raimundo/archive/2004/09/20/44697.html


赫赫,我来说一下spring vs EJB,首先强调,我不是ejb的拥护者,但我欣赏他的完整、他的学院气,同时也深感他的硬伤,我不是spring的拥护者,虽然去年3、4月间看

到spring的时候曾经让我眼前一亮。对ejb有太多的误解,对spring有太多的吹捧,我希望这是一个相对公平的比较.

我认为spring和ejb的差异在这样三个方面,一个是受众也就是这两个叫framework也好叫platform也好的东西的scope;另一个是component architecture,最后一个是语义



[b]1.Scope比较[/b]

先说scope,ejb的scope是什么?ejb针对什么系统来设计的?这个我想一个人一个答案,我说了不算,同样大家说了也不算,我们来看规范(题外说一句,我想本来我没啥

资格在这里谈论ejb,我应用ejb的项目不多,但是我有个习惯,就是读规范学技术,不管别人怎么说先看这个东西是怎么来的,我想这一点还使我有些开口的自信,不至于太

贻笑大方),ejb规范的头几句:
[b]Enterprise JavaBeans is an architecture for component-based computing.Enterprise beans are components of transaction-oriented enterprise

applications.[/b]

好了,很明确,ejb是针对transaction-oriented enterprise application的组件,那么也就使说ejb是面向[b]以事务为中心[/b]的企业软件,而不是别的。ejb的核心是

transaction,不是domain model或别的。
why transaction?我在电力行业做过一阵信息化软件架构师,在电力这样一个需要处理大量数据的领域里,很少有oo model,而是做完entity分析,交给dba去优化,以数据

性能为主,这样的系统里,数据操作的粒度就是transaction,而不是object或是别的。我想这该算是一个大型企业级系统,我看到的是transaction,因此ejb这个把scope定

在enterprise级的东西而言,这样的设计还使合理。而且ejb对transaction这部分的处理确实比较完整,cmt,bmt,不同的transaction scope控制的都很好。基于这种认识,

我认识transaction script是ejb的标准应用模式,而不是domain model或是别的。
这是对ejb最大的误解的来源,我看过的所有ejb书里,只有o'reilly的一本隐约提到transaction是ejb的中心。其他一律不提,疯狂的鼓吹ejb多好多好ejb多么万能,我想

,如果不知道ejb是transaction-oriented的,那么ejb奇怪的对象模型的确不可接受。

再说spring,spring是什么呢?我没有看到特别明确的定义,不过我想仿照ejb,定义spring为:
Spring is a Javabean-based framework that supporting component architecture development.Spring provides lighter context for heterogeneous entrprise

application.

我e文很差,cet-6 6次都没过,我想说明的是,spring是一个轻量化的组件架构,可以支持多种企业应用程序模式.看到这里有人又该说了,no,no还有ioc,还有aop,没错这

些很cool的特性我没说,但是包含了,component architecture意味着两个方面,component working(编写组件)和container working(编写容器环境),spring的ioc和aop是

用在container working里的.当然肯定还有其他的一些没有概括,但是我想主体我还是说到了的.这样scope就很明确了,spring的基础是javaBean,javaBean支持完整的oo建

模,因此spring可以适用更多的结构,domain model和别的一些。

那么开始比较,spring有一个理论上普适的组件模型,但是鉴于大型应用多为transaction-oriented,那么用spring的理由就是domain model,ejb不能提供完整的oo模型而

spring可以。

结论:由于scope不同,其实比较spring和ejb那个更适合企业开发没什么意义,因为这里面根本就是两个不同的范畴,在scope上指责ejb不如spring,就好像说raimundox,你

就不能替老婆把孩子生了,还让她那么痛苦的怀胎十月。其实我也不想,我也想替,可惜我们这功能.....扯远了,ejb也是,没这功能你怎么强求他呢?你要说ejb设计的不好

,也不对,人家有专门的领域。因此我说,在scope上比较spring和ejb没意义,根本不是一个级别的。

[b]2.component architecture[/b]

Component architecture有一个基本观点,就是component和context的分离,理想情况下,component只负责业务的实现,而container提供context,这个context只技术

context,比如事务比如安全的支持。于是,component architecture的基本观点就是business关注点和technique关注点分离,business由component负责,technique由

context或者叫container实现。那么很明确了,component architecture里有两种编程,针对component的和针对container的。
好,有了这个理解,我们可以继续了,如果有人有疑意,那么抱歉,这片文章并不适合您,后面全部的论点都是基于这个观点的,如果不认可这个,下面的也不会认可,您

也不用浪费时间了。

首先看ejb的component方面,ejb在component architecute做得非常的好,ejb就是一个业务组件,在container-managed的情况下,组件通过声明可以应用容器提供的技术

context,当container-managed不满需要的情况下,可以bean-managed,只要保持对外的事务语义就可以了(记得吗?ejb是transaction-oriented,事务最重要)。在ejb里

,组件和容器的约定非常明确,哪些需要组件写,哪些是容器提供的非常明确,这是component architecture里很好的习惯,明确组件和容器的界限(ejb的一个缺点,矫枉过

正,有一些操作也被禁止)。编写代码非常容易,业务,only业务。其实ejb的规范里,ejb的coder其实最好是domain expert,实现业务逻辑就好了。

现在来看spring的component方面,spring以javaBean为基础,贫容器,也就是对容器没要求,于是,spring第一个缺点,contianer和component的约定不清晰(写到这里我

已经听到一些人在叫了,这是spring的优点,自由,别急,后面我会证明这是spring的软肋),但是spring用了一种比较聪明的办法,那就是加强container working.

看一下spring的container working,通过spring的aop api,我们可以很容易的为特定组件定制容器环境,把一个组件需要的容器技术环境以aspect的形式weave到component

里,非常的灵活,也非常的强大,spring通过这种形式来弥补组件/容器约定不足的情况,一切由component选择,容器除了装配(ioc/dip)不提供任何技术context,想要什

么自己来,这个给了component实现者自己选择的权利,很好(但也隐含了spring的最大的不足,别急我后面会说)。

再来看ejb,非常遗憾,ejb container working的能力几乎为0,当然算上jca的话还不算太差,但是那只是资源,而不是技术context。why?因为ejb认为他已经提供了所有

企业级开发所必需的技术context了,事务(ejb里我总把他放在第一位)、分布、并发、安全等等。在ejb看来container working的能力几乎无用,而且不安全,除了jboss开放

了比较多的container working接口其他的ejb container提供这方面的支持很少很少.当然提供很多技术context并不是坏事,要命的是不能配置,要么全用要么不用(倒是很

原子),这是ejb最大的不足,容器环境不可配,也是spring强于ejb的地方。

上面我们已经看到了spring和ejb都是component architecture,那么component能想到的最直接的用处就是复用。那么比较这一点就是比较ejb和spring component

architecture的关键。看到这里spring的支持者们该常出一口气了,spring复用一定强于ejb复用,赫赫,但我的结论正好相反,ejb复用优于spring复用!!收起你们的愤怒

,收起你们不屑,听我把话说完。

在component architecture里,component是业务实现,而不该有技术代码,就算用也要通过容器环境去和容器交互来完成操作,比如ServletContext等东西。[b]那么其实

组建结构下复用的关键不是组建而是容器!![/b]

以前有一个颇有名气的dx(gigix别看了,说你呢),说"COM和EJB都鼓吹模块化和复用,模块化是真的,复用是骗人的",com我不是很熟,不好下结论,ejb呢?ejb不易复用我

承认,但是骗人吗?不骗,后面我给出一种ejb复用的思路大家参考。反正组件一点技术都不作,只有业务逻辑想用就要有相应的容器环境,那么容器环境的复用性才是组件复

用的关键。ejb不易复用是因为如果脱离容器,我们就必须给它提供相应的技术context,事务、分布、并发等等一个也不能少,[b]因此容器外复用ejb效率很低[/b]。注意,

[b]是容器外[/b],组件本来就是跑在容器里的,谁让你非要拿出去用),而容器内呢?因为ejb规范规定ejb容器应该兼容,别说webSphere到bea的移植有多难,其实不难,或

者说难度比把spring组件移植到pico复杂一点,当然你用vendor-specified的特性就没办法了,这不再规范内,你违规就别怨人家。因此,ejb的复用是可以的,而且是规范保

证的,容器外也有办法,也不是很难,我后面说。

再看spring,的确他很灵活,但这正是致命伤,component完全是业务实现,但是容器呢?spring怎么保证容器的环境?没有,只能你自己保证,当你沾沾自喜的说,spring

里的component都是pojo,可以很好复用的时候,可曾想到,这复用的代价是要复用容器。比如有个componentA,在SystemA里需要事务模型A和安全模型A,在SystemB里需要事

务模型B和安全模型B,当你从SystemA里复用componentA的时候,你要怎样?重写事务模型B和安全模型B,然后你可以堂而皇之的说,你复用了组件。的确,你复用了组件,但

是你重写了容器,值吗?更可怕的是,spring容器和组件没有约定,那么怎么保证你的组建不写技术代码?ejb只要Bean-Managed并提供统一的事务模型就好了,spring呢?你

靠什么保证?你自己?这是spring一大硬伤,完全container-managed下缺少特定的component边界控制.你可以说,特殊要求的事务模型ejb还实现不了呢,的确,这是有可能

,但是ejb transaction model不能适用的情况有多少?如果真的不行,只能说ejb的简单复用在这里失效。

对于组件还有一个问题就是部署,这也是ejb为人诟病的地方.的确,ejb的部署够复杂,但在ejb规范里有一个专门的角色来负责部署的,ejb是component architecture,那

么比如有一个人来粘合技术和业务,这个人不该是programmer(我刚才说了,ejb的实现者最好是业务专家,实现业务逻辑),ejb的部署才是很厉害的人,他需要知道什么业务

需要什么样的技术支持,该怎样得到性能,因此deployer才是ejb architecture里最牛的,我重来不以为写ejb的是高手,但是一直都敬仰ejb的deployer.当然这里有一个调试

困难的问题,这是ejb的硬伤,没办法,这甚至是组件开发的硬伤.
再来看spring,spring宣称他部署简单,我觉得rod johnson在转移视线,想想看,打成一个war和打成一个ear有多大的区别?那么部署的差异在哪?差异在ejb的deploy

description和spring的context.xml的编写上!在用spring开发中要有一个人来写context.xml这个人往往比较了解系统,知道什么组件用什么拦截,那个组件依赖那个,甚至

会是架构师在作这件事情,那么和ejb里对系统有大局观的人来做deploy有多大区别?可能就是Xml的编写吧,我想在工具的支持下就是熟练度的问题,因此我觉得部署上

spring和ejb差不多,spring不用启server,调试放便些。

结论,在component architecture上,spring灵活,ejb统一完整,各胜擅长,spring的灵活以降低复用为代价,但是如果有common的技术实现,的确很好复用,但是

spring+一套common的技术实现也就约等于ejb了吧?

[b]3.语义[/b]

那么spring复用的问题表明了什么呢?其实是缺乏语义的支持,ejb开发可以看作在一个统一的语义环境下来作的,这个语义由ejb规范规定,因此ejb的复用有语义保证,而

spring呢?贫语义,一切都要开发者自己来实现。因此,如果ejb的环境语义可扩展并且可配置(比如去掉分布),那么spring毫无优势,标准的一致的完整的组件架构使ejb

会大有作为,但是现在并没有,才有了spring的火爆.这是一种畸形的胜利,完备语义的输给了贫语义的,问题是什么,强迫消费...谁让ejb非得强迫客户去买用不到的分布式

环境的单?但是统一语义的威力不会因此掩灭,现在有两条路,spring联合os社区,制定lightweight j2ee语义集合,争取成为标准。第二,ejb实现技术语义可配置可扩展。

谁会胜利?不好说,但是似乎ejb的脚步快一些!

[b]附:容器外复用ejb[/b]

其实ejb在容器外完全是可以用的,但是为了最大限度保证能用,bean-managed是推荐(不是cmp,bmp而是cmt,bmt),那么怎么传送一个transaction进去?SessionContext(

好像是这名记不清了,都快2:00了,困呀...就是ejb那个context接口),一个接口嘛,自己mock一下,给一个transaction进去就好了。怎么装配?spring的setter

injection。如果用spring,那么cmt也可以实现,拦截啦,不过就看能不能实现ejb transaction model了。entity bean,如果是bmp,就用它好了,cmp,继承一个上

hibernate。这些都模拟好了,找一个in memory的jndi,把spring context封进去,这样相当于我们用spring实现了一个lightweight ejb container(其实就是给spring一个

ejb api的皮),轻到什么程度?除了注射什么都没有。
然后client就可以构造jndi,然后lookup了
看到这里一定有人说,你吃饱了撑的,这么费劲容器外复用ejb,为什么不直接用spring,这样也不够pojo,每个组件都有ejb的类的继承,好,我告诉你这么做的好处,首先

,虽然不够pojo,但是足够bean,因此spring来管理ejb是可以的,证明我的观点容器外使用ejb可以(赫赫,不要说偶rpwt...).其次的,当业务发展了,你的系统需要分布了

,把spring去掉,拿出ejb,redeploy,ok了,延展,稳定,分布都有了,这才是复用该有的境界,改一个部署整个环境换掉,去掉lightweight的ejb container,换乘

heavyweight的就是重量级。
当然这么实现很难,在ejb3里会容易些,我敢打赌,spring以后一定是lightweight ejb container的供应商,免不免费,os不os要看rod johnson了,不过我觉得希望不大。

致谢:

首先感谢dlee,在和他的讨论中形成了这篇文章的主题,然后是冰云,他帮我审稿直到2:04,udoo,perhaps都提出了中肯的意见,谢谢他们.

当然也欢迎大家访问我的blog:www.cnblogs.com/raimundo

文章来源:http://www.cnblogs.com/jackyzhong/archive/2005/05/30/164937.html

posted @ 2005-05-30 14:03 赖小猪的家 阅读(238) | 评论 (0)编辑 收藏

[导入]Spring presentation (1)

I will give a presentation on this friday, so just prepare some materials and record them in my blog:

1. What's the Spring?

Spring is a java-based framework which have a suite of solutions from web tie to dao tie. You can use the whole solution or you can just use one.

2. The spring picture:



Core包是框架的最基础部分, 并提供依赖注入(Dependency Injection)特性来使你可管理Bean容器功能。 这里的基础概念是BeanFactory,它提供Factory模式来消除对程序性单例的需要, 并允许你从程序逻辑中分离出依赖关系的配置和描述。

构建于Beans包上Context包,提供了一种框架式的Bean访问方式, 有些象JNDI注册。Context包的特性得自Beans包,并添加了文本消息的发送,通过比如资源串, 事件传播,资源装载的方式和Context的透明创建,如通过Servlet容器。

DAO包提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。 该包也提供了一种方法实现编程性和声明性事务管理,不仅仅是针对实现特定接口的类, 而且对所有的POJO

ORM包为流行的关系-对象映射APIs提供了集成层,包括JDO,Hibernate和iBatis。 通过ORM包,你可与所有Spring提供的其他特性相结合来使用这些对象/关系映射, 如前边提到的简单声明性事务管理。

Spring的AOP包提供与AOP联盟兼容的面向方面编程实现,允许你定义, 如方法拦截器和切点,来干净地给从逻辑上说应该被分离的功能实现代码解耦。 使用源码级的元数据功能,你可将各种行为信息合并到你的代码中,有点象.Net的attribute。

Spring的Web包提供了基本的面向Web的综合特性,如Multipart功能, 使用Servlet监听器的Context的初始化和面向Web的Applicatin Context。 当与WebWork或Struts一起使用Spring时,这个包使Spring可与其他框架结合。

Spring的Web MVC包提供了面向Web应用的Model-View-Controller实现。 Spring的MVC实现不仅仅是一种实现,它提供了一种domain model代码和web form的清晰分离, 这使你可使用Spring框架的所有其他特性,如校验.



文章来源:http://www.cnblogs.com/jackyzhong/archive/2005/05/30/164750.html

posted @ 2005-05-30 10:00 赖小猪的家 阅读(249) | 评论 (0)编辑 收藏

[导入]Train the trainer

今天公司做了个培训,主要是如何做一个好的trainer.



文章来源:http://www.cnblogs.com/jackyzhong/archive/2005/05/25/162292.html

posted @ 2005-05-25 17:17 赖小猪的家 阅读(226) | 评论 (0)编辑 收藏

[导入]改头换面

今天换了一个新skin,看上去比较清爽. 以后要多投稿. 也希望来这儿看看的朋友多交流.
文章来源:http://www.cnblogs.com/jackyzhong/archive/2005/05/24/161253.html

posted @ 2005-05-24 09:15 赖小猪的家 阅读(296) | 评论 (0)编辑 收藏

[导入]SQL 语法参考手册




  一、资料定义ddl(data definition language) 

  资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系、表格内的有什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。

  1、建表格:

  create table table_name( column1  datatype [not null] [not null primary key],  column2 datatype [not null],...)

  说明: 

  datatype --是资料的格式,详见表。
  nut null --可不可以允许资料有空的(尚未有资料填入)。
  primary key --是本表的主键。

  2、更改表格 

  alter table table_name add column column_name datatype 

  说明:增加一个栏位(没有删除某个栏位的语法。)

  lter table table_name add primary key (column_name)

  说明:更改表得的定义把某个栏位设为主键。
  
  alter table table_name drop primary key (column_name)

  说明:把主键的定义删除。

  3、建立索引 

  create index index_name on table_name (column_name)

  说明:对某个表格的栏位建立索引以增加查询时的速度。

  4、删除 

  drop table_name

  drop index_name

  二、资料形态 datatypes

  smallint
  16 位元的整数。

  interger
  32 位元的整数。

  decimal(p,s)
  p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。 

  float
  32位元的实数。

  double
  64位元的实数。

  char(n)
  n 长度的字串,n不能超过 254。

  varchar(n)
  长度不固定且其最大长度为 n 的字串,n不能超过 4000。

  graphic(n)
  和 char(n) 一样,不过其单位是两个字元 double-bytes, n不能超过127。这个形态是为支援两个字元长度的字体,例如中文字。

  vargraphic(n)
  可变长度且其最大长度为 n 的双字元字串,n不能超过 2000。

  date
  包含了 年份、月份、日期。

  time
  包含了 小时、分钟、秒。

  timestamp
  包含了 年、月、日、时、分、秒、千分之一秒。
三、资料操作 dml(data manipulation language)

  资料定义好之後接下来的就是资料的操作。资料的操作不外乎增加资料(insert)、查询资料(query)、更改资料(update) 、删除资料(delete)四种模式,以下分 别介绍他们的语法:

  1、增加资料:

  insert into table_name (column1,column2,...) values ( value1,value2, ...)

  说明:

  1.若没有指定column 系统则会按表格内的栏位顺序填入资料。

  2.栏位的资料形态和所填入的资料必须吻合。

  3.table_name 也可以是景观 view_name。

  insert into table_name (column1,column2,...) select columnx,columny,... from another_table

  说明:也可以经过一个子查询(subquery)把别的表格的资料填入。

  2、查询资料:

  基本查询

  select column1,columns2,... from table_name

  说明:把table_name 的特定栏位资料全部列出来

  select * from table_name where column1 =  xxx [and column2 > yyy] [or column3 <> zzz]

  说明:

  1.'*'表示全部的栏位都列出来。

  2.where 之後是接条件式,把符合条件的资料列出来。

  select column1,column2 from table_name order by column2 [desc]

  说明:order by 是指定以某个栏位做排序,[desc]是指从大到小排列,若没有指明,则是从小到大排列

  组合查询

  组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的表格才能够得到结果的。

  select * from table1,table2 where table1.colum1=table2.column1

  说明:

  1.查询两个表格中其中 column1 值相同的资料。


  2.当然两个表格相互比较的栏位,其资料形态必须相同。

  3.一个复杂的查询其动用到的表格可能会很多个。

  整合性的查询:

  select count (*) from table_name where column_name = xxx

  说明:

  查询符合条件的资料共有几笔。

  select sum(column1) from table_name

  说明:

  1.计算出总和,所选的栏位必须是可数的数字形态。

  2.除此以外还有 avg() 是计算平均、max()、min()计算最大最小值的整合性查询。

  select column1,avg(column2) from table_name  group by column1 having avg(column2) > xxx

  说明:

  1.group by: 以column1 为一组计算 column2 的平均值必须和 avg、sum等整合性查询的关键字一起使用。 

  2.having : 必须和 group by 一起使用作为整合性的限制。

  复合性的查询

  select * from table_name1 where exists  ( select * from table_name2 where conditions )

  说明:

  1.where 的 conditions 可以是另外一个的 query。

  2.exists 在此是指存在与否。

  select * from table_name1 where column1  in ( select column1 from table_name2 where conditions )

  说明: 

  1. in 後面接的是一个集合,表示column1 存在集合里面。

  2. select 出来的资料形态必须符合 column1。 

  其他查询

  select * from table_name1 where column1 like 'x%' 

  说明:like 必须和後面的'x%' 相呼应表示以 x为开头的字串。

  select * from table_name1 where column1 in ('xxx','yyy',..)

  说明:in 後面接的是一个集合,表示column1 存在集合里面。

  select * from table_name1 where column1 between xx and yy

  说明:between 表示 column1 的值介於 xx 和 yy 之间。 

  3、更改资料:

  update table_name set column1='xxx' where conditoins

  说明:

  1.更改某个栏位设定其值为'xxx'。

  2.conditions 是所要符合的条件、若没有 where 则整个 table 的那个栏位都会全部被更改。

  4、删除资料:

  delete from table_name where conditions

  说明:删除符合条件的资料。

  说明:关于where条件后面如果包含有日期的比较,不同数据库有不同的表达式。具体如下:

  (1)如果是access数据库,则为:where mydate>#2000-01-01# 

  (2)如果是oracle数据库,则为:where mydate>cast('2000-01-01'  as date) 或:where mydate>to_date('2000-01-01','yyyy-mm- dd')

  在delphi中写成:

  thedate='2000-01-01';

  query1.sql.add('select * from abc where  mydate>cast('+''''+thedate+''''+' as date)'); 

  如果比较日期时间型,则为:

  where mydatetime>to_date('2000-01-01 10:00:01','yyyy-mm-dd hh24:mi:ss')

文章来源:http://www.cnblogs.com/jackyzhong/archive/2005/05/18/158235.html

posted @ 2005-05-18 16:03 赖小猪的家 阅读(238) | 评论 (0)编辑 收藏

[导入]J2ME开发环境搭建 之 EclipseMe

     摘要:   J2ME开发环境搭建 之 EclipseMe     第一节    初识Eclipse Eclipse是一个开发源代码,基于java的可扩展开发平台,它是在OSI(Open Software Initiative 开发源代码计划)认可的通用公共许可证(CPL)版下...  阅读全文

posted @ 2005-05-17 10:52 赖小猪的家 阅读(1617) | 评论 (0)编辑 收藏

[导入]原生类型的autoboxing和auto-unboxing

 

原生类型的autoboxingauto-unboxing

我们知道,在Java中,int,long等原生类型不是一个继承自Object的类,所以相应的,有很多操作我们都不能利用原生类型操作,比如想要把一个整数放入到一个集合中,我们必须首先创建一个Integer对象,然后再将这个对象放入到集合中。当我们从集合中取数的时候,取出来的是一个Integer对象,因此不能直接对它使用加减乘除等运算符,而是必须用Integer.intValue()取到相应的值才可以,这样的过程称之为boxingunboxing

J2SE5.0支持autoboxingauto-unboxing,也就是说我们以后不需要再手动地做这些boxingunboxing操作了,java语言会替我们完成。具体可以参照下面的示例:

List<Integer> intList=new ArrayList<Integer>();

intList.add(2);

intList.add(new Integer(5));

int i=3+intList.get(0);//i=5

int j=3+intList.get(1); //j=8

 

从这一段程序中我们可以看到,autoboxingauto-unboxing为我们省掉了很多不必要的工作。


文章来源:http://www.cnblogs.com/jackyzhong/archive/2005/05/13/154807.html

posted @ 2005-05-13 16:19 赖小猪的家 阅读(226) | 评论 (0)编辑 收藏