java
10 posts
가비지 컬렉션(GC)의 원리와 종류

1. 가비지 컬렉션? JVM의 Heap 영역에서 사용하지 않는 객체를 삭제하는 프로세스 (참고) JVM의 메모리 구조 메소드 영역 클래스 멤버 변수의 이름, 데이터 타입, 접근 제어자 정보같은 필드 정보와 메소드의 이름, 리턴 타입, 파라미터, 접근 제어자 정보같은 메소드 정보, Type정보(Interface인지 class인지), Runtime Constant Pool(문자 상수, 타입, 필드에 대한 레퍼런스가 저장됨), static 변수, final class 변수등이 생성되는 영역. 힙 영역 new 키워드로 생성된 객체와 배열이 저장되는 영역. String constant pool : 문자열 리터럴을 저장하는 공간 (String str = “abc” 에서 “abc” 부분) 메소드 영역에 로드된 클래스만 생성이 가능하고 Garbage Collector가 참조되지 않는 메모리를 확인하고 제거하는 영역. 스택 영역 지역 변수, 파라미터, 리턴 값, 연산에 사용되는 임시 값등이 생성되…

java 객체지향 개념 시험

문제 1 객체지향 개념의 4가지 특징을 적으시오. 캡슐화 상속 다형성 추상화 문제 2 생성자를 작성할 때 지켜야 하는 조건을 적으시오. 클래스 이름과 똑같아야 함 리턴 x, void x 모든 클래스에 반드시 1개의 생성자 존재해야 함 반드시 첫줄에 다른 생성자 호출 (this()) 문제 3 오버라이딩할 때 지켜야할 3가지 조건을 적으시오. 선언부 동일 제어자 좁은쪽으로 변경 x 조상보다 많은 예외선언 x 문제 4 오버로딩할 때 지켜야하는 3가지 조건을 적으시오. 메서드 이름 같아야 함 매개변수 갯수 or 타입 달라야 함 리턴타입 상관 x 문제 5 다형성의 장점 2가지를 적으시오. 조상 참조변수를 매개변수로 다루면 자손 클래스 메서드 사용가능 하나의 배열 안에 여라 타입 자손 객체 다룰 수 있음 문제 6 static메서드가 같은 클래스의 인스턴스 변수를 사용할 수 없는 이유에 대해 적으시오. 인스턴스 변수는 인스턴스 생성시 사용가능 But Static 메서드 호출되었을 때 인스턴스 …

java MyVector 메서드 만들기 시험

컬렉션 프레임워크에서 Vector(ArrayList의 구버전) 내부 메서드가 어떻게 동작하는지 시험을 봤다. 시험 문제와 답을 정리했다. 문제 1 Object배열 objArr을 인스턴스 변수로 갖는 MyVector클래스를 선언하시오. 문제 2 MyVector클래스에 생성자 MyVector(int capacity)와 기본 생성자(capacity=16)를 추가하시오. 문제 3 MyVector클래스에 객체배열에 저장된 객체의 개수를 저장하기 위한 인스턴스 변수 size를 추가하고, 이 변수의 값을 반환하는 size()와 배열 objArr의 길이를 반환하는 capacity(), 그리고 객체배열이 비었는지 확인하는 boolean isEmpty()를 작성하시오. 문제 4 MyVector클래스의 객체배열 objArr에 객체를 추가하는 메서드 void add(Object obj)를 작성하시오. 배열은 길이를 조정하지 못하는 큰 단점을 가지고 있다. Vector는 이를 보완해서 배열 안에 객체가 …

java 지네릭스

지네릭? 뜻 ‘이름이 붙지않은’ -> 변수 타입을 미리 정하지 않은 것 특징 변수 타입을 클래스 밖에서 지정하는 것(메타몽 처럼 타입을 마음대로 정할 수 있다) 인스턴스 생성할 때 구체적인 타입 정한다(단, 참조타입만 사용가능) 장점 타입 안정성(Type safety)제공 타입체크 형변환 생략가능 사용법 지네릭 클래스 만들기 객체 생성시 타입지정 사용 컬렉션 프레임워크 + 지네릭스 컬렉션 프레임워크에서 ArrayList를 쓸 때 지네릭스와 함께 자주 사용한다 ArrayList는 모든 타입의 값을 저장할 수 있게 하기 위해서 Object 타입으로 저장된다. 따라서 출력할 때 매번 원래의 데이터 타입으로 형변환을 해줘야 하는데, 지네릭스를 사용하면 형변환 할 필요 없이 사용가능하다 와일드 카드 매개변수 타입을 지금 정하지 않겠다는 의미 위 두개의 코드가 모두 실행이 되려면 array 타입이 이어도, 여도 안된다. 자유롭게 사용하기 위해 와일드카드 사용 하지만 만 사용했을…

