标签 : 42个相关结果 3次浏览

是java.lang.OutOfMemoryError: Java heap space的错误,很熟悉的错误信息,可咋就想不起来在哪里设JVM的参数 在tomcat中设置了的catalina.bat中设置也没有起作用:set JAVA_OPTS=%JAVA_OPTS% -server -Xms768m -Xmx768m -XX:PermSize=512M -XX:MaxPermSize=512m mycelipse需做如下设置:      1,从Intalled JREs里修改;window->Preferences->Java->Installed JREs,选择当前的JRE,然后edit它;在新窗口里设置Default VM Arguments为 -Xms768m -Xmx768m -XX:PermSize=512M -XX:MaxPermSize=512m  可以根据实际情况来做;这个设置应该对所有的工程都有效;         2,如果仅仅是想对某个工程的有效的话,从Debug… 或Run…里修改,在(x)=Arguments里设置和上面相同的参数即可;        3,如果小猫猫Tomcat的话,window->Preferences->Application Servers->Tomcat->Tomcat 6.x,选择JDK设置即可;          大概就是这些设置,应该可以解决OutOfMemoryError: Java heap space的问题。

CMS是Content Management System的缩写,意为”内容管理系统”,它具有许多基于模板的优秀设计,可以加快网站开发的速度和减少开发的成本。CMS的功能并不只限于文本处理,它也可以处理图片、Flash动画、声像流、图像甚至电子邮件档案。 本文介绍 10 个最受欢迎的 CMS 系统,这 10 个系统的共同特点就是采用 Java 语言开发。 1. Walrus CMS Walrus CMS 是一个易用直观的 Java 开发的 CMS 内容管理系统。Walrus CMS 不提供单独的管理界面,一切管理操作直接在当前页面上进行,通过点击和拖拉即可实现内容编辑。使用 Spring 框架。 2. OpenCMS OpenCms是一个专业级别的开源网站内容管理系统。OpenCms可以非常容易的帮助建立和管理复杂的网站而无需专业的HTML知识。当使用一 个复杂的模板引擎来规划站点,它 提供一个类似于我们熟知的office应用的所见即所得编辑器来帮助使用者创建内容。OpenCms是一个完全开源的软件,它不需要任何许可费用。 OpenCms基于JAVA和XML语言技术,因此它适合完全融入到现有的系统内部。OpenCms可以非常好的运行在一个完全的开源环境中(例 如:Linux、Apache、Tomcat、MySQL). 当然,也可以很好的运行于商业环境下(例如:Windows NT、IIS、BEA Weblogic、Oracle DB)。 3. Asbru Asbru 网站内容管理系统是一个全功能易用的、基于数据库的网站内容管理系统(CMS)。内置社区、数据库、电子商务和统计模块。支持多种操作系统以及大多数的数据库系统;支持 .NET、PHP、Java等开发语言。 4. Pulse Pulse 是一个用Java 开发的 Web 应用框架以及一个Portal解决方案,提供易用的可扩展的创建基于浏览器的应用,例如网站、门户 等。提供了一些常用的组件,例如 CMS模块、购物车以及用户管理模块。 5. Magnolia Magnolia 是一个开源基于Java的Web内容管理系统(CMS) ,构建在Java内容知识库标准(JSR-170). Magnolia支持包括英语,中文在内的14种语言,它支持本地搜索,基于XML的导入/导出,跨 浏览器的文本编辑器,一个简易的War文件可部署到任何J2EE容器中.在最新版本中还添加对数字媒体在线编辑功能。 在线演示:http://www.magnolia.info/home/products/demo.html 6. MeshCMS MeshCMS是一个由java写成的在线编辑系统,.并拥有 cms所包含的一系列特点.但它采用的是非常的传统方法来实现的:如页面是以html文档形式存储的,一些附加的特点均是基于文挡的,且还无须数据库. MeshCMS  被认为是一个快速编辑网页,管理文件,创建一些常规组件如:菜单,子菜单形式,邮件表格,像册等的在线工具. 7. Infoglue infoglue是一个高级的、可扩展的、健壮的内容管理系统,完全用Java开发。重要的功能包括完全支持多语言,站点之间良好的重用,以及广泛的集成能力。 8. JadaSite 一个用Java开发的开源易用的内容管理系统和电子商务系统 9. Enonic CMS Enonic CMS是一个完整的软件平台,包括门户网站,介绍通过各种数字频道和内容管理系统专为中型到大型组织定义的网络战略。 10. Apache Lenya Apache Lenya 是java的开源内容管理系统。它基于一些标准的技术比如XML 与 XSLT。它其中的代码核心来自于另外一个开源项目Cocoon

