Java 정리05
- 기본 타입: 정수, 실수, 논리
- 참조 타입
1) 객체의 번지를 참조하는 타입
2) 메모리의 번지를 변수 안에 저장
3) 배열, 열거, 클래스(String 클래스), 인터페이스
- JVM 메모리 영역: 메소드 영역, 힙 영역, JVM 스택
- 메소드 영역: JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역
- 힙 영역: 객체와 배열이 생성되는 영역
- JVM 스택 영역: 메소드를 호출할 때마다 프레임을 추가하고 메소드가 종료되면 해당 프레임을 제거하는 동작을 수행
- 참조 타입의 null: 힙 영역의 객체를 참조하지 않는다는 것
- 예외(Exception): 프로그램 실행 도중에 발생하는 오류
- NullPointerException
1) 참조 타입 변수를 잘못 사용했을 때
2) null 상태에서 있지도 않은 객체의 데이터(필드)나 메소드를 사용하는 코드를 실행했을 때
- 문자열은 String 객체로 생성되고, 변수는 String 객체를 참조
- 변수는 스택 영역에 생성, 문자열은 힙 영역에 String 객체로 생성
- 참조 되지 않는 객체는 메모리에서 자동 제거
- new 연산자(객체 생성 연산자): 힙 영역에 새로운 객체를 만들 때 사용하는 연산자
- equals() 메소드: 객체와 상관 없이 내부 문자열을 비교하고 싶을 때 사용
원본 문자열.equals(비교 문자열)
- 배열 // 타입[] 변수; 타입 변수[];
1) 같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스를 부여한 자료구조
2) 한 번 생성된 배열은 길이를 늘이거나 줄일 수 없음
- 인덱스: 배열 항목에 붙인 번호, 각 항목의 데이터를 읽거나 저장하는데 사용(0부터 시작) //배열이름[인덱스]
p.181
- 값의 목록으로 배열 객체를 새성할 때 배열 변수를 이미 선언한 후에는 다른 실행문에서 중괄호를 사용한 배열 생성 금지
- 배열 변수를 미리 선언한 후 값 목록들이 나중에 결정되는 상황이라면 new 연산자 사용
- 값들을 저장할 배열 미리 만들고 싶을 때
타입[] 변수 = new 타입[길이];
- new 연산자로 배열을 처음 생성할 경우 배열은 자동적으로 기본값으로 초기화
- 배열 길이 얻을 때: 배열 변수.length;
- length는 읽기 전용 필드라 값 바꿀 수 없음
- 다차원 배열
타입[][] 변수 = new 타입[행][열];
- 배열 간의 항목 값들 복사: for문, System.arraycopy()
System.arraycopy(원본 배열, 원본에서 복사 시작할 인덱스, 새 배열, 새 배열에 붙여넣을 시작 인덱스, 복사할 개수);
- 향상된 for문
1) for(타입 변수 : 배열) { ~ }
2) 반복 실행을 하기 위해 루프 카운터 변수와 증감식 사용 X
- 열거 타입: 한정된 값인 열거 상수 중에서 하나의 상수를 저장하는 타입(요일, 계절 등)
public enum Season {
SPRING, SUMMER, FALL, WINTER //열거 상수
}
Season today; //열거타입: Season, 열거 타입 변수: today
today = Season.WINTER;
- 열거 타입의 이름은 첫 글자를 대문자로 하고 나머지는 소문자, 여러 단어이면 각 단어의 첫 글자를 대문자로
- 열거 상수는 모두 대문자, 여러 단어이면 단어 사이에 _(밑줄) //열거 상수는 객체
- 반드시 "열거 타입.열거 상수" 형태
출처: 한빛미디어