Java/Java 문법 (22) 썸네일형 리스트형 [Java] 수정 가능한 문자열 (StringBuffer) String의 불변성 Java의 String 객체는 불변(immuatable)이다. 예를 들어 아래와 같은 코드를 작성했다고 가정하자. String str = "Hello";str = "World!"; 위 코드에서 str은 "Hello"에서 "World!"로 수정되는 것이 아니다. 먼저 첫 번째 줄의 동작을 살펴보면 "Hello"라는 문자열이 String Pool에 객체로 저장되고 str은 해당 문자열을 참조할 뿐이다. 두 번째 줄에서는 "World!" 문자열이 String Pool에 추가되고 str은 해당 문자열을 참조한다. 이제 "Hello" 문자열은 더 이상 참조되지 않으므로 Garbage Collection의 대상이 된다. 수정 가능한 StringBuffer StringBuffer는 수정.. [Java] String 클래스 String 생성자Java에서는 문자열을 빌트인 클래스인 String 클래스로 관리할 수 있다. String 클래스는 생성자가 오버로딩되어 있기 때문에 다음과 같은 형식으로 선언할 수 있다. char[] chars = {'a', 'b', 'c'};String str1 = new String();String str2 = new String(chars);String str3 = new String("abc");String str4 = "abc"; String 클래스 메서드 String 클래스에서는 다음과 같은 유용한 메서드들을 제공하고 있다. - char chatAt(int where)문자열에서 인덱스 where에 위치한 문자를 반환- void getChars(int sourceStart, int s.. [Java] 박싱, 언박싱, 래퍼클래스(Wrapper Class), Integer, Character 박싱 (boxing) Boxing 이란 원시 타입을 클래스로 변환하여 클래스처럼 다룰 수 있게 캡슐화하는 것을 의미한다. 여기서 원시 타입(Primitive type)은 byte, short, char, int, long, float, double 등의 기초 타입을 의미하며 Java에서 제공하는 기초 타입에 대한 클래스를 래퍼 클래스(Wrapper Class)라고 한다. Wrapper Class - 생성자Character(char ch)Boolean(boolean boolValue)Boolean (String str)Integer(int num)Integer(String str)등의 생성자가 존재하지만 효율 상의 이유로 JDK 9부터 deprecated 됨 - ValueOf(primitiv.. [Java] 열거형 (enum) 열거형 (enum) 열거형은 이름을 가진 상수들을 리스트로 관리할 수 있게 해 준다. 각 상수들은 특정 값을 가질 수 있으며 새로운 데이터 타입으로 사용하는 것도 가능하다. 열거형은 enum 키워드로 정의되며 열거형 내부에 선언된 상수를 열거형 상수라고 한다. public enum Week { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;} values() values()는 컴파일러가 자동으로 생성하는 정적 메서드로 열거형의 모든 원소를 배열로 반환한다. values()의 시그니처는 아래 코드와 같다. public static enum_type[] values(); 따라서 아래 코드처럼 enu.. [Java] 레이스 컨디션 (Race Condition), 스레드 동기화 (synchronized) 레이스 컨디션 (Race Condition)레이스 컨디션은 두 개 이상의 스레드가 동시에 공유자원에 접근하여 실행 순서에 따라 예상치 않은 결과를 발생함을 의미한다. class Callme { void call(String msg) { System.out.print("[" + msg); try { Thread.sleep(1000); } catch(InterruptedException e) { System.out.println("Interrupted"); } System.out.println("]"); }}class Caller implements Runnable { String msg; Callme target; Thread .. [Java] 스레드(Thread), 모니터(Monitor), Runnable 인터페이스 스레드 (Thread) 스레드는 프로그램의 실행 흐름으로 프로세스의 내부에 존재한다. 프로세스에 비해 필요 자원이 적으며 같은 프로세스 내의 스레드 간 자원을 공유한다, Java는 멀티태스킹을 위해 멀티스레딩 방식을 사용한다. 이를 통해 유휴시간을 최소화하여 CPU의 사용률을 높일 수 있게 한다. 모니터 (Monitor) Java는 Monitor mechanism을 이용한다. Monitor란 스레드 간 상호배제(mutual exclusion)를 구현하는 동기화 구조이다. 스레드가 오브젝트 조작 시 모니터 확보를 필요로 한다. 이를 통해 특정 스레드가 모니터를 가지면 오브젝트에 락을 설정하여 다른 스레드가 해당 오브젝트에 접근할 수 없게 한다. Main thread Main threa.. [Java] 예외 처리 (검사형 예외, 비검사형 예외) 예외 Java에서 모든 예외는 Throwable 클래스를 상속받는다. Throwable 클래스 아래에는 Error 클래스와 Exception 클래스가 있다. Error는 개발자가 처리할 수 없는 오류를 말하며 Exception은 개발자가 처리할 수 있는 오류를 말한다. Exception은 일반적인 예외와 RuntimeException의 상속을 받는 실행 예외로 나뉜다. 비검사형 예외 (실행 예외) 비검사형 예외는 예외 처리를 하지 않아도 컴파일이 가능한 예외이다. 대표적인 비검사형 예외 예외발생 이유ArithmeticException0으로 나누기와 같은 부적절한 산술 연산의 수행IllegalArgumentException메서드에 부적절한 인수를 전달IndexOutOfBoundsExcepti.. [Java] Iterator 인터페이스 Iterator interface Iterator interface는 컬렉션 원소에 접근하기 위한 반복자를 제공한다. 그러나 키-값 구조의 Map 컬렉션은 반복자를 제공하지 않는다. Iterator interface에는 유용한 다음과 같은 메서드가 존재한다. boolean hasNext()다음 원소의 존재 여부를 반환한다.E next()다음 원소를 반환한다.default void remove()마지막에 순회한 컬렉션의 원소를 삭제한다. 예시로 아래 코드를 확인해 보겠다. import java.util.*;public class App { public static void main(String[] args) throws Exception { Collection list = Arrays.. 이전 1 2 3 다음 목록 더보기