低成本、高效率的Java Web应用快速开发利器–OpenJWeb快速开发平台 1.1 关于OpenJWeb OpenJWeb是一款基于java主流开源技术(SSH2)实现的Web应用快速开发平台产品。如果选择了OpenJWeb作为贵公司的基础产品架构,这意味着您选择了一个低成本、高效率的软件开发模式,换句话说,就是软件开发速度会成倍提高、产品或项目研发成本会大幅度降低。而且OpenJWeb还为您的公司节省了一个平台研发团队的投入。 如果您决定使用OpenJWeb作为Java Web应用的基础架构,您会获得以下利益: (1) OpenJWeb平台的绝大部分源代码。 (2) 不再需要花大量资金投入一个平台研发团队。 (3) 您的开发人员不再需要单独投入大量工作时间研究开源技术,OpenJWeb已经集成了主流的Java 开源技术。 (4) 与商业的平台厂商不同,OpenJWeb为贵公司提供了透明的平台架构,您公司完全可以基于平台做更多的扩展。 (5) 低廉的产品价格和永久免费的在线技术支持(QQ或MSN)。 (6) 定义一个增删改查模块仅需要几分钟时间,并且还可以生成java源代码,支持单表,主明细(Master-Detail)表、树型结构、审批单等多种样式的Web页面。 1.2 OpenJWeb能解决什么问题 (1) 在企业应用开发中,组织结构,权限,功能菜单管理等基础模块,因为没有进行良好的设计,导致在不同的项目中不能重用,还要做大量修改才能在新的项目中使用。 (2) 对于单表,主明细表类的增删改查,由于开发模式相似,但由于没有代码生成器和Web页面生成器,导致程序员即使开发一个相似的功能,也要花大量的时间进行编码和调试。开发效率非常低。开发人员经常因为查找一个BUG花费大量时间调试,调试完才发现不是有的地方在复制代码的过程中漏改了,就是有的地方大小写拼写错误等等。 (3) 在国内,大量的公司,大量的项目开发人员都不可避免地要实现组织结构,权限等每个业务系统都必需的基础功能,如果有一个好的开源的平台,大家就不需要在这些基础模块上投入不必要的开发时间,有这样的平台能大大降低研发资源的重复投入。 (4) 字段校验规则,字段默认值、页面中的查询条件列,都可以在平台中配置,不需要更改页面代码和程序代码。权限管理非常细致,不仅包括菜单,按钮、数据行都可以进行授权。 (5) 新的开发人员加入团队后,稍微加以培训,就会了解应该在什么地方添加业务逻辑,在什么地方增加新的校验类等等,能否在很短的时间内就融入到开发环节中。 (6) 由于开源框架众多,选择什么框架,并将这些框架有机集成起来,然后针对这些框架做出开发平台,没有丰富的Java开发经验是难以完成的。但有了统一的集成好的框架,开发人员不需要再为java产品的选型头疼了。 (7) 平台提供了大量的应用组件,包括邮件收发、内容管理、试题系统、档案管理、工作流引擎和审批流设置、内部论坛、邮件及短信群发,即时通信,搜索引擎等。 (8) 使用openjweb作为产品平台,可以统一开发规范,提高软件复用度,降低开发成本,提高项目利润。同时也会迅速提高Java开发人员的技术水平,大大缩短开发人员成为架构师所需要的时间。 1.2 OpenJWeb的主要技术框架 OpenJWeb 1.8版本的基础框架是struts2.0.6+Spring2.5.6+hibernate3+Spring security2.0,另外还有strut1(部分功能是以前开发的),dwr,fckedit,extjs,图表采用JFreechart,树控件采用dhtmlxTree。另外还集成了JOTM,这个是在tomcat中的JTA,支持跨数据库事务处理。 1.3 OpenJWeb的商业价值浅析 很多软件公司为企业开发应用系统,往往动辄一年甚至更久,如此长的开发实施周期,导致项目还没有实施完,需求已经发生很大变化,所以OpenJWeb从开发模式上采用平台定制+二次开发辅助的模式可大大减少项目的开发工作量,缩短项目的实施周期,甚至后期都可以由用户自己定制业务模块,因而避免了软件公司交付产品后,新的业务需求仍然需要软件公司开发的局面。 应该说,对于越大型的企业应用项目,OpenJWeb节省的成本越显著。这体现在: (1) 一般企业应用都有大量的后台维护模块,而这些模块的开发很多都不可避免地要解决页面JSP文件的开发,分页、排序功能的处理,增删改查功能的实现,数据库建表,以及页面中涉及到代码-名称列表的下拉窗口的检索等等很多开发内容,如果没有一个平台工具提供快速开发支持的话,一个象简单的客户基本信息维护这样的功能至少也得两天的时间才能完成,而使用平台工具开发的话,只需要十几分钟的定制的时间就可以轻松搞定。两天和十几分钟的差异绝对不是一个小数目,对于一个百万元的项目而言,使用平台开发至少可以节省20万以上的项目成本。对于软件公司而言,减少20%的项目成本就意味着项目提高20%的利润率!OpenJweb的快速功能生成器在项目开发中的效率,是传统的软件开发模式是不能匹敌的,只要数据结构设计出来,功能就可以快速生成出来。在做项目需求原型的时候是非常有帮助的。 (2) OpenJWeb平台对开源社区的框架产品进行了很好的整合,同时也经过了若干大型项目的验证,使用OpenJWeb平台的用户因而可以避免重复选型的风险,也节省了重新搭建应用框架的时间。 (3) 基于平台产品进行应用开发和实施是以后软件行业的主要模式,使用平台产品进行开发可以使软件公司完全摆脱手工作坊式的研发时代,对于大型项目的实施也不再需要靠大量招聘开发人员这种非常耗费成本的实施方式。另外,成熟的平台减少了代码出错率,这也在很大程度上减少了修改错误代码的时间。 (4) 成熟的开发平台具有透明和统一的开发模式和框架,因而项目人员的变动不会对产品的体系架构产品影响。因而很大程度上减少了关键人员离职造成项目失败的风险。 (5) 平台产品已经实现了增删改查生成,组织结构权限,数据权限控制,字段校验器,业务逻辑生成器,默认值设置,代码表管理、工作流引擎、即时通信、邮件收发、等很多功能,不需要用户再进行同类功能的重复开发。 (6) 此平台不仅对软件公司,最终用户有很大的价值,同时对于Java开发人 员来说也是一个很好的学习平台,具有很大的学习价值和培训价值。OpenJWeb平台由于有机集成了开源领域的众多产品,为Java人员提供了Java开源技术“一站式”学习通道,能在很短的时间内掌握这些开源技术的使用方式。通过OpenJWeb的学习和使用可以使Java人员在很短的时内提高自己的技术水平,从而使自己在竞争激烈的职场中脱颖而出。基于以上这些价值,OpenJweb快速开发平台也是培训机构很好的实战教材。 1.4 OpenJWeb的主要用户群体 (1) 对于还没有或者刚选择Java平台的软件公司,本平台已经具有了很多开发好的功能,不需要重复开发。 (2) 对以于项目实施为主的软件公司(按项目定制开发),使用此平台开发项目可以大大减少开发工作量。 (3) 咨询人员:咨询人员使用此平台可以在很短的时间定制一个原型应用,因而使得在打单或需求调研过程中迅速给客户展示一个应用系统模型。 (4) 企业用户。使用此平台使得在软件公司的服务到期后,仍可以使用平台来定制自己的新的业务应用,用户新增加一个功能可不再依赖于软件公司,从而真正做到随需应变。 (5) 培训机构。OpenJWeb平台是一个不可多得的基于开源框架的快速Web应用开发平台,一般IT培训机构是很难获取到这种具有实战价值的代码,针对OpenJWeb平台进行Java培训一定可以使学员在相对短暂的培训期间体验到真正的企业级应用开发。 (6)个体创业者或者中小软件公司。对于中小软件公司是没有资金去聘请一个专职的高级架构师,引入一个优秀的开源平台进行软件开发是他们最好的选择。 1.5 OpenJWeb1.8版本的主要功能特点 本章节只介绍功能特点,具体的功能画面和操作方法见《操作手册》。 1.5.1 多语言支持 可在登录后的系统首页通过点语种连接来切换不同的语种(不过目前有许多页面没做文字翻译,只翻译了个别单词可以看到语种切换的效果)。 表单列表页面和编辑页面的标签支持多语,只需要在表字段定义中定义各语种文字,从平台编译代码后,能自动生成对应的多语资源文件。 1.5.2 Portlet风格的首页 带Portlet风格的后台首页,可实现Portlet窗口的拖拉,目前设置了我的待办任务,我的已办任务等Portlet(目前尚未设计OA及工作流系统,所以Porlet中的信息目前是演示数据)。 1.5.3 在线编译功能 通过平台生成功能代码后,不需要在IDE开发环境中执行代码编译,可直接在页面中点“编译代码”,编译完成后新代码生效。 1.5.4 提供了定时器开发接口 平台已提供了定时器的具体开发和配置的例子,用户只需要在指定的定时期类中增加自己的新的定时器方法,并在Spring配置文件中稍作配置即可。 1.5.5 提供了邮件发送API调用接口 平台已提供带HTML格式的多附件发送调用API,利用这个API可很方便地实现邮件群发。 1.5.6 集成了FckEdit在线编辑器 本平台提供了基于FckEdit的可视化的在线编辑器。 1.5.7 提供了业务逻辑组件接口和实现类的生成功能 当建表时,如果选择生成业务逻辑组件,则自动生成业务逻辑接口和实现类。并自动在Spring配置文件中进行配置 1.5.8 支持基于JTA的跨数据库事务 可实现跨数据库的事务控制,当指定异常抛出时,可在两个数据库中同时回滚。 1.5.9 表结构管理 定义了表和表字段后,可生成数据库表、Hibernate映射文件和Java实体类。表字段定义中可定义字段的类型,长度,是否非空,各语种标签文字,使用哪些字段校验器,默认值生成规则设置,表字段在列表页面和编辑页面是否显示,显示顺序,表字段的输入方式(输入框,日期选择,弹出窗口,下拉列表等多种输入形式)、表字段是否为查询条件字段等。 另外表字段维护中还增加了生成表字段功能,用于在表已经建立后,如果增加新的字段,就不再需要从开发环境中开发实体类,hibernate映射文件进行修改,也不需要打开数据库管理工具增加新的字段,只需要在页面上执行操作就可以完成以上内容。 1.5.10 代码表管理 也称数据字典管理,主要用于页面上下拉列表的下拉选项的定义。例如职称可定义001工程师,002高级工程师;用户既可定义代码表位于专用的数据字典表,也可以指定任意表的两个字段作为代码字段和名称字段。如果同一类型的代码不是很多(少于50条),可以用代码表管理,代码表的明细项如果太多,推荐专门建表维护,这时别的字段如参照使用本代码表,应该使用弹出窗口进行选择。 1.5.11 功能定义 可针对一个数据库表创建单表增删改查页面。也可创建主明细表增删改查页面(可带多个tab)。建主明细表时需要维护主表和明细表对照关系。在本页面配置好功能相关属性后,点“生成代码”,可生成struts2的action配置文件,action控制层类,列表页面,编辑页面,弹出窗口选择页面(每个功能都有可能作为别的页面字段的参照输入)。如果此页面中设置了要创建的表单类型(单表/主表/明细表),则可分别针对不同的表单类型创建对应风格的页面。 1.5.12 数据权限定义 可指定一个表设置针对不同用户的不同的数据权限,包括查询权限,修改和删除权限。 1.5.13 字段校验器 平台可从字段校验器表中读取字段校验器类进行保存前的数据校验。如果用户开发了新的校验器(需要实现校验器接口),可录入到数据库中,然后在表字段定义中选择性地绑定需要的校验器。用户还可以自己设置正则表达式校验器。 1.5.14 查询 平台生成的页面中有显示在列表页面查询列,如果想增加或减少查询列,只需要修改表字段定义中的是否查询字段,将是否查询条件设置为“否”,然后重新生成此功能的代码即可。另外组合查询中可定义定义组合查询条件。本平台的查询条件字段的输入方式是根据配置动态变化的,例如日期输入型字段,则查询条件自动显示日期选择器,如果是弹出窗口,自动显示弹出按钮,如果是下拉列表,查询条件列自动检索出列表项。 …

