java开发总结
来源:互联网 发布:为什么淘宝助理打不开 编辑:程序博客网 时间:2024/05/22 12:22
1、字符串函数substring(beginIndex, endIndex):是冲beginIndex开始(包括beginIndex),到endIndex(但不包括endIndex)。
2、字符串函数substring(beginIndex,beginIndex):取值为空。
例如String tempStr = "sdfsdf".substring(0,0); (tempStr的值为空"")。
3、Object tempObj = map.get("ss"),而map中并没有此key时,此句不会报异常(tempObj=null)
4、程序中写查询sql时,尽量不用*(select * from tableName),而是要吧查询的字段都写出来,因为根据数据的查询规则使用*进行查询时的效率要慢。(具体规则忘了)
5、在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。
- import java.util.vector;
- class cel {
- void method (vector vector) {
- for (int i = 0; i < vector.size (); i++) // violation
- ; // ...
- }
- }
- class cel_fixed {
- void method (vector vector) {
- int size = vector.size ()
- for (int i = 0; i < size; i++)
- ; // ...
- }
- }
6、将try/catch块移出循环
把try/catch块放入循环体内,会极大的影响性能,如果编译jit被关闭或者你所使用的是一个不带jit的jvm,性能会将下降21%之多!
例子:
- import java.io.fileinputstream;
- public class try {
- void method (fileinputstream fis) {
- for (int i = 0; i < size; i++) {
- try { // violation
- _sum += fis.read();
- } catch (exception e) {}
- }
- }
- private int _sum;
- }
更正:
将try/catch块移出循环
- void method (fileinputstream fis) {
- try {
- for (int i = 0; i < size; i++) {
- _sum += fis.read();
- }
- } catch (exception e) {}
- }
在循环体中实例化临时变量将会增加内存消耗
例子:
- import java.util.vector;
- public class loop {
- void method (vector v) {
- for (int i=0;i < v.size();i++) {
- object o = new object();
- o = v.elementat(i);
- }
- }
- }
更正:
在循环体外定义变量,并反复使用
- import java.util.vector;
- public class loop {
- void method (vector v) {
- object o;
- for (int i=0;i<v.size();i++) {
- o = v.elementat(i);
- }
- }
- }
8、序列化(fastjson序列化get方法的执行)
实体类中的非public、static属性都会被序列化。
而序列化的过程中会自动调用属性的get方法(个人认为是取该属性的值进行序列化):已验证
反序列的过程中会自动调用属性的set方法(个人认为是为该对象的属性赋值):未验证
例如:序列化类Teacher object
在执行JSON.toJSONString(object)此句中就会调用该对象属性的get方法,
而序列化后该属性的值是get方法的返回值
public class Teacher { private int id; private List<Student> students; public BaseTestItemGroup() { } public int getId() {return id;}public void setId(int id) {this.id = id;} public List<Student> getStudents() {//在此可以加入一些逻辑处理,在序列的时候会自动执行(已验证)/**逻辑处理代码(省略)*/return students;}public void setStudents(List<Student> students) {//在此可以加入一些逻辑处理,在反序列的时候会自动执行(为验证)/**逻辑处理代码(省略)*/this.students = students;}}
2 0
- Java 数据库开发总结
- java开发总结
- java webservice 开发总结
- java开发快捷键总结
- Java开发工具总结
- Java开发知识总结
- java开发工具总结
- Java开发-问题总结
- java开发总结
- java开发常见问题总结
- java开发总结
- Java开发Spring总结
- JAVA WEB 开发学习总结
- JAVA应用程序开发 知识总结
- Java开发小技巧总结
- Java Web开发常识总结
- java各种开发框架总结
- java web开发细节总结
- 九大基础排序总结与对比
- 程序员必读书籍排行榜
- java虚拟机垃圾回收的几个特点
- Error converting bytecode to dex:Dex cannot parse version 52 byte code
- Android网络请求框架AsyncHttpClient详解(整理)
- java开发总结
- python环境搭载和安装库文件
- Mysql 查看连接数,状态 最大并发数(赞)
- C# 委托delegate
- Oracle报错之INS-13001
- Android wifi搜索与连接
- 二叉树的创建、层次遍历、递归及非递归先中后序遍历
- 罗列几个Android插件化开发框架
- 序列化和反序列化