기본 • 참조 자료형
- 기본 자료형 : 실제 값을 저장하며, 모든 값 타입은 메모리 스택에 저장됨
- 참조 자료형 : 주소를 저장하고 이를 참조해서 값을 가져옴
- 코드 영역 : 실행 할 프로그램의 코드가 있는 공간
- 데이터 영역 : 프로그램의 데이터를 저장할 공간 (전역, static 변수는 이곳에 저장)
- 전역변수와 static 변수는 이곳에 저장됨
- 힙 영역 : 사용자에 의해 할당 및 해제되는 메모리 영역으로 모든 객체는 힙 영역에 저장
- 힙 영역에 있는 오브젝트들을 가리키는 포인터 변수는 스택 영역에 저장
- 스택 영역과 달리 객체의 호출이 끝나더라도 삭제하지 않음
- 삭제되지 않은 객체들은 가비지 컬렉터에 의해 정리됨
- 스택 영역 : 함수 호출 시 생성, 호출 종료 시 삭제됨
- 기본 자료형은 스택 영역에 값을 저장함
- 지역변수는 이곳에 저장됨
문자열
1
String a = "123";
- 문자열 리터럴 방법으로 생성하면 상수 풀에 문자열이 저장됨
- 같은 문자를 할당하면 동일한 주소값을 가짐
1
String b = new String("abc");
- 인스턴스 생성 방식으로 생성하면 인스턴스가 힙 메모리에 저장됨
- 문자열 리터럴 방법과는 달리 문자열이 같더라도 다른 참조 값을 가짐
문자열의 여러가지 메서드
1 2 3 4
String example = "1234567"; System.out.println(example.equals("123")); // 거짓 System.out.println(example.charAt(1)); // 2 System.out.println(example.substring(1, 4)); // 234
배열
- 배열은 참조 변수에 속하므로 스택 영역에 저장
- 스택 영역에 저장된 주소값은 힙 영역에 저장된 실제 값을 참조함
== 연산자와 equals()
- == 연산자는 두 문자열이 메모리 상의 동일한 객체인지 비교함
- equals()는 문자열이 같은지 비교함
ArrayList
- 객체 배열을 구현한 클래스로 배열의 길이가 가변적인 특징을 갖음
- 데이터 사이에 빈 공간을 허용하지 않음
- ‘ArrayList<타입> 객체명 = new ArrayList<>()’ 으로 선언
- 제네릭스 : 자료형을 미리 명시해줌으로써 형 변환을 하게 해줌
Wrapper 클래스
- Wrapper 클래스는 기본 자료형을 객체로 다루기 위해 사용하는 클래스
- 기본타입을 객체화하는 것을 박싱, 객체를 기본타입화 하는 것을 언박싱이라 함
static 변수
- static 변수는 클래스에 고정된 멤버변수로 객체를 생성할 필요 없이 바로 접근이 가능함
Call By Value, Call By Reference
Call By Value
- 메서드 호출 시 인자 값이 복사본으로 전달됨
- 메서드 내에서 인자 값을 변경해도 호출된 측의 변수에 영향을 미치지 않음
Call By Reference
- 객체의 주소값이 인자 값으로 전달됨
- 메서드의 인자값이 변경되면 호출된 측의 변수에도 영향을 미침
Comments powered by Disqus.