java8 [JAVA] 배열을 이용한 전화번호부 만들기 객체 배열에 대해 학습하고 응용문제로 전화번호부를 입력받아 저장, 검색, 출력하는 프로그램을 만들어 보았다. public class Menu { //static을 사용하면 객체 생성 없이 공유 가능해짐 static void showMenu() { System.out.println("메뉴를 선택하세요."); System.out.println("----------------"); System.out.println("1.데이터 입력"); System.out.println("2.데이터 검색"); System.out.println("3.데이터 삭제"); System.out.println("4.프로그램 종료"); System.out.println("----------------"); } } 초기화면을 구성하는 클래.. 2022. 10. 12. [JAVA] ArrayList 내부 구현 ArrayList는 List Interface를 상속받은 구현 클래스이며, 배열의 형태이지만 Array는 크기가 고정이기 때문에 초기 선언시 할당받은 크기만큼만 사용할 수 있어 크기를 늘리려면 새로운 배열을 생성하여 복사해야 하지만, ArrayList는 가변적으로 크기를 늘려 사용할 수 있다는 차이가 있다. ArrayList가 어떻게 Array와 달리 크기를 무한대로 추가할 수 있는지 내부 구현된 부분을 확인해 보았다. ArrayList 내부 구현 //ArrayList.java 내의 코드 /** * Shared empty array instance used for default sized empty instances. We * distinguish this from EMPTY_ELEMENTDATA to .. 2022. 9. 26. [JAVA] System.out.println()을 쓰면 안 되는 이유 나의 경우 로깅에 대해 진지하게 고민해 본 적도 없었거니와, 학원에서도 회사에서도 System.out.println을 자주 활용했었기 때문에 당연하게 생각하고 있었다. 그런데 System.out.println을 쓰면 안 된다니? 처음 듣고 충격을 받아서, 더 자세하게 알아보고자 몇 가지 글을 찾아봤다. 우선 몇 가지의 이유가 있었는데, 로그가 표준으로 출력되기 때문에 어떠한 파일로 저장되지 않고 한 번 출력된 후 휘발되기 때문에 에러가 났을 때 추적하기 어렵다는 것과, 인자로 전달한 문자열만 출력되기 때문에 문제가 발생한 일시, 문제 발생 위치 등에 대한 정보는 알기가 어렵다는 것도 있었다. System.out.println() 성능 저하 문제 그 중에서도 주목해볼 문제는 '성능저하'에 대한 것이었다. .. 2022. 9. 26. [JAVA] equals() 와 hashCode() quals() equals가 구현된 방법은 2개의 객체가 참조하는 것이 동일한지(동일성 비교)를 확인하는 것이다. 즉, 2개의 객체가 가리키는 곳이 동일한 메모리 주소일 경우에만 동일한 객체가 된다. public boolean equals(Object obj) { return (this == obj); } 따라서, 두 객체가 타입과 속성이 같으면 같다고 비교하고 싶으면, equals()를 재정의(override)해서 동등성 비교를 하면 된다. 참고로, String 객체에서 equals() 메소드를 호출하면 자연스럽게 동등성 비교가 되는데, 이는 String Class가 equals()를 재정의하고 있기 때문이다. public boolean equals(Object anObject) { if (this =.. 2022. 9. 21. 이전 1 2 다음