본문 바로가기

전체 글846

java.lang패키지와 유용한 클래스(5) 예외를 발생시키는 메서드 메서드 이름에 Exact가 포함된 메서드들이 JDK1.8부터 새로 추가되었다. 이들은 정수형간의 연산에서 발생시할 수 있는 오버플로우(overflow)를 감지하기 위한 것이다. int addExact(int x, int y) // x+ y int subtractExact(int x, int y) // x -y int multiplyExact(int x, int y) // x * y int incrementExact(int a) // a++ int decrementExact(int a) // a-- int negateExact(int a) //-a int toIntExact(long value) // (int) value -int로의 형변환 연산자는 단지 결과를 반환할 뿐, 오버플.. 2021. 6. 27.
java.lang패키지와 유용한 클래스(4) StringBuffer 클래스와 StringBulider 클래스 String클래스는 인스턴스를 생성할 때 지정된 문자열을 변경할 수 없지만 StringBuffer클래스는 변경이 가능하다. 내부적으로 문자열 편집을 위한 버퍼(buffer)를 가지고 있으며, StringBuffer인스턴스를 생성할 때 그 크기를 지정할 수 있다. 이 떄 , 편집할 문자열의 길이를 고려하여 버퍼의 길이를 충분히 잡아주는 것이 좋다. 편집 중인 문자열이 버퍼의 길이를 넘어서게 되면 버퍼의 길이를 늘려주는 작업이 추가로 수행되어야하기 때문에 작업효율이 떨어진다. StringBuffer클래스는 String클래스와 유사한 점이 많다. 아래의 코드에서 알 수 있듯이, StringBuffer클래스는 String클래스와 같이 문자열을 저장.. 2021. 6. 26.
java.lang패키지와 유용한 클래스(3) join()은 여러 문자열 사이에 구분자를 넣어서 결합한다. 구분자로 문자열을 자르는 split()과 반대의 작업을 생각하면 이해하기 쉽다. String animal = "dog,cat,bear"; String[] arr =animals.split(","); //문자열을 ','를 구분자로 나눠서 배열에 저장 String str = String.join("-", arr); //배열의 문자열을 '-'로 구분해서 결합 System.out.println(str); //dog-cat-bear java.util.StringJoiner 클래스를 사용해서 문자열을 결합할 수도 있는데, 사용하는 방법은 간단하다. 아래의 코드를 보는 것만으로 이해가 될 것이다. StringJoiner sj = new StringJoine.. 2021. 6. 25.
스택 보호되어 있는 글 입니다. 2021. 6. 24.
java.lang패키지와 유용한 클래스(2) 얕은 복사와 깊은 복사 clone()은 단순히 객체에 저장된 값을 그대로 복제할 뿐, 객체가 참조하고 있는 객체까지 복제하지 않는다. 예제 9-8에서처럼 기본형 배열인 경우에는 아무런 문제가 없지만 ,객체 배열을 clone()으로 복제하는 경우 원본과 복제본이 같은 객체를 공유하므로 완전 한 복제라고 보기 어렵다. 이러한 복제(복사)를 얕은복사(shallow copy)라고 한다. 얕은 복사에서는 원본을 변경하면 복사본도 영향을 받는다. 반면에 원본이 참조하고 있는 객체까지 복제하는 것을 깊은복사(deep copy)라고 한다. 깊은 복사에서는 원본과 복사본이 서로 다른 객체를 참조하기 때문에 원본의 변경이 복사본에 영향을 미치지 않는다. 예를 들어 Circle클래스가 아래와 같이 Point타입의 참조변수를.. 2021. 6. 24.
보호되어 있는 글 입니다. 2021. 6. 23.