목록Java (14)
모눈종이에 사각사각
문자열(String클래스) = 문자를 연이어 늘어놓은 것 = 문자배열(char배열) 자바에서 char 배열이 아닌 String클래스를 이용해서 문자열을 처리하는 이유는? String 클래스가 char 배열에 여러 가지 기능을 추가하여 확장한 것이기 때문! char배열과 String 클래스의 가장 큰 차이점은, String객체(문자열)는 읽을 수만 있고 수정이 불가하다는 것이다! String str = "가나다"; str += "라마바"; System.out.println("str = " + str); 위의 코드를 실행하면 str = 가나다라마바 이렇게 나오기는 하지만, 이는 새로운 내용의 문자열이 생성되어 출력되는 것이다. String 클래스의 주요 메서드 중 몇 개를 살펴볼 것이다. String sub..
List.of() 코딩을 하던 중, List에 add()를 했더니 UnsupportedOperationException 예외가 발생했다. List에 add를 왜 못하지..? 라는 생각에 작업하던 List의 타입을 확인해봤다. java.util.ImmutableCollections$ListN ImmutableCollections라니! 원인은 내가 리스트를 생성할 때 다음과 같이 List.of()를 사용했기 때문이었다. List list1 = List.of(1, 2, 3, 4); List.of() 메서드는 Java9 부터 지원하는 메서드이며 Immutable한 Collection이다. 따라서 add(), remove(), set(), replace() 등의 작업을 할 수 없다. (UnsupportedOper..
"오버로딩과 오버라이딩의 차이가 무엇이죠?" 라고 물어오면 순간 당황한다. 분명히 알고 있는데, 내가 알고 있는 이 기능이 오버로딩인지, 오버라이딩인지 헷갈린다. 이 포스팅을 계기로 딱 기억하자. 오버로딩 -> 같은 이름, 다른 매개변수 오버라이딩 -> 상속, 재정의 🍀 오버 로딩 자바의 한 클래스 내에 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의하는 것이다. 매개변수가 다르면 이름이 같아도 서로 다른 메소드가 된다. 반면에 매개변수는 같지만 리턴타입이 다르면 오류가 발생한다. 또한 접근 제어자도 자유롭게 지정할 수 있지만, 접근 제어자만 다르다고 해서 오버로딩이 가능하지 않다. 상속의 관계에서도 오버로딩을 사용할 수 있다 오버로딩을 사용하..
import 문을 사용하면 클래스의 패키지 명을 생략할 수 있다. static import문을 사용하면 static 멤버를 호출할 때 클래스 이름을 생략할 수 있다. 특정 클래스의 static 멤버를 자주 사용할 때 편리하다. static import문 사용 전 System.out.println(Math.random()); static import문 사용 후 import static java.lang.Math.*; System.out.println(random()); 편리하긴 하지만, 잘못 사용할 경우 코드의 가독성을 상당히 떨어뜨릴 수 있다. 따라서 이름만 봐도 한 번에 알 수 있는 static멤버를 호출할 때 사용하면 좋을 것 같다.