java 编程技巧
1. 参数可空:
@注解表示修改的字段可为空值。看它的定义,可以修饰在方法,参数和字段(类似c#中的?)上。
@Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Nonnull(when = When.MAYBE)
@TypeQualifierNickname
public @interface Nullable {
}
对应的还有@NotNull注释,表示不能为空
2.可变长参数
如:print(String... args ){} , 调用时可以是print("1"),pring("1","2"),print("1","2","3")
类似C#中的params.
3. 取出对象list中的一列值:
如List<String> roleNames = roles.stream().map(Role::getRoleName).collect(Collectors.toList());
4. list集合初始化:
如:List<String> alpha = Arrays.asList(
"a"
,
"b"
,
"c"
,
"d"
);
5. 使用lombok的val做本地变量的类型推导
如:val example = new ArrayList<String>();
在lombok2.0中将使用var, 与c#的var类似。
6.使用lombok的builder做对象初始化。
@Builder(toBuilder = true)
@Getter
public class UserInfo {
private String name;
private String email;
private Money price; }
UserInfo userInfo = UserInfo.builder()
.name("zzl")
.email("bgood@sina.com")
.build();
关于Lombok的使用技巧还有很多,如自动添加getter,setter. constructor, tostring方法,日志记录,builder等,
具体请参考:https://projectlombok.org/features/all
7.把字符串常量放在前面
通过把字符串常量放在比较函数equals()比较项的左侧来防止偶然的 NullPointerException 从来都不是一个坏主意,就像这样:
8. 检查null和长度
不管什么时候你有一个集合、数组或者其他的,确保它存在并且不为空。
9. return 一个空的集合,而不是 null
10. 小心使用 String
因为字符串相加或者拼接的方式都会在对象池中查找字符串是否存在,如果不存在则创建,这样在拼接的过程中会产生大量中间过程的字符串,占用内存资源。StringBuilder效率优于StringBuffer,但是StringBuffer线程安全。
另外,在实例化一个字符串对象,构造函数应该避免发生直接实例化,例如:
11.单引号和双引号之间的区别
尝试运行上面的程序。这个程序演示了一个死锁。这种死锁的产生是因为两个线程都在等待其他线程所抓取的资源。他们都不在任何一个版本。从代码,似乎还“HaHa”是回来了,但它实际上返回ha169。原因是,如果使用双引号,字符串对待,但在单引号的情况下,字符自动转换为int型,进行计算。
12. 尽量避免随意使用静态变量
要知道,当某个对象被定义为static变量所引用,那么GC通常是不会回收这个对象所占有的内存,如:
此时静态变量b的生命周期与A类同步,如果A类不会卸载,那么b对象会常驻内存,直到程序终止
13.尽量避免在循环中的创建对象
尽量避免在经常调用的方法,循环中new对象,由于系统不仅要花费时间来创建对象,而且还要花时间对这些对象进行垃圾回收和处理,在我们可以控制的范围内,最大限度的重用对象,最好能用基本的数据类型或数组来替代对象。
14. for-each循环优先于传统的for循环
for-each和for循环的做法都比while循环更好。但是由于for循环中需要创建一个临时变量,所以出错的可能性会稍大,宗旨是越简单越好,出错的可能性也低。
java 编程技巧的更多相关文章
- 偏执却管用的10条Java编程技巧
本文由 ImportNew - LynnShaw 翻译自 javacodegeeks.欢迎加入翻译小组.转载请见文末要求. 经过一段时间的编码(咦,我已经经历了将近20年的编程生涯,快乐的日子总是过得 ...
- Java编程技巧:if-else优化实践总结归纳
文/朱季谦 说实话,其实我很讨厌在代码里大量使用if-else,一是因为该类代码属于面向过程的,二嘛,则是会显得代码过于冗余.这篇笔记,主要记录一些自己在工作实践当中针对if-else的优化心得,将会 ...
- 30 个java编程技巧
1.return 一个空的集合,而不是 null 如果一个程序返回一个没有任何值的集合,请确保一个空集合返回,而不是空元素.这样你就不用去写一大堆 ”if else” 判断null元素. Java 的 ...
- 30 个java编程技巧(最佳实践的初学者)
1.return 一个空的集合,而不是 null 如果一个程序返回一个没有任何值的集合,请确保一个空集合返回,而不是空元素.这样你就不用去写一大堆 ”if else” 判断null元素. Java 的 ...
- Java基础学习总结(59)——30 个java编程技巧
1.return 一个空的集合,而不是 null 如果一个程序返回一个没有任何值的集合,请确保一个空集合返回,而不是空元素.这样你就不用去写一大堆 "if else" 判断null ...
- Java 编程技巧之数据结构
前言: 介绍几种常见的java数据结构及应用. 使用HashSet判断主键是否存在 HashSet 实现 Set 接口,由哈希表(实际上是 HashMap )实现,但不保证 set 的迭代顺序,并允 ...
- java编程技巧
欢迎提出建议指出错误互相交流. 1.统计对象数量,比如统计一共发射了多少颗子弹. public class Bullet { public static int count = 0; public B ...
- java编程技巧和心得
1.在一个类中修改或调用另一个类的变量: 只需要将该变量用public static 这个修饰符修饰,再用类名直接调用即可 2.实现对只有下标不同变量的操作 解决思路:可以将这些变量放在一个数组里,在 ...
- 【译】快速高效学习Java编程在线资源Top 20
想要加强你的编程能力吗?想要提升你的 Java 编程技巧和效率吗? 不用担心.本文将会提供快速高效学习 Java 编程的 50 多个网站资源: 开始探索吧: 1.MKyong:许多开发者在这里可以找到 ...
随机推荐
- HandlerSocket
HandlerSocket http://www.uml.org.cn/sjjm/201211093.asp 目录: HandlerSocket的原理 HandlerSocket的优势和缺陷阐述 Ha ...
- gradle多工程依赖
多工程依赖:http://blog.csdn.net/w8452960/article/details/53415415 https://www.cnblogs.com/softidea/p/4525 ...
- 循环结构 for
for格式:for(初始化表达式;循环条件表达式;循环后的操作表达式) { 执行语句:循环体 } ------------------------------------ -------------- ...
- openstack 部署笔记--基本环境准备
基础信息 配置:centos7.3 8G内存 4核处理器 单网卡 控制节点IP:192.168.15.243 计算节点IP:192.168.15.238 openstack 版本:ocata 配置信 ...
- [LeetCode] 605. Can Place Flowers_Easy
Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, ...
- Matlab中图像处理实例:灰度变换,空域滤波,频域滤波,傅里叶变换的实现
http://blog.sciencenet.cn/blog-95484-803140.html % %图像灰度变换 % f = imread('E:\2013第一学期课程\媒体计算\实验一\Img\ ...
- liferay增删改简单小练习
liferay简单增删改 大家都知道,我们每学习一项技能的时候,都会做一些简单的小实例,来检验我们学习成果,这个也不例外. 我建议大家学习完三大框架之后再来看这个demo. 首先:先说一下,零碎的知识 ...
- libsvm java版本使用心得(转)
http://blog.csdn.net/u010340854/article/details/19159883 https://github.com/cjlin1/libsvm 项目中要用到svm分 ...
- Kintone学习
kintone JavaScript编码指南 编码的注意地方: 文字编码 使用 utf-8
- linux常用命令:lsof 命令
lsof(list open files) 是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以 如传输控制 ...