본문 바로가기

JAVA

(30)
자바 / OOP / 객체 / 클래스 / 인스턴스 / JVM 메모리구조 자바 제임스 고슬링 개발 객체지향 언어 OS에 붙어서 실행되는 것이 아니라 JVM 위에서 실행되기 때문에 OS의 제약이 없음 JVM이 OS에 맞게 알아서 변환해서 전달해줌 객체지향 언어 (Object Oriented Programing) 객체 단위로 쪼개서 프로그래밍 하는 것 -> 코드의 재사용성 + 중복 제거 but, 처리 속도가 상대적으로 느리다는 점과 설계 시에 많은 시간과 노력이 필요하다는 단점이 있음 - 캡슐화 비슷한 속성과 기능을 하나의 클래스로 묶은 것 그리고 클래스 내부를 외부에 공개하지 않음으로써 이 클래스를 맘대로 수정하지 못하게 함 - 정보 은닉 객체의 멤버 변수는 private로 설정하여 외부에서 getter/setter로만 접근 가능하도록 함 - 객체의 무결성 보장 - 상속 부모 ..
오류(error)와 예외(exception) 에러 / 오류 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우, 이러한 결과를 초래하는 원인을 일컫는 말 발생 시점에 따른 에러의 종류 1. 컴파일 에러 컴파일 시에 발생하는 에러 컴파일러는 언어를 기계어로 번역하는데 그 과정에서 생긴 에러를 말함 이클립스에 뜨는 빨간 줄 같은 것 컴파일이 성공적으로 마치고 나면 class 파일 생성되고, 생성된 class 파일 실행 ex) 오타, 구문 체크, 자료형 체크, 번역, 최적화, 생략된 코드 추가 2. 런타임 에러 프로그램 실행 시에 발생하는 에러 컴파일 에러가 발생하지 않아도 런타임 에러가 발생할 수 있다 -> 이를 방지하기 위해 대비가 필요 ex) JVM 단계에서의 에러 3. 논리적 에러 실행은 되지만, 의도와 다르게 동작..
Iterator 인터페이스 Iterator, ListIterator, Enumeration 컬렉션(List, Set, Map)에 저장된 요소를 접근하는데 사용하는 인터페이스 Iterator Enumeration의 최신 버전으로 이 인터페이스를 사용하기를 권장 컬렉션의 요소를 읽어오는 방법을 표준화했기 때문에 코드의 재사용성 극대화 ListIterator Iterator에 양방향 조회 기능을 추가 (List를 구현한 경우에만 사용 가능) Enumeration Iterator의 구버전 iterator() 메서드 Collection 인터페이스에 정의된 메서드 Collection 인터페이스의 자손인 List, Set에도 iterator() 메서드가 포함되어 있다. boolean hasNext() 메서드 컬렉션 클래스에서 읽어올 요소가 남..
ArrayList ArrayList List 인터페이스를 구현한다. 데이터의 순서 유지, 중복을 허용한다. Vector 클래스와 동일하지만 오래된 버전이므로 ArrayList를 쓰면 된다. Object[] 배열을 이용해서 데이터를 순차적으로 저장한다. 크기를 변경할 수 없다는 단점 때문에 배열에 더 이상 저장할 공간이 없다면 보다 큰 새로운 배열을 생성해서 기존의 배열에 저장된 내용을 새로운 배열로 복사한 다음 저장한다. 또 한 가지 단점이 있는데 비순차적인 데이터의 추가, 삭제에 많은 시간이 걸린다. 데이터를 원하는 위치에 추가하거나 처음 혹은 중간값들을 삭제하기 위해 다른 데이터를 옮기는 과정이 필요하다. 대신에 끝에 추가, 끝부터 삭제와 같은 작업은 빠르기 때문에 아래의 예제에서도 끝에 있는 값부터 삭제하는 것을 볼..
컬렉션 프레임워크와 핵심 인터페이스 컬렉션 여러 객체(데이터)를 모아 놓은 것 프레임워크 표준화, 정형화된 체계적인 프로그래밍 방식 컬렉션 프레임워크 여러 객체(데이터)를 저장하는 클래스들을 표준화한 설계 즉, 엄청 많은 데이터를 다룰 수 있게 제공하는 다양한 기능이라고 생각하자. cf) 라이브러리 공통으로 사용될만한 유용한 기능을 모듈화하여 제공. 남이 만든걸 가져다 쓰는 정도. 컬렉션 프레임워크에는 세 가지 핵심 인터페이스가 존재한다. List (순서 O, 중복 O) 순서가 있는 데이터의 집합 / 데이터의 중복 허용 예를 들어 식당 대기자 명단의 경우를 생각해보자. 식당의 waiting list에는 당연히 먼저 온 사람부터 들여보내야하니 순서가 있다. 대신에 대기자의 이름이 '홍길동'으로 같을 수는 있다. 구현 클래스로는 ArrayLi..
배열 int[] score = new int[5] 변수 score는 배열을 다루는데 필요한 참조변수일 뿐, 실질적인 값을 저장하기 위한 공간은 score[0], score[1], score[2], score[3], score[4] 이다. 배열 선언과 생성 int[] score; String[] name; int[] score = new int[5]; 배열의 초기화 int[] score = { 50, 60, 70, 80, 90, 100 }; 배열의 인덱스 배열의 요소마다 붙여진 일련번호 score[3] -> score[3] 자체는 배열의 요소 / 3은 배열의 인덱스 배열의 길이 배열이름.length -> score.length 배열의 출력 Arrays.toString(배열이름) 배열의 모든 요소를 [a, b, ..
break문과 continue문 import java.util.Scanner; public class ExBreakCon { public static void main(String[] args) { int menu = 0; Scanner scan = new Scanner(System.in); while(true) { System.out.println("메뉴를 선택하세요."); System.out.print("1)회원가입 "); System.out.print("2)회원정보수정 "); System.out.print("3)회원탈퇴 "); System.out.print("4)종료 "); String tmp = scan.nextLine(); menu = Integer.parseInt(tmp); if(menu == 4) { System.out.p..
이중 for문 / 향상된 for문 이중 for문 예제 향상된 for문 예제 배열과 컬렉션의 목록을 꺼내오기 위해 사용하는 for문 지정해주지 않아도 항목의 개수만큼 반복하고 자동으로 for문을 빠져나옴