열거(Enum) 타입 한정된 값을 갖는 타입을 열거 타입(enumeration type)이라 한다. 열거 타입을 사용하려면 열거 타입 이름으로 소스 파일(.java)를 생성하고 한정된 값을 코드로 정의한다. 열거 타입 이름 첫 문자는 대문자로 하고 camel 스타일로 지어주는 것이 관례이다. Week.java StudentName.java 열거 상수란 열거 타입으로 사용할 수 있는 한정된 값이다. 관례적으로 알파벳으로 정의하며, 모두 대문자로 작성한다. 열거 상수가 여러 단어로 구성될 단어와 단어 사이를 언더바(_)로 연결한다. Week today; Week reservationDay; 열거 타입도 하나의 데이터이므로 변수를 선언하고 사용한다. Week today = Week.SUNDAY; 열거 타입 변..
IT/Java
배열 복사(Array Copy) 배열은 한 번 생성하면 길이를 변경할 수 없다. 더 많은 저장 공간이 필요하면 더 큰 길이의 배열을 새로 생성하고 이전 배열에서 항목을 복사해야하 한다. for 문을 활용한 복사 방법 예제 코드 더보기 public static void main(String[] args) { int[] oldIntArray = {1, 2, 3}; // 길이 5인 배열을 새로 생성 int[] newIntArray = new int[5]; // 배열 항목 복사 for (int i = 0; i < oldIntArray.length; i++) { newIntArray[i] += oldIntArray[i]; } // 배열 항목 출력 for (int i = 0; i < newIntArray.lengt..
기본 타입 배열은 각 항목에 값을 저장한다. 그러나 참조 타입 배열은 각 항목에 객체의 번지를 저장한다. 배열 항목이 참조하는 객체가 같은지 확인하려면 ==, != 비교 연산자를 사용하여 확인 가능하며, 문자열만 비교할 때는 equals() 메소드를 사용한다. 예제 코드 public static void main(String[] args) { String[] strArray = new String[3]; strArray[0] = "Java"; strArray[1] = "Java"; strArray[2] = new String("Java"); System.out.println(strArray[0] == strArray[1]); System.out.println(strArray[0] == strArray[2..
다차원 배열 배열 항목에 또 다른 배열 대입을 다차원 배열이라 한다. 변수[1차원인덱스][2차원인덱스]...[N차원인덱스] intArray[2][4]; 값 목록으로 다차원 배열 생성 배열 변수 선언 시 타입 뒤에 대괄호 {}를 차원의 수만큼 붙이고, 값 목록도 차원의 수만큼 중괄호를 중첩시킨다. 예제 코드 int[][] scores = { {70, 80, 60}, {90, 80} }; new 연산자로 다차원 배열 생성 배열 변수 선언 시 타입 뒤에 대괄호를 차원의 수만큼 붙이고, new 타입 뒤에도 차원의 수만큼 대괄호 []를 작성하면 된다. int[][] scores = new int[2][3]; 항목들은 초기값으로 지정된다. 배열의 길이를 다르게 줄 수 있다. int[][] scores = new i..
배열(Array) 배열은 연속된 공간에 값을 나열시키고, 각 값에 index를 부여해 놓은 자료구조다. int 배열은 int 타입의 값만 관리하고, String 배열은 문자열만 관리한다. 배열은 생성과 동시에 길이가 결정되며, 결정된 배열의 길이는 변경할 수 없다. 같은 타입의 값만 관리 길이 변경 불가 변수 선언 int[] intArray; int intArray[]; 배열 변수 선언은 두 가지 형태로 작성할 수 있지만, 관례적으로 첫 번째 방법을 사용한다. int[] intArray = null; 배열 변수는 참조 변수로 힙 영역에 생성되고 힙 영역의 배열 주소를 저장한다. 참조할 배열이 없다면 null로 초기화 시킬 수 있다. 값 목록으로 배열 생성 int[] intArray = {1, 2, 3, ..
문자열(String) 자바의 문자열은 String 객체로 생성된다. String name; name = "이름"; String hobby = "취미"; 변수에 문자열 리터럴이 대입되면 문자열은 String 객체로 생성되고, 객체의 번지가 각각 대입된다. String 타입 name 변수 선언 name 변수에 문자열 대입 String 타입 변수 hobby 선언 후 문자열 대입 문자열 비교 String name1 = "이름"; String name2 = "이름"; 자바는 문자열 리터럴이 동일하다면 String 객체를 공유한다. String name1 = new String("이름"); String name2 = new String("이름"); new 연산자로 직접 String 객체를 생성하고 대입할 수 있다...
null 참조 타입 변수는 아직 번지를 저장하고 있지 않다는 뜻으로 null 값을 가질 수 있다. 초기값으로 사용할 수 있어 null로 초기화된 참조 변수는 스택 영역에 생성된다. String val1 = "Java"; String val2 = null; 변수가 null 값을 가지는지 확인하려면 ==, != 연산을 수행할 수 있다. val1 == null // false var1 != null // true NullPointerException 자바는 프로그램 실행 도중 발생하는 오류를 예외(Exception)라고 부르며, 참조 변수를 사용하며 가장 많이 발생하는 예외 중 하나는 NullPointerException이다. 변수가 null인 상태에서 객체의 데이터나 메소드를 사용할 때 예외가 발생한다. i..
==, != 연산자는 변수의 값이 같은지, 아닌지 확인 가능하다. 참조 타입 변수의 값은 객체의 번지이므로 ==, != 연산자는 번지를 비교할 수 있다. 번지가 같다면 동일한 객체를 참조하는 것, 다르면 다른 객체를 참조하는 것이다. 예제 코드 public static void main(String[] args) { int[] arr1; int[] arr2; int[] arr3; arr1 = new int[]{1, 2, 3}; arr2 = new int[]{1, 2, 3}; arr3 = arr2; System.out.println("arr1 == arr2 : " + (arr1 == arr2)); // false System.out.println("arr2 == arr3 : " + (arr2 == arr3..
자바의 데이터는 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 분류된다. 참조 타입이란 객체(object)의 번지는 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입이 있다.기본 타입으로 선언된 변수는 값 자체를 저장하고 있지만, 참조 타입으로 선언된 변수는 객체가 생성된 메모리 번지를 저장한다. 변수들은 모두 스택(stack)이라는 메모리 영역에 생성되며, 기본 타입 변수는 직접 값을 저장한다. 그러나 참조 타입 변수는 힙 메모리 영역의 객체 번지를 저장하고 저장한 번지를 통해 객체를 참조한다. 메모리 사용 영역 java 명령어로 JVM이 구동되면 JVM은 운영체제에서 할당받은 메모리 영역(Running Data Area)을 구분해서 사용한다. 메소드(..
break break 문은 반복문인 for, while, do-while 문을 실행 중지하거나 조건문인 switch 문을 종료할 때 사용한다. for ( ... ) { ... break; } while( ... ) { ... break; } break 문은 대개 if 문과 같이 사용되어 조건식에 따라 for 문과 while 문을 종료한다. 만약 반복문이 중첩되어 있을 경우 break 문은 가장 가까운 반복문만 종료하고 바깥쪽 반복문은 종료시키지 않는다. Label : for ( ... ) { for ( ... ) { ... break Label; } } 중첩된 반복문에서 바깥쪽 반복문까지 종료시키려면 바깥쪽 반복문에 이름(레이블)을 붙이고 "break 이름;"을 사용한다. break 라벨 예제 코드 pa..