입력받을 테이터가 진짜 문자열일 때만 문자열을 사용하자. 받은 데이터가 수치형이라면 int, float, BigInteger 등 적당한 수치 타입으로 변환 해야 한다.예/아니요 질문의 답이라면 열거형 타입이나 boolean으로 변환해야 한다.기본타입이든 참조 타입이든
문자열 연결 연산자로 문자열 n개를 잇는 시간은 n^2에 비례한다.또한, 문자열은 불변이라서, 두 문자열을 연결할 경우 두 문자열의 내용을 모두 복사해야 한다.성능을 포기하고 싶지 않다면 String 대신 StringBuilder를 사용하자.
적합한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라객체의 실제 클래스를 사용해야 할 상황은 생성자로 생성할 떄 뿐이다.이처럼 인터페이스를 사용하는 습관을 길러두면 프로그램이 유연해진다.하지만, 원래의 클래스가 인터페이스
컴파일타임 타입 검사가 주는 이점을 누릴 수 없다. ex) 리플렉션을 사용하려 없는 메서드를 호출하려 시도하면 런타임 오류가 발생한다.성능이 떨어진다.의존관계 프레임워크처럼 리플렉션을 사용해야 하는 경우에도 리플렉션의 사용을 줄이고 있다.아마도 우리 애플리케이션에서는
자바 프로그램이 네이티브 메세드(C, C++ 같은 네이티브 프로그래밍 언어로 작성된 메서드)를 호출하는 기술자바가 발전하면서 (OS 같은) 하부 플랫폼의 기능을 점차 흡수하고 있다.따라서 네이티브 메서드를 사용할 필요성이 줄어들고 있음자바9에서는 Process API가
최적화는 좋은 결과보다는 해로운 결과로 이어지기 쉽고, 섣불리 진행하면 특히 더 그렇다.성능 때문에 견고한 구조르 희생하지 말자. 빠른 프로그램보다는 좋은 프로그램을 작성하라완성 후 변경하기가 가장 어려운 설계 요소는 바로 컴포넌트끼리, 혹은 외부 시스템과의 소통 방식
이 코드는 배열의 원소를 순회하는데, 배열의 끝에 도달해 ArrayIndexOutOfBoundsException이 발생하면 끝난다.아마도 표준적인 관용구대로 작성했다면 모든 자바 프로그래머가 이해했을 것이다. 그런데 왜 예외를 써서 루프를 종료했을까? 이는 잘못된 추론
자바는 문제 상황을 알리는 타입(throwable)으로 검사 예외, 런타임 예외, 에러를 제공한다.언제 무엇을 사용해야 할까?호출하는 쪽에서 복구하리라 여겨지는 상황이라면 검사 예외를 사용하라검사 예외를 던지면 호출자가 그 예외를 catch로 잡아 처리하거나 더 바깥으
검사 예외는 발생한 문제를 프로그래머가 처리하여 안전성을 높이게 해주기 때문에제대로 사용하면 API와 프로그램의 질을 높일 수 있다.어떤 메서드가 검사 예외를 던진다면,1\. 해당 메서드를 호출하는 코드에서는 catch 블록을 두어 예외를 처리하거나 throws로 상위
자바 라이브러리는 API에서 쓰기에 충분한 수의 예외를 제공한다. 표준 예외를 사용했을 때의 장점 API를 다른 사람이 익히고 사용하기 쉬워진다.(낯선 예외를 사용하지 않기 때문) 예외 클래스가 적을수록 메모리 사용량도 줄고 클래스를 적재하는 시간도 적게 걸린다.