본문 바로가기

Java8

StringBuffer클래스 StringBuffer클래스 String처럼 문자형 배열(char[])을 내부적으로 가지고 있다. 그러나 String(내용수정 불가인 불변)과 달리 내용을 변경할 수 있다.(mutable) StringBuffer sb = new StringBuffer("abc"); sb.append("efg"); System.out.pintln(sb); //결과: abcefg System.out.println("sb = " + sb); //결과: abcefgZZ System.out.println("sb2 = " + sb2); //결과: abcefgZZ append()는 지정된 내용을 StringBuffer에 추가 후, StringBuffer의 참조를 반환 배열은 길이 변경불가. 공간이 부족하면 새로운 배열 생성해야함. .. 2022. 3. 19.
String클래스 String클래스 문자열을 다루기 위한 클래스 String클래스 = 데이터(char[] → 문자배열) + 메서드(문자열 관련) 내용을 변경할 수 없는 불변(immutable) 클래스String a = "a"; String b = "b"; a = a + b; //a의 내용이 바뀌는게 아니라 완전히 새로운 문자열a가 만들어지는 것이다.(기존 주소는 끊어지고 새로운 객체 즉, 새로운 주소가 생긴다.) 덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어짐(계속해서 새로운 객체가 만들어지기 때문에) 문자열의 결합이나 변경이 잦다면, 내용을 변경가능한 StringBuffer를 사용 문자열 비교 String str = "abc"와 String str = new String("abc")의 비교 String str1 .. 2022. 3. 19.
Object클래스 (equals, hachCode, toString) Object클래스 모든 클래스의 최고 조상(오직 11개의 메서드만 가지고 있다. iv와 cv가 없다.) Object클래스의 대표 메서드(나머지 생략) public boolean equals(Object obj)//객체 자신과 객체obj가 같은 객체인지 알려준다.즉 객체비교(같으면 true) public Class getClass() //객체 자신의 클래스 정보를 담고 있는 Class인스턴스를 반환한다. public int hashCode() //객체 자신의 해시코드를 반환한다. public String toString() //객체 자신의 정보를 문자열로 반환한다. 1. equals(Object obj) 객체 자신(this)와 주어진 객체(obj)를 비교한다. 같으면 true, 다르면 false Objec.. 2022. 3. 17.
사용자 정의 예외 만들기, 예외 던지기, 연결된 예외 사용자 정의 예외 만들기 우리가 직접 예외 클래스를 정의할 수 있다. 조상은 Exception과 RuntimeException중에서 선택 문자열 매개변수로 받는 생성자를 만든다. 예외던지기(exception re-throwing) 예외를 처리한 후에 다시 예외를 발생시키는 것 호출한 메서드와 호출된 메서드 양쪽 모두에서 예외처리하는 것 ※ 예외처리가 2번이나 된다. 왜 이렇게 양쪽에서 예외를 처리하는거지..??이해를 하지 못함 연결된 예외(chained exception) 한 예외가 다른 예외를 발생시킬 수 있다. 예외 a가 예외 b를 발생시키면, A는 B의 원인 예외(cause exception) Throwable initCause(Throwable cause) // 지정한 예외를 원인 예외로 등록 T.. 2022. 3. 16.
메서드에 예외선언하기 그리고 Finally 메서드에 예외 선언하기 예외를 처리하는 방법: try - catch문(직접처리), 예외 선언하기(예외 떠넘기기),감추기(빈catch 사용 - 웬만하면 사용안하기) 메서드가 호출시 발생가능한 예외를 호출하는 쪽에 알리는 것 ※예외를 발생시키는 키워드 throw와 예외를 메서드에 선언할 때 쓰이는 throws를 잘 구별하자. void method() throws Exception1, Exception2, ... ExceptionN { // 메서드에 예외 선언 //메서드 내용 } //method()에서 Exception과 그 자손 예외 발생 가능 void method() throws Exception {//모든 종류의 예외 //메서드 내용 } Git예제/응용 코드 보러가기 fianlly 블럭 예외 발생여부와 .. 2022. 3. 10.
메서드와 선언 위치에 따른 변수의 종류 선언 위치에 따른 변수의 종류 클래스 영역 iv(Instance Variables): 인스턴스(객체)가 생성되었을 때 cv(class Variables): 클래스가 메모리에 올라갈 때(객체생성 필요없음) ※iv와 cv의 차이점: 객체 생성의 필요성( iv: 객체생성 || cv: 객체생성 안해도됨) 메서드 영역(메서드의 시작'{'부터 메서드의 끝'}') lv(Local Variables): 변수 선언문이 수행되었을 때 생성 클래스 변수와 인스턴스 변수 클래스 변수(CV) static을 타입앞에 붙여야 한다. 공통 속성(모든 인스턴스가 공통으로 갖는 속상 값) 예시: 카드의 높이와 폭 인스턴스 변수(IV) 개별 속성 예시: 카드의 숫자와 무늬 class Card { String .. 2022. 3. 10.