- 浏览: 127408 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (145)
- java (145)
- Java网络编程 (1)
- SWT 文本框Text通过GC重绘改变边框颜色 (1)
- tomcat部署web工程的两种方法 (1)
- JAX-RS 从傻逼到牛叉 1:REST 基础知识 (1)
- FreyjaJdbcTemplate 大致上完工了,想请人重构。。 (1)
- 开始认识自己 (1)
- 设计模式-Abstract Factory 模式 (1)
- 数据库中主键的设计原则 (1)
- JNI中jstring类型与c语言中的字符串的转换 (1)
- mac环境变量 (1)
- STC单片机ADC转换的例子 (1)
- myeclipse 8下安装Ibator . (1)
- OSGI与Android结合 (1)
- CSDN BLOG EXPERT (1)
- Java中网络操作的开源库CommonsNet (1)
- Apache License Version 2.0 英文内容及中文翻译 (1)
- JTest (1)
- GeoCon 用C#编写的开源的地理信息数据转换工具 (1)
- ERP简易教程 (1)
- 提高站点在搜索引擎上的排名 (1)
- Wifi (1)
- 腾讯Q+开放平台,相信又是一次成功的模仿 (1)
- C#坦克大战网络版代码 (1)
- Problem16 (1)
- Ajax 应该变成 Ajaj (关于JSON 与 XML 的比较) (1)
- ava框架数据库连接池比较(c3p0 (1)
- dbcp和proxool)bonecp (1)
- 继续向成熟男人靠拢 (1)
- Qt4.7中 默认的构造函数 (1)
- xml CDATA (1)
- 只针对中英文混合分词的中文分词器 (1)
- 典型相关分析及其适用范围和spss操作(转) (1)
- llvm (1)
- java连接数据库Oracle|DB2|Sql Server|Sybase|Informix|MySQL||PostgreSQL|access (1)
最新评论
-
xm3530:
什么鬼?都没法看,发出来干嘛
Android中利用App实现消息推送机制的代码实例 -
lvtenglongxiaohei:
太经典了!
学习一下!
ERP简易教程 -
lvtenglongxiaohei:
<br> 一天中午,丈 ...
ERP简易教程 -
hzw2312:
加油~~~!!!
开始认识自己 -
123048591:
显示乱码
tomcat部署web工程的两种方法
(1)bigdecimal中要使用string作为参数来构造(bigdecimal.valueof()会把各种值转化成字符串,再调用 bigdecimal(string)的),否则照样会出问题;
10049.999999999998
10049.99999999999893418589635984972119331359863281250000
10050.000
10050.000
(2)长整型要使用大写字母l而不是小写字母l来标识,因为小写字母l看起来有点像数字1;
例如:
(3)如果一个类中有多处使用长数字,则可以定义并使用数字常量,到处写长的数字,容易出现多一个0或少一0等写错位数的问题,同时导致问题难以排查。
例如:
再如timeunit中的代码:
(4)在使用map时,要注意integer与long的自动装箱,要与string类型的key区分开来:
例如:
输出:
null
1value
因为i+1计算后自动装箱成integer(2),而hm.get(new integer(2)) 与hm.get(new string(2))是完全不一样的。
(5)有同学写代码,把数字转型为字串时喜欢用类似 i+"" 这种方式,个人认为这样的代码比较难看,可以写成 string.valueof(i),它是不是好看一些。
(6)对于复杂的判断条件,最好不要经常使用“非”等排除条件式子,这样不便于理解组合条件的含义:
例如:
如果 成功方案赢利≥1000元 或 成功方案赢利≥500元且回报率≥10倍 则返回战绩,否则 返回0;
不便于直接思维的、排除式的写法:
这个是正确的写法,但是因为整合条件都要反过来写,类似:a&&b 变成 !a||!b,很难理解,也极容易把(!a || !b)写成 (!a && !b)。
便于理解的、直观式的写法:
(7)经常看见list!=null && list.size()>0 这样的代码,大概担心用到的list为null而导致空指针异常,其实list!=null一般是没有必要,这样的代码比较难看一点。
《effective java》建议:对返回值为collection或map的子类的,尽量返回一个元素为空的collection或map,而不是返回null。
事实上,很多开源的框架中就是这么做的,看下面应用hibernate的一段代码:
可以改为:
事实上,q.list()永远不会返回null,所以没有必要判断list是否为null,这样代码更加简洁、好看。
(8)bigdecimal是一个只读类,它的对象一旦构建好了,就无法修改该该对象的属性。如:
public bigdecimal setscale(int newscale, int roundingmode)
public bigdecimal add(bigdecimal augend)
等方法都是返回一个新的bigdecimal对象,而对原来的bigdecimal不会起热任何修改作用的。jdk中类似的只读类还有:所有的基本数据类型,所有的数据封装类,biginteger,string等。
system.out.println(10000*1.005); system.out.println(new bigdecimal(10000).multiply(new bigdecimal(1.005))); system.out.println(bigdecimal.valueof(10000).multiply(bigdecimal.valueof(1.005))); system.out.println(new bigdecimal("10000").multiply(new bigdecimal("1.005")));输出:
10049.999999999998
10049.99999999999893418589635984972119331359863281250000
10050.000
10050.000
(2)长整型要使用大写字母l而不是小写字母l来标识,因为小写字母l看起来有点像数字1;
例如:
long i = 200l;//看起来是不是像2001呢; long i = 200l;//这样,就算有近视,也能辨认清楚了。
(3)如果一个类中有多处使用长数字,则可以定义并使用数字常量,到处写长的数字,容易出现多一个0或少一0等写错位数的问题,同时导致问题难以排查。
例如:
if(i > 10000000 && i<100000000) {...}if(j >= 10000000 && j<=100000000) {...}可改成:
final int begin = 10000000;//或 final int begin = 10*1000*1000;final int end = 100000000;//或 final int end = 100*1000*1000if (i > begin && i< end){...}if (j >= begin && j<= end){...}
再如timeunit中的代码:
// handy constants for conversion methods static final long c0 = 1l; static final long c1 = c0 * 1000l; static final long c2 = c1 * 1000l; static final long c3 = c2 * 1000l; static final long c4 = c3 * 60l; static final long c5 = c4 * 60l; static final long c6 = c5 * 24l;
(4)在使用map时,要注意integer与long的自动装箱,要与string类型的key区分开来:
例如:
map<string,string> hm = new hashmap<string,string>(); hm.put("1", "1value"); hm.put("2", "1value"); hm.put("3", "1value"); hm.put("4", "1value"); int i = 1; system.out.println(hm.get(i+1));//错误的做法,值为null system.out.println(hm.get(string.valueof(i+1)));//正确的做法
输出:
null
1value
因为i+1计算后自动装箱成integer(2),而hm.get(new integer(2)) 与hm.get(new string(2))是完全不一样的。
(5)有同学写代码,把数字转型为字串时喜欢用类似 i+"" 这种方式,个人认为这样的代码比较难看,可以写成 string.valueof(i),它是不是好看一些。
(6)对于复杂的判断条件,最好不要经常使用“非”等排除条件式子,这样不便于理解组合条件的含义:
例如:
如果 成功方案赢利≥1000元 或 成功方案赢利≥500元且回报率≥10倍 则返回战绩,否则 返回0;
不便于直接思维的、排除式的写法:
if (profit.compareto(minprofit) < 0 && (profit.compareto(minrateprofit) < 0 || rate.compareto(minrate) < 0)) { return 0; } else {return 战绩值;}
这个是正确的写法,但是因为整合条件都要反过来写,类似:a&&b 变成 !a||!b,很难理解,也极容易把(!a || !b)写成 (!a && !b)。
便于理解的、直观式的写法:
if (profit.compareto(minprofit) >= 0 && (profit.compareto(minrateprofit) >= 0 && rate.compareto(minrate) >= 0)) { return 战绩值;}else { return 0; }
(7)经常看见list!=null && list.size()>0 这样的代码,大概担心用到的list为null而导致空指针异常,其实list!=null一般是没有必要,这样的代码比较难看一点。
《effective java》建议:对返回值为collection或map的子类的,尽量返回一个元素为空的collection或map,而不是返回null。
事实上,很多开源的框架中就是这么做的,看下面应用hibernate的一段代码:
query q = *dao.createquery(hql); list<?> list = q.list(); if (list != null && list.size() > 0) { return (dcrace) list.get(0); }
可以改为:
query q = *dao.createquery(hql); list<?> list = q.list(); if (list.size() > 0) {//删除 list != null && return (dcrace) list.get(0); }
事实上,q.list()永远不会返回null,所以没有必要判断list是否为null,这样代码更加简洁、好看。
(8)bigdecimal是一个只读类,它的对象一旦构建好了,就无法修改该该对象的属性。如:
public bigdecimal setscale(int newscale, int roundingmode)
public bigdecimal add(bigdecimal augend)
等方法都是返回一个新的bigdecimal对象,而对原来的bigdecimal不会起热任何修改作用的。jdk中类似的只读类还有:所有的基本数据类型,所有的数据封装类,biginteger,string等。
评论
4 楼
Arvin_qx
2011-08-12
楼主 您说要区分大小写 您自己咋没注意点呢
如下:
(2)长整型要使用大写字母l而不是小写字母l来标识,因为小写字母l看起来有点像数字1;
例如:
Java代码
1.long i = 200l;//看起来是不是像2001呢; long i = 200l;//这样,就算有近视,也能辨认清楚了。
您的总结学习了。
如下:
(2)长整型要使用大写字母l而不是小写字母l来标识,因为小写字母l看起来有点像数字1;
例如:
Java代码
1.long i = 200l;//看起来是不是像2001呢; long i = 200l;//这样,就算有近视,也能辨认清楚了。
您的总结学习了。
3 楼
liuwenbo200285
2011-08-12
关于第七条,如果某人自己写的函数愣是给你返回个null就惨了。呵呵还是喜欢加上list!=null.
严重同意!!!
严重同意!!!
2 楼
xuedong
2011-08-12
不错,转载了
1 楼
仅此而已
2011-08-12
关于第七条,如果某人自己写的函数愣是给你返回个null就惨了。呵呵还是喜欢加上list!=null.
另外 !list.isEmpty();不是比 list.size()>0;更好一些吗? 个人见解! 多多向楼主学习!!!
另外 !list.isEmpty();不是比 list.size()>0;更好一些吗? 个人见解! 多多向楼主学习!!!
发表评论
-
java连接数据库Oracle|DB2|Sql Server|Sybase|Informix|MySQL||PostgreSQL|access
2012-02-08 14:17 1058<div>Java数据库连接(JDBC)由 ... -
llvm
2012-02-07 16:29 880llvm ... -
典型相关分析及其适用范围和spss操作(转)
2012-02-07 15:43 1583看文章《科学学研 ... -
只针对中英文混合分词的中文分词器
2012-02-03 10:39 1013该版本说明 1、只针对中英文混合分词 需要一些中文和 ... -
xml CDATA
2012-02-03 08:45 1210<h2 style="font-si ... -
Qt4.7中 默认的构造函数
2012-02-01 09:14 1088<p><span style=&qu ... -
继续向成熟男人靠拢
2012-01-11 17:04 879转自徒儿的人人。 ... -
ava框架数据库连接池比较(c3p0,dbcp和proxool)bonecp
2012-01-11 14:13 1135<h1 style="text ... -
Ajax 应该变成 Ajaj (关于JSON 与 XML 的比较)
2011-12-28 15:23 963<span style="font- ... -
Problem16
2011-12-28 12:53 668package com.shui.mu.yao.io. ... -
C#坦克大战网络版代码
2011-12-20 13:09 983简单C#坦克大战网络版代码 写完单机版 http ... -
腾讯Q+开放平台,相信又是一次成功的模仿
2011-12-20 10:44 861今天看到两则新 ... -
Wifi
2011-12-19 13:14 1086. Confirm if Wifi is On ... -
提高站点在搜索引擎上的排名
2011-12-19 12:04 937对于拥有网站的各位站长来说,都希望自己的站点能够在各种 ... -
ERP简易教程
2011-12-16 16:47 921注明:下面的帖子 ... -
GeoCon 用C#编写的开源的地理信息数据转换工具
2011-12-14 12:29 956<p class="MsoNorma ... -
JTest
2011-12-14 09:00 1029接到parasoft公司一位先生打来的电话,说下个月第 ... -
Apache License Version 2.0 英文内容及中文翻译
2011-12-13 12:59 2337</span> <p class= ... -
Java中网络操作的开源库CommonsNet
2011-12-13 12:39 816<p class="MsoNorma ... -
CSDN BLOG EXPERT
2011-12-13 08:59 1094<img src="http://p. ...
相关推荐
在使用字符串池时,需要注意以下几点: * 字符串池中的数据会被垃圾收集,如果这些值在应用中没有任何引用。 * 字符串池的大小需要根据应用程序的需求来设置。 * 在 Java 6 中,字符串池的位置在 PermGen 中,需要...
在Java中实现这些算法时,我们需要考虑以下几个关键点: 1. **数据结构**:为了表示图,我们通常使用邻接矩阵或邻接表。邻接矩阵使用二维数组,每个元素表示两个节点间是否存在边及其权重;邻接表则更节省空间,它...
这份压缩包文件"Java工程师不得不看的几千份代码"显然是一份丰富的资源集合,旨在帮助Java开发者拓宽视野,掌握更多实践技巧,提升编程能力。下面我们将深入探讨其中可能涵盖的关键知识点。 1. **基础语法与最佳...
在《如何编写整洁代码》这一资料中,作者很可能会探讨编写整洁代码的方法论、实践技巧以及最佳实践。 ### 知识点二:代码注释的规范性 从提供的部分内容中可以看出,文档中包含了Java语言的示例代码。其中有一段...
在深入学习JavaME源程序代码时,可以关注以下几个关键概念: 1. **KVM(Java虚拟机)**:JavaME有自己的轻量级虚拟机,称为KVM,用于解释和执行Java字节码。 2. **CLDC(连接受限设备配置)**:这是JavaME的一部分...
本项目的核心知识点主要包括以下几个方面: 1. **Java编程基础**:整个项目基于Java语言编写,因此需要掌握Java的基本语法、类和对象的概念,以及面向对象的编程思想。此外,还需了解异常处理、输入输出流等基础...
在源代码中,我们可以看到以下几个关键知识点: 1. **MVC设计模式**:这是一种经典的软件设计模式,将业务逻辑、用户界面和数据存储分离开来,使得代码更易于维护和扩展。在这个选课系统中,每个部分都有明确的职责...
在Java中,实现万年历涉及以下几个核心知识点: 1. **Java日期时间API**:Java提供了一系列类来处理日期和时间,如`java.util.Date`,`java.util.Calendar`,以及自Java 8引入的`java.time`包中的`LocalDate`,`...
以上几点是Java代码优化建议中的一部分,贯穿于整个代码编写和维护过程。将这些优化技巧应用到日常编程实践中,不仅能够提高代码的性能,也能够在一定程度上预防代码在运行中出现的问题,从而提高代码的健壮性和可...
在Java中实现2048,主要涉及以下几个核心知识点: 1. **图形用户界面(GUI)**:Java中的Swing或JavaFX库提供了构建GUI所需的所有组件。在这个2048游戏中,我们需要创建一个4x4的按钮面板来表示棋盘,每个按钮上...
在Java中实现爱心树,主要涉及到以下几个关键知识点: 1. **字符串处理**:在Java中,爱心通常用特定的字符如"❤️"或者"*"来表示。源码可能会通过构建字符串数组或列表来存储这些字符,然后通过组合不同的字符串来...
小叮当代码(JAVA).rar 是一个包含Java源代码的压缩包,它涉及到了编程领域中的几个关键知识点,特别是关于Java语言和机器人程序开发。在这个项目中,开发者可能运用了面向对象编程、事件驱动机制以及可能的AI或...
这个压缩包包含了几十个用Java编写的源代码,是学习Java游戏编程的理想资源。这些小游戏不仅展示了基础的编程概念,还涵盖了Java语言的核心特性以及游戏开发的常用技术。 首先,让我们来看看Java语言在游戏开发中的...
《Effective Java》是Java开发领域的一本经典著作,由Joshua Bloch撰写,书中提出了一系列编程最佳实践和设计模式,帮助开发者写出更高效、更可靠、更易于维护的Java代码。配套代码`effective-java-examples-master`...
对于开发者来说,这样的工具提供了高效便捷的方式来探索和理解未知的Java代码。 4. **反编译的用途**:除了学习和研究外,反编译还有其他用途。例如,在调试和维护旧代码时,如果原始源代码丢失,反编译可能成为...
在Java中,开发俄罗斯方块主要涉及以下几个核心知识点: 1. **图形用户界面(GUI)**:Java提供了Swing和JavaFX两个库用于创建GUI。在这个项目中,开发者可能使用了Swing库来创建游戏窗口、绘制方块和网格。 Swing...
在Java连连看源代码中,我们可以看到以下几个重要的知识点: 1. **面向对象编程**:Java是一种面向对象的语言,连连看源码会展示如何定义类(如游戏、棋盘、图标等),以及如何通过继承、封装和多态来构建复杂的...
在Java编程语言中,开发一款绘图软件是一项挑战性但有趣的任务。这个项目涉及许多核心的Java...这个名为"Painter"的项目很可能包含以上所有这些元素,通过源代码我们可以深入学习Java图形编程的各种技巧和最佳实践。
通过分析这个资源,我们可以预期学习到以下几个关键知识点: 1. Java基本语法:了解如何在Java中声明变量、定义函数以及控制流程。 2. GUI编程:可能使用了Java的Swing或JavaFX库来创建用户界面,学习如何添加组件...
在Java实验中,你可能会学到以下知识点: 1. **面向对象编程**:记事本和计算器都是由多个类组成的,每个类都有特定的功能。例如,一个类可能负责UI,另一个类负责文件操作。 2. **GUI编程**:使用Swing或JavaFX库...