nav_xian
返回返回 教育头条

java码代码中的一些经验和技巧

学习经验

2021年03月25日 14:53:19
今天小编跟大家分享关于“java码代码中的一些经验和技巧”的相关内容,希望对大家有所帮助。
1、 在循环中不要新建引用,放到循环外建立,循环内使用,虽然对象是存在堆里面,但引用会压入栈,So……
2 、同样是循环,在设立循环条件时,不要以重复访问对象为条件,缓存进栈,虽然是个小细节,养成习惯总是好的,例如:
3、 对于final的使用,在数组上其实很没意义,数组的引用不可再变,但是成员仍然可以变化,但是,此时数组内容也不会变,只不过变化的那个成员不再属于数组了而已。
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),原因在于前者编译后执行的汇编代码更少。
13、 在传统的大小判断上,尽量直接使用(x>y)而非(x-y>0),试想一下x=MAX,y=MIN,如果相减是否会溢出呢?
14、 foreach语法能够遍历任何实现了Iterable接口的类。
15、 多看书吧,视频可能一个简单的知识点拖了一大截才讲到关键,看书几下就看明白了,无论看书还是视频,重要的不是看,是练。
16、 《Java编程思想》真的是本很不错的书(机械工业好),相比于国内的某些书,这本书让很好,每重看一遍,总有不一样的领悟。
17、 泛型有坑(万恶的泛型擦除),但泛型好用,特别是在编写自己的类库的时候,泛型总能让你的类库突出某层局限。

java码代码中的一些经验和技巧,如果你喜欢这篇文章,请将其保留版权转载。我的微信号(18560125702)欢迎来咨询,10年教培行业工作经验,如果你在JAVA认证方面有疑问,请与我联系,我将为您提供全面专业的选课帮助。返回教育宝头条

【免责声明】本文仅代表作者本人观点,与教育宝无关。教育宝对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何保证。请读者仅作参考,特此声明!

相关推荐

400-029-0997