1.이 작업을 수행하는 목적 :
1. 효율성 (가장 중요한)
2. 후반기에서 쉽게 유지하기 쉬운 가독성. (또한 중요)
2. 코드 최적화 요구 사항 :
1. 코드의 볼륨을 줄입니다.
2. 코드의 실행 효율성을 향상시킵니다.
3. 일반적으로 사용되는 코드의 최적화 :
1. 개체를 재사용하려고 시도하십시오.
특히 문자열 객체의 재사용. 가장 일반적으로 사용되는 문자열 스 플라이 싱 :
끈으로 자주 닦는 경우. StringBuilder/StringBuffer를 사용해야합니다
예를 들어:
ArrayList <string> 목록; // 목록 초기화를 저장합니다. StringBuilder Builder = 새 StringBuilder ();
이유 : Java Virtual Machines는 객체를 생성하는 데 시간을 소비해야 할뿐만 아니라 너무 많은 객체를 생성하는 데 시간을 보내면서 프로그램 성능에 영향을 미칩니다.
2. 가능한 경우 로컬 변수를 사용하십시오.
로컬 변수는 스택에서 생성되며 추가 쓰레기 수집없이 사용 후 신속하게 생성되어 자동으로 사라집니다.
정적 변수, 인스턴스 변수 등은 힙에 생성되며 생성 속도는 느리고 처리 할 Java 쓰레기 수집 메커니즘에도 의존합니다.
3. 시간을 닫으십시오.
Java 프로그램 개발에서 I/O 및 데이터베이스 작업이 완료된 후 흐름을 닫아야합니다.
원인 : 흐름을 닫지 않으면 시스템에 큰 오버 헤드가 발생할 수 있으며 데이터에 심각한 결과를 초래할 수도 있습니다.
4. 게으른 하중을 사용하십시오
게으른 로딩 :이 객체를 사용하는 경우에만이 객체를 만듭니다.
예를 들어:
String Prefix = "gebi";
대체 : :
if ( "laowang".equals (name)) {String prefix = "gebi";5. 시도 사용을 피하십시오 ... 루프를 잡고 시도해보십시오 ... 루프 밖을 잡아라
6. 트리 ... 캐치는 너무 크지 않아야합니다.
모든 쓸모없는 코드를 넣지 마십시오. 즉, 예외는 시도 블록에 던져지지 않습니다. Catch Block, 시도 크기를 줄입니다.
코드의 가독성, 유지 보수 및 견고성을 보장하십시오.
7. 루프 내에서 객체에 대한 참조를 생성하지 마십시오.
특히 순환량이 클 때.
while (i <1000) {object = new Object ();다음으로 수정하는 것이 좋습니다.
Object = null; while (i <1000) {object = new Object ();새 개체 ()가 새로울 때마다 객체 객체 참조는 객체 객체를 가리 킵니다.
예를 들어 첫 번째 유형이 많은 루프가 있으면 JVM은 객체에 대한 1,000 개의 참조를 생성하는 반면, 두 번째 유형은 메모리에 하나의 객체 객체 참조 만 있습니다. 이것은 메모리 공간을 크게 절약합니다.
8. 마음대로 정적 변수를 사용하지 마십시오.
객체가 변수 선언 된 정적으로 참조되면 Java Garbage Collector는 물체가 차지하는 힙 메모리를 정리하지 않습니다.
정적 변수가 차지하는 힙 메모리는 변수가있는 프로그램까지 해제되지 않습니다. 즉, 정적 변수 수명주기 = 클래스 수명주기.
9. 사용하지 않은 객체를 만들지 말고 미사용 클래스를 가져 오지 마십시오.
10. 버퍼링 된 I/O 스트림 사용 :
버퍼링 된 I/O 스트림은 I/O 효율을 크게 향상시킬 수 있습니다. BufferedWriter, BufferedReader, BufferedInputStream, BufferedOutputStream.
11. 래핑 데이터를 사용할 문자열로 변환합니다 : Tostring
정수 i = 1;
래핑 데이터를 문자열 메서드로 변환하여 속도 순위 :
i.tostring> string.valueof (i)> "" + i
12. 트래버스 효율성 : EntrySet> 키 세트
// entry <string, string> entry : map.entryset ()) {string key = entry.getKey (); : " + value);} // Up and Down 비교 // keyset () for (string key : map.keyset ()) {String value = map.get (key); system.out.println (key +": " + value);}13. 반복자 및 foreach ()의 수집 트래버스에 대해.
알고리즘 소개 : 알고리즘은 공간 효율과 시간 효율을 향상시키기위한 것입니다. 그러나 종종 시간과 공간은 공존 할 수 없습니다.
시간 효율성 : 반복자> foreach ()
코드 가독성 : foreach ()> iterator
// ITERATOR SET <eTTRY <String, String >> entryset = map.entryset (); String> iter.next ();
차이:
// foreach () <string, string> entry : map.entryset ()) {string key = entry.getKey (); : " + value);}개인적으로, 나는 빅 데이터를 처리 할 때 반복기를 사용하여 컬렉션을 통과하는 것이 좋습니다.
그러나 소규모 데이터 처리의 경우 foreach ()는 여전히 가독성 및 나중에 유지 보수에 사용됩니다.
두 가지를 결합하여 사용할 때는 모두 마스터해야합니다.