Xms Xmx XX:PermSize XX:MaxPermSize 1. 各个参数的含义什么? 我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。 堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。 堆内存分配 JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70% 时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。 非堆内存分配 JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。 JVM内存限制(最大值) 首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。 2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后tomcat可以启动,而有些机器无法启动? 通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因: 1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize; 2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。

[java] 1.in BaseShopAction.java protected Pager pager; 2.in ProductAction.java action if (pager == null) { pager = new Pager(); pager.setPageSize(Product.DEFAULT_PRODUCT_LIST_PAGE_SIZE); } pager.setProperty(null); pager.setKeyword(null); if (StringUtils.equalsIgnoreCase(orderType, "priceAsc")) { pager.setOrderBy("price"); pager.setOrderType(OrderType.asc); } else if (StringUtils.equalsIgnoreCase(orderType, "priceDesc")) { pager.setOrderBy("price"); pager.setOrderType(OrderType.desc); } else if (StringUtils.equalsIgnoreCase(orderType, "dateAsc")) { pager.setOrderBy("createDate"); pager.setOrderType(OrderType.asc); } else { pager.setOrderBy(null); pager.setOrderType(null); } pager = productService.getProductPager(productCategory, pager); 3.in ProductDaoImpl.java public Pager getProductPager(ProductCategory productCategory, Pager pager) { DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Product.class); detachedCriteria.createAlias("productCategory", "productCategory"); detachedCriteria.add(Restrictions.or(Restrictions.eq("productCategory", productCategory), Restrictions.like("productCategory.path", productCategory.getPath() + "%"))); detachedCriteria.add(Restrictions.eq("isMarketable", true)); return super.findByPager(pager, detachedCriteria); } 4. in BaseDaoImpl.java public Pager findByPager(Pager pager, DetachedCriteria detachedCriteria) { if (pager == null) { pager = new Pager(); } Integer pageNumber = pager.getPageNumber(); Integer pageSize = pager.getPageSize(); String property = pager.getProperty(); String keyword = pager.getKeyword(); String orderBy = …

final变量的初始化位置 一是其定义处,也就是说在final变量定义时直接给其赋值, 二是在构造函数中。而且在Java1.1以前,只能是在定义时给值。 三是在初如化代码块中{} 或者 static{}

最近有些读者给我来信说很喜欢这个网站上的文章,并且也想通过翻译学习英文,他们询问我这些文章的英文原文是从哪里找到的? 外刊IT评论上的翻译的英文来源很杂,我总结了一下,大概有几个集中的出处,下面列举出来供大家学习参考: 1.TheServerSide 这是一个老牌的IT信息网站,从名称上你就能看出,它是关注服务器端编程的,以Java和Java周边信息为主,不过最近它也有向客户端和微软产品 扩展的趋势。这个网站最初是以免费发放《Mastering Enterprise JavaBeans》这本电子书出名的,现在这本书已经更新到了ELB 3.0版,你现在仍然可以从网站上免费下载这本书。这个网站的内容包括IT新闻咨询,专家评论,专家访谈视频,会议视频等。 2.infoq infoq上一个重点就是敏捷开发,内容很丰富,而且这个网站还提供中文版,但可能是翻译耗时的原因,中文内容总是比英文内容滞后几天。 3.Digg 的科技频道 Digg最初只是几个技术人员办的专门提供科技信息的网站,由于粉丝的不断增多,流量越来越大,网站的内容也扩展到非科技的各个方面,可糟糕的是, 这导致了IT科技信息内容的质量不断下降,引起了很多元老级粉丝的不满,特别是去年这个网站的一次改版行动彻底的伤痛了粉丝的心,导致大批忠实粉丝撤离。 网站的整个访问量几乎跌了一半。这是我眼睁睁的看到的一次由于改版而导致的灾难性事故的活生生的例子。 4.reddit 的编程和科技频道 reddit和Digg非常的相似,但界面看起来粗糙一些。最近这个网站的访问量大增,原因就是从Digg撤离的人都跑到这里来了。 5.Hacker News Hacker News 是我最喜欢的一个网站,虽然它的界面在上面提到的这些网站中是最简陋的。Hacker News属于ycombinator.com旗下网站,ycombinator是一个给科技创业公司提供创业资金的公司,很多著名的IT公司都是从这里出 来。Hacker News上的很多文章都是关于如何创业的。 如果你的英语阅读能力还可以,而且是搞编程的,我强烈推荐你经常到这些网站看看,一定会让你耳目一新。我不是崇洋媚外,但我坚决的认为国内的这些IT网站都烂的很,跟国内的软件业是同一个水平。蜀中无大将,那还是先看看别人的吧。

最近,我给Java项目做了一次代码清理工作。经过清理后,我发现一组常见的违规代码(指不规范的代码并不表示代码错误)重复出现在代码中。因此,我把常见的这些违规编码总结成一份列表,分享给大家以帮助Java爱好者提高代码的质量和可维护性。 这份列表没有依据任何规则或顺序,所有的这些都是通过代码质量工具包括CheckStyle,FindBugs和PMD检查出。一起来看下: 一、Eclipse编译器提供源代码格式输入 Eclipse提供自动源码格式选项,并且组织输入(删除未使用的代码)。你可以使用下面的这些快捷键进行操作。 Ctrl + Shift + F——源代码格式 Ctrl + Shift + O——组织输入并删除未使用的代码 代替手动调用这两个函数,只需根据Eclipse自动格式和自动组织选项,可以随时保存文件。 操作步骤,在Eclipse中进入Window -> Preferences -> Java -> Editor -> Save Actions,然后以选定的方式保存,最后检查Format source code + Organize imports。 二、避免多个返回(退出点) 依照你的方法,确保只有一个退出点。不要在同一个地方或多个地方使用返回。比如,下面的代码,NOT RECOMMENDED(不建议),这是因为有多个退出点(返回语句)。 private boolean isEligible(int age){   if(age > 18){     return true;   }else{     return false;   } } 下面的代码有所提升,这是更高版本的。 private boolean isEligible(int age){   boolean result;   if(age > 18){     result = true;   }else{     result = false;   }   return result; } 三、简化if-else 我写了几个实用的方法作为参考,检查语句条件并且基于该条件返回值。比如,考虑到isEligible方法,正如你之前所看到的: private boolean isEligible(int age){   boolean result;   if(age > 18){     result = true;   }else{     result = false;   }   return result; } 整个方法以一个单一的return语句重新编写: private boolean isEligible(int age){ return age > 18; } 四、不要给Boolean, Integer或者String创建新的实例 避免给Boolean,Integer,String创建新的实例。比如,使用new Boolean(true),Boolean,valueOf(true)。修改后的语句与之前的效果基本相同,除了在性能上有所提升。 五、使用大括号模块语句 永远别忘了使用大括号模块语句比如if、for、while。这样做的好处是当你在修改模块级语句时减少了模糊代码并且避免引进bug的机会。 不建议: if(age > 18)   result = true; else   result = false; 建议: if(age > 18){   result = true; }else{   result = false; } 六、以final类型标记方法参数,任何时候都适用 请记住,以final类型标记方法参数,任何时候都适用。这样做的好处在于当你不小心修改参数值时,编译器会给你警告,同时它还能以更好的方式优化编译器代码字节。 建议: private boolean isEligible(final int age){ … } 七、在UPPERCASE中命名public static final字段 在UPPERCASE中命名public static final字段(通常也被称之为常量)。这个可以让你轻松区分常量字段和局部变量之间的不同。 不建议: public static final String testAccountNo = “12345678″; 建议: public static final String TEST_ACCOUNT_NO = “12345678″;, 八、组合成单一的if语句 在尽可能多的情况下,把多个if语句组合成单一的if语句,比如下面的代码: if(age > 18){   if( voted == false){     // eligible to vote.   } } 合并成单一的if语句: if(age > 18 && !voted){   // eligible to vote } 九、Switch应该有default 始终给Switch语句添加default。 十、使用常量来避免重复定义相同的字符串值 如果你在多个地方必须使用字符串,那么使用常量来避免重复定义拥有相同值的字符串。 比如,看下面的代码: private void someMethod(){   logger.log(“My Application” + e);   ….   ….   logger.log(“My Application” + f); } string literal“我的应用”可以作为常量并且能在代码中使用。 …