自己总结的在编程中的一些小技巧
来源:互联网 发布:sportsdt体育大数据 编辑:程序博客网 时间:2024/05/29 19:25
此贴不定时更新
1、 在循环中不要新建引用,放到循环外建立,循环内使用,虽然对象是存在堆里面,但引用会压入栈,So……
2 、同样是循环,在设立循环条件时,不要以重复访问对象为条件,缓存进栈,虽然是个小细节,养成习惯总是好的,例如:
Object[] temp=new Object[100]; for(int i=0,n=temp.length;i<n;i++){ ...... }
3、 对于final的使用,在数组上其实很没意义,数组的引用不可再变,但是成员仍然可以变化,但是,此时数组内容也不会变,只不过变化的那个成员不再属于数组了而已,如例
String str="old"; final String[] temp={str}; // a error // temp=new String[3]; str=new String("new"); /** * now * temp[0]=="old" * str=="new"; */
如上,
4、 继续上面,对于经常使用的常量请加上final,JVM在运行时会缓存final变量,并且在多线程的共享不需要增加同步开销,不可变性相对就提高了安全性。
5、 说到多线程,对于同步synchronized关键字,尽量使用同步代码块,不要同步方法,synchronized实现原理自行百度,总之synchronized同步的代码越少越好。
6、 如果仅仅是一个变量的同步请不要使用同步代码块,直接用volatile修饰变量即可。
7、 继续线程安全,在我们平时码代码是时,除非明确要求使用线程安全类,不然别去使用,线程安全类就是增加了同步开销,以StringBuffer和StringBuilder为例,前者属于线程安全,但实际情况下我们使用需要线程安全的情况微乎其微(至少我没遇到),所以StringBuilder更为效率。
8、 继续StringBuilderx相关,在字符串拼接,不要直接使用+拼接,此种方法效率最差,而字符串的concat方法实质就是现分解为char数组,在复制重新生成字符串,效率只比+好一点,StringBuilder和StringBuffer通常选取前者最为拼接字符串的优先考虑。
9、 接上面,String 重载了+ 和 +=,但是在字符串用+连接时,实质JVM运行也是编译了一个临时的StringBuilder来执行append,也就是说,即使你用了+,其实还是用的StringBuilder,只不过是由JVM代替了你使用而已。
10、 在循环内除非必要,否则不要处理异常,原因在于异常基类Throwable中的public synchronized native Throwable fillInStackTrace(),如你所见,是个同步方法,So……。
11、 接上,尽量不要使用try-catch处理业务流程,虽然看起来更OOP,但是实质上是try-catch的性能处理上肯定不如传统的if-else,虽然看起来只是一点点性能的浪费。
12、 对于确定的死循环,for(;;)优于while(true),原因在于前者编译后执行的汇编代码更少,如例:
for(;;)
jmp wmain+29h
while(true)
mov eax,1test eax,eaxje wmain+29hjmp wmain+1Eh
13、 在传统的大小判断上,尽量直接使用(x>y)而非(x-y>0),试想一下x=MAX,y=MIN,如果相减是否会溢出呢?
14、 foreach语法能够遍历任何实现了Iterable接口的类。
15、 多看书吧,虽然可能情况不同,我在学习中只看过唯一一次视频,一个简单的知识点拖了一大截才讲到关键,看书几下就看明白了,无论看书还是视频,重要的不是看,是练。
16、 《Java编程思想》真的是本很不错的书(机械工业大法好),相比于国内的某些书(我深受其害),这本书让我欲罢不能,每重看一遍,总有不一样的领悟。
17、 泛型有坑(万恶的泛型擦除),但泛型好用,特别是在编写自己的类库的时候,泛型总能让你的类库突出某层局限。
- 自己总结的在编程中的一些小技巧
- 自己总结的一些安卓的实用小技巧
- 在flash编程过程中的一些小技巧
- *****************************自己总结的小技巧**********************************
- 在编程中的小技巧
- 总结下:在模板页和用户控件中的一些应用技巧。(自己总结的哦)
- 一些编程的小技巧
- 一些小的编程技巧
- jdbc编程中的一些常用的技巧[总结]
- jdbc编程中的一些常用的技巧[总结]
- QT编程中的一些简单的小总结
- 自己总结的一些VC常用技巧
- 自己用到的gnuplot中的一些技巧
- js小技巧(自己遇到的一些技巧)
- 一些VC编程的小技巧
- 一些编程的小技巧(一)
- 一些编程上的小技巧
- 一些编程会用到的小技巧
- Android视图绘制流程完全解析,带你一步步深入了解View(二)
- 三、Audio 系统声音
- phpstorm使用教程
- 【IO】out.println 和err.println的执行顺序
- Blocks UVA
- 自己总结的在编程中的一些小技巧
- Scrapy之路第一篇
- Android视图状态及重绘流程分析,带你一步步深入了解View(三)
- Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
- JavaSE集合框架-01-集合框架体系及表数据结构
- effective c++读书笔记(三)
- AUTOCAD学习笔记3:常用电器元件的绘制
- Quora比赛代码学习笔记
- SpringCloud(第 028 篇)ConfigServer 配置管理微服务