Some tips of Optimizing the code。
This blog is about some tips of how to optimizing the java code,I will write down some principles or some code about this.
- Don't initialize the object in a loop
- Avoid String concatenation in a loop
- Use StringBuilder to build a large String
Use System.arraycopy
usually,we copy the array using a loop like this:
int[] copy = new int [length]; for(int i=0;i<length;i++) { copy [i] = array[i]; }
and you can use the System.arraycopy to do the same thing:
int length = array.length; int[] copy = new int [length]; System.arraycopy(array, 0, copy, 0, length);
Using System.arraycopy is faster than copy a array in a loop
About I/O Streams
First thing to remember is closing streams
,the best way to do this is in a finally block.
Second,Buffering
,the BufferedInputStream stores all the bytes that the FileInputStream sends until it reaches its limit,the default limit is 512 bytes.
try{ InputStream in = new FileInputStream(fileFrom); inBuffer = new BufferedInputStream(in); OutputStream out = new FileOutputStream(fileTo); outBuffer = new BufferedOutputStream(out); while(true){ int bytedata = inBuffer.read(); if(bytedata == -1) break; out.write(bytedata); } } finally{ if(inBuffer != null) inBuffer.close(); if(outBuffer !=null) outBuffer.close(); }
a better way is to use the method available() to define the size of the byte array.
try{ in = new FileInputStream(fileFrom); out = new FileOutputStream(fileTo); int availableLength = in.available(); byte[] totalBytes = new byte[availableLength]; int bytedata = in.read(totalBytes); out.write(totalBytes); } finally{ if(in != null) in.close(); if(out !=null) out.close(); }
近期评论