java 컬렉션 프레임워크

1. 컬렉션 프레임워크의 핵심 인터페이스 & 요약 컬렉션 : 데이터 그룹 프레임워크 : 표준화된 프로그래밍 방식 컬렉션 프레임워크 : 데이터 그룹을 저장하는 클래스들을 표준화한 설계 데이터를 다루는 데는 크게 3가지 타입이 존재한다. List : 순서O, 중복O ArrayList, LinkedList, Stack, Vector 등 Set : 순서X, 중복X HashSet, TreeSet 등 Map : Key와 Value의 쌍으로 이루어진 데이터집합. ex) 우편번호, Key는 중복X, Value는 중복O HashMap, TreeMap, Hashtable, Properties 등 요약 컬렉션 특징 ArrayList 배열기반. 순차적 추가삭제 빠름. 접근속도 빠름. 중간에 추가 삭제 느림. LinkedList 연결기반. 중간에 추가 삭제 빠름. 접근속도 느림. 순차적 추가삭제 상대적으로 느림. HashMap 배열과 연결이 결합된 상태. 추가, 삭제, 검색, 접근성 모두 뛰어남. 검색에…

java 객체지향 시험

문제 1. 두개의 정수 x, y를 저장하기 위한 인스턴스 변수가 선언된 Point클래스를 정의하시오 문제 2. 앞서 정의한 Point클래스를 테스트하기 위한 PointTest클래스를 작성하고, Point객체를 생성하는 코드를 작성하시오 문제 3. Point클래스에 toString()을 오버라이딩해서 x와 y의 값을 포함한 문자열을 반환하도록 하시오. PointTest클래스에서 Point객체를 생성한 다음, x와 y의 값을 3과 5로 초기화하시오. 그리고 toString()을 호출해서 x와 y의 값을 출력하시오. 문제 4. Point클래스에 x, y를 매개변수로 하는 생성자와 기본생성자(x, y를 모두 1로 초기화)를 추가하시오. 그 다음 PointTest클래스에서 테스트 하시오. 문제 5. Point클래스에 두 점 사이의 거리를 double타입의 값으로 계산해서 반환하는 getDistance(Point p)를 추가하시오. 문제 6. Point클래스에 두 점 사이의 거리를 doubl…

java 객체지향 한장정리 (2)

1. 상속 1) 상속이란? 기존의 클래스를 재사용해서 새로운 클래스를 작성 조상과 자손으로 관계맺음 자손은 조상의 모든 멤버 상속받음 사용법 2) 상속관계 공통부분 조상에서, 개별부분 자손에서 관리 3) 포함관계 한 클래스의 멤버 변수로 다른 클래스 선언 4) 단일상속 Java는 단일상속만을 허용 5) Object 클래스 조상없는 클래스는 object클래스 상속 2. 오버라이딩 1) 오버라이딩이란? 조상메서드를 자손에 맞게 변경(덮어쓰기) 2) 조건 선언부가 같아야 함 접근제어자 좁은 범위로 변경 x (public->private x) 조상보다 많은 수의 예외 x 내부만 변경 3) 오버로딩 vs 오버라이딩 오버로딩 새로운 메서드 정의(new) 상속과 관련 x 오버라이딩 상속받은 메서드의 내용변경(change) 4) super 참조변수 this vs super this: 인스턴스 자신의 참조변수 super: 조상의 참조변수 super() 조상의 생성자 자손 인스턴스 생성시, 자손+조…

java 객체지향 한장정리 (1)

1. 객체 변수 + 메서드의 집합 클래스라는 설계도로 만든 ‘인스턴스’ 2. 클래스와 객체 클래스 : 멤버변수 + 메서드로 이루어진 객체생성을 위한 ‘설계도’ 객체 : 클래스를 통해 만들어진 실체 ex) 클래스 - Tv설명서 / 객체 - Tv 객체 생성방법 3. 변수와 메서드 1) 변수 종류 iv는 인스턴스 생성시 생성된다(개별) cv는 메서드 내부에서만 사용가능 (초기화 필수) 2) 클래스변수와 인스턴스 변수 cv : 공유속성 iv : 개별속성 3) 메서드 재사용성, 중복코드제거 구조 : 선언부 + 구현부 특징 리턴값 없으면 void 반환값 반환타입 일치해야 함 4) JVM 메모리 구조 Method area : 클래스 정보 저장 Call stack : 메서드 실행시 차례로 실행 Heap : 인스턴스 생성시 저장 call stack 쌓인 순서와 반대로 실행 하나의 메서드만 실행 실행 메서드 바로 밑이 호출 메서드 5) 기본형 매개변수와 참조형 매개변수 기본형 (read only)…