'자바기초'에 해당되는 글 2건

  1. 2010.02.19 소설같은 자바 훑어보기 2권!!
  2. 2010.02.18 소설같은 자바 훑어보기 1권!!

□ 6장 배열, 제네릭, 컬렉션
  ■ 배열(Array) 클래스 : 단순 용량적인 측면에서의 데이터 저장공간
     ● 단순 저장공간의 문제 : 자료를 처리하는 방식, 동적인 공간의 문제, 빠른 검색의 문제
  ■  배열
     ● 종류 : 기본 데이터 타입 배열, 객체 배열.
         - 데이터 타입 배열 : 배열생성과 동시에 메모리 생성
         - 객체 배열 : 객체변수의 이름만 생성되고, 메모리는 생성되지 않는다.
     ● 특징 : 같은 데이터 타입의 변수를 한꺼번에 여러개 생성.
     ● 검색 : 첨자를 통해서 배열 내에 존재하는 모든 변수를 검색
     ● 단점 : 배열의 크기를 변경할 수 없다.
  ■ 컬렉션, 맵 : 자료구조적인 측면에서의 데이터 저장공간, 배열의 발전된 구조, 인터페이스이다.
     ● 컬렉션 : 집합적인 저장공간
객체를 삽입 삭제하는 추상 메서드
boolean add(E o); 
boolean remove(Object o);
데이터 확인을 위한 추상 메서드
boolean isEmpty();  --- 비어있는지 확인
boolean contains(Object o); --- 특정 객체가 포함되어 잇는지 확인
int size(); --- 포함된 객체의 수를 리턴
데이터를 배열로 얻기 위한 추상 메서드
T[] toArray(); --- 객체들을 배열 형태로 리턴
         - List : 순서있다, 중복허용
         - Set : 수학적인 집합개념, 중복허용안함

     ● 맵 : 검색적인 저장공간, 데이터 삽입시 Key와 Value의 형태로 삽입, Key를 이용하여 Value를 검색
Object put(Object key, Object value); --- 데이터 삽입
Object remove(Object key); --- 데이터를 제거
Object get(Object key); --- 데이터를 검색
V put(K key, V value); --- 데이터 삽입
V remove(Object key); --- 데이터 제거
V get(Object key); --- 데이터 검색
         - HashMap : 키와 값을 이용해서 데이터 관리, 동기화가 보장되지 않는다.
         - Hashtable : 키와 값을 이용해서 데이터 관리, 동기화가 보장된다.
         - TreeMap : Map계열이면서 검색이 가능한 클래스

     ● Sotred 계열 : Set과 Map인터페이스를 상속바당 정렬 기능이 추가
         - SotredSet : Set 인터페이스를 상속
            * TreesSet : Set계열이면서 검색이 가능한 클래스, 데이터들이 자동으로 오름차순
         - SotredMap : Map 인터페이스를 상속
            * TreeMap : Key, Value로 데이터 관리, Key 기준으로 오름차순

  ■ 배열과 컬렉션,맵의 차이점 : 배열은 크기를 동적으로 늘릴수 없다. 하지만 컬렉션이나 맵계열의 클래스는 동적으로
                                             메모리를 확장할 수 있다

  ■ ArrayList와 HashSet
     ● 공통점 : 객체의 저장공간, 동기화 보장하지 않는다.
     ● ArrayList : List 인터페이스를 구현하는 클래스, 순서의 개념, 데이터 중복 허용
       - Vector와 공통점 : 순서가 있는 collection, List인터페이스 구현, 데이터 중복 허용
                       차이점 : 자동으로 동기화
     ● HashSet : Set 인터페이스를 구현하는 클래스, 집합의 개념, 데이터 중복 허용하지 않음
  ■ 제네릭 : 클래스에 사용할 타입을 클래스를 사용할 때 지정한 후 사용하는 기술
     ● 자바 코드내에서 Top<String>형 클래스의 사용
Top<String> t = new Top<String>();
t.setDate(str);
String str2 = t.getData();
     ● 자바 컴파일러가 제네릭을 처리하는 방식
Top t = new Top();
t.setData(str);
String str2 = (String)t.getData();
  ■ Stack : 후입선출 컬렉션 클래스
     ● push() 메서드 : Stack의 맨 위에 요소를 삽입
     ● pop() 메서드 : Stack의 맨 위에 있는 요소를 삭제하고 데이터를 반환
     ● peek() 메서드 : Stack의 맨 위에 있는 요소를 제거하지 않고 반환
  ■ AutoBoxing : 기본 데이터 타입을 래퍼(Wrapper) 클래스형의 객체로 자동으로 변환해주는 기능
  ■ Enumeration과 Iterator : 컬렉션 내의 데이터에 접근하기 위한 방법
     - 특징 : 모든 데이터에 접근가능
     - 차이 : Itorator는 Fail-Fast방식을 지원한다
     ● Enumeration 메서드 : hasMoreElements() //데이터가 있는지 확인, nextElement(); //다음 위치로 이동
     ● Iterator 메서드 : hasNext(); //데이터가 있는지 확인, next(); //데이터를 얻어내면서 다음 위치로 이동
□ 7장 Exception, 문자열, 자바5.0
  ■ 문자열
     ● 문자상수의 집합, 이중 따음표사용, String 클래스의 객체
     ● length(), concat(), equals(), indexOf(), lastIndexOf(), substring(), replace()
  ■ StringBuffer 클래스 : 동기화를 지원한다.
     ● 수정이 가능한 클래스, 객체는 문자열의 추가, 삭제, 수정, 검색등의 기능을 가지고 있다.
     ● StringBuilder와 차이 : 동기화를 지원하지 않는다.
  ■ Formatting 클래스
  ■ 자바의 상수
     ● 클래스에서 상수 선언 : final 키워드를 상수를 선언, 단한번 초기화, static final로 선언하면 전역적인 상수
     ● 인터페이스에서의 상수선언 : 멤버변수는 상수만 가능, 멤버변수 선언하면 자동으로 public static final이 된다.
  ■ enum(열거형) : 열거형으로 변수를 만들어도 이 변수는 열거형을 선언할 때 명시한 값을 넣을 수 있다.
  ■ Varargs(가변인수) : 필요에따라 매겨변수를 가변적으로 조정할 수 있는 기술.
□ 8장 자바 Thread
  ■ 프로세스와 스레드 : 하나의 프로세스 내에는 여러개의 스레드가 존재할 수 있다.
     ● 프로세스(process) : 하나의 프로그램은 하나의 프로세스에 해당.
     ● 멀티 태스킹(Multi-Tasking) : 운영체제 차원의 프로세스 관리
     ● 스레드(Thread)
         - 하나의 프로그램 내에서 실행되는 메서드
         - 같은 순간에 두 개의 메서드가 동시에 실행되면 두 개의 스레드가 동작하는 것이다. ---> 시퀀셜하게 동작한다.
         * 주의사항 : 우선권, 동기화(공유자원을 상대로 순서대로 작업이 이루어지는 것)
         - 스레드 상태
시작 상태(Start)
동작할 수 있는 상태(Runnable) : 스레드 실행, 스레드가 여러 개 존재할 수 있다.
동작 상태(Run) : Runnable상태에서만 Run 상태가 될 수 있다, 한순간 단 하나의 스레드만 Run 상태가 된다.
대기 상태(NotRunnable) : Run 상태로 진입할 수 없음, sleep()-일정시간, wait()과 notify()-수동으로 제어
종료 상태(Dead) : 스레드의 종료
  ■ 동기화(synchronized) : 줄서서 순서대로 공유자원 사용하기
      - 블록형태로 사용가능 
  ■ 스트림(Stream) : 자료 입출력을 도와주는 중간 매개체
File 입력 스트림의 연결과 작업
FileInputStream fis = new FileInputStream(파일);    //fis.read()를 이용해서 데이터 읽기
File 출력 스트림의 연결과 작업
FileOutputStream fos = new FileOutputStream(파일);    //fos.write()를 이용해서 데이터 쓰기
     ● 스트림이란 빨대다
  ■ File 클래스
     - File f = new File("FileMain.java);
 f.isFile() : 파일인지 아닌지 f.isDirectory() : 디렉터리인지 아닌지  f.isHidden() : 숨김 파일인지 
 f.lastModified() : 마지막 수정 날짜 f.canRead() : 읽기속성가진 파일  f.canWrite() : 쓰기속성가진 파일 
 f.getPath() : 상대 경로  f.getAbsolutePath() : 절대 경로  f.getName() : 디렉터리 또는 파일이름 
 f.toURL() : URL형식의 경로 f.exists() : 파일이 존재하는지  f.length() : 파일의 길이 
  ■ File 스트림
     ● 파일 입출력을 위한 스트림
         - 바이트 단위 : FileInputStream, FileOutputStream
         - 문자 단위 : FileReader, FileWriter
     ● RandomAccessFile : 데이터를 랜덤하게 접근
     ● Memory 스트림 : 목표지점 자체가 메모리, 배열과 문자열 등

'자바' 카테고리의 다른 글

소설같은 자바 훑어보기 3권!!  (0) 2010.02.22
소설같은 자바 훑어보기 1권!!  (0) 2010.02.18
Posted by 미스터네오
,

□ 1장 언어의 기본
 ■ 자바를 배우려면 클래스를 알아야 한다. 
 ■ 클래스를 정복하는 것이 자바의 최종 목표이다.
 ■ 데이터 타입 : 메모리를 생성하기 위한 도구
 ■ 기본 데이터 타입 : byte(1), char(2), int(4), long(8), float(4), double(8), boolean(1)
    ● 분류
       : 정수형 - byte, char, int, long double
       실수형 - float, boolean
 ■ 자바에서는 모든 데이터 타입이 signed 계열이다.  signed 계열 = 음수와 양수를 함께 표현
 ■ 데이터 타입의 목적
    1) 생성할 메모리의 크기를 지정하기 위한 목적으로 사용.
    2) 메모리의 형태(Type)를 지정하는 목적으로 사용.(메모리의 형태란 비트의 조합을 의미)
 ■ 데이터 타입의 최종 정의
    ● 메모리의 크기(Size)와 형태(Type)를 지정하기 위한 도구
 ■ 자바에는 포인터가 없어서 선언된 변수의 정확한 주소를 확인할 방법이 없다.
 ■ 변수 : 데이터 타입이 명시된 형태의 데이터를 담을 수 있는 메모리
 ■ 변수의 목적 : 데이터를 보관하기 위해서
 ■ 상수 : 데이터 그 자체를 말하여 바꿀 수 없는 데이터를 말한다. 데이터 그 자체를 상수라고 한다.
 ■ 데이터 할당 : 변수에 값을 넣는 것.
 ■ 데이터 할당의 법칙 : 변수에 상수가 존재해도 다른것을 할당하면 마지막에 넣은것이 최종적으로 할당


□ 2장 클래스의 기본
 ■ 자바에는 구조체가 없다. 구조체에서 발전된 개념이 클래스
 ■ 자바의 클래스 개념에서는 반드시 new 연산자로 메모리를 생성하는 부분이 나와야 한다.
 ■ 구조체와 클래스의 정의 : 구조체와 클래스는 데이터 타입 생성기이다.
 ■ 클래스의 역할
     ● Person(인간) 클래스 생성
class Person{
int age;
int height;
int weight;
}
     ● Person 클래스로 사람 생성
Person Hong = new Person();
Person Choi = new Person();
     ● Hong의 정보입력
Hong.age = 20;
Hong.height = 170;
Hong.weight = 60;
     ● Choi의 정보입력
Hong.age = 26;
Hong.height = 183;
Hong.weight = 75;
    ● Person Choi의 메모리는
     □□□□ □□□□ □□□□


□ 3장 클래스
  ■ 클래스의 구성요소
    ● 변수
       * 멤버변수 : 클래스꺼, 자동 초기화.
       * 지역변수 : 메소드꺼, 초기회 해줘야함.
    ● 메서드
      *일만하는 메서드 : void형태 리턴값 없음
       * 일을 한 후 값을 리턴하는 메서드 : 타입 
       → 리턴은 메서드의 종료를 의미한다.
  ■ 메서드는 변수이다.
  ■ 클래스 내의 메서드
    ● 보통 클래스 내에 존재하는 변수나 메서드를 클래스의 멤버라고 부른다.
  ■ 클래스 = 데이터 + 메서드
                = 구조체 + 메서드
  ■ 접근제어 : 메모리를 보유한 객체를 이용해서 멤버에 점을 찍고 접근할 수 있는지 없는지 결정
    ● 이런식의 접근제어를 자료의 은폐화 라고 표현
    ● public(제한없음) > protected(상속관계) > default(같은 패키지내) > private(같은 클래스내)
  ■ 객체의 메모리 생성
    ● 클래스 데이터 타입으로 변수를 선언, 컴퓨터 내의 메모리 속에 데이터 타입에 해당하는 만큼의 메모리를 확보하는 일
        (위의 인간(Person) 클래스에서 사람 객체(Choi) 생성 참조)
    ● 자바에서는 객체 변수를 참조변수라고 말한다.
    ● 참조값이란 객체의 메모리를 생성했을때 메모리와 연결된 유일한 숫자값.
    ● 객체 변수는 참조변수이다.
    ● 레퍼런스는 주소의 참조값


□ 4장 자바의 기본
  ■ Static
    ● 객체를 아무리 많이 만들더라도 스태틱 변수는 오직 하나의 메모리만 생성
    ● 객체를 생성하기 전에 스태틱 멤버에 접근할 수 있다.
    ● 객체 생성 이전의 스태틱의 메모리가 생성된다.
    ● 스태틱 멤버 메서드 내에 일반 멤버 변수를 사용할 수 없다.
  ■ Stack 메모리
    ● 프로그램을 실행하는데 필요한 메모리 공간
    ● 메서드가 호출되는데 필요한 메모리
        - 지역변수(Local Variable), 매개변수(Paremeter), 리턴값이 저장될 곳(Return Value)
    ● 스택 프레임
        - 하나의 메서드를 호출하는데 필요한 메모리 덩어리
        - 메서드 하나당 하나의 스택 프레임이 존재
    ● 자바의 메모리 : 스택, 힙
    ● 가비지 콜렉터 : 자바의 메모리 관리자 역할(힙에 생성되는 객체의 메모리)
  ■ 오버로딩
    ● 메소드의 이름은 같은데, 인수의 갯수나 Type 이 다른 형태의 메소드로써 설계, 사용의 편의성을 위해서 존재한다.
  ■ 생성자
    ● 객체를 만들기 위해서 호출되는 메소드 형태의 것(new 와 함께 호출하면 객체 생성)
  ■ 상속
    ● 하위 클래스가 상위 클래스를 상속받았을때, 하귀 클래스는 상위 클래스의 모든 권한을 갖게 된다.
    ● 생성자는 상속되지 않는다. 상→하 순위로 생성자 호출
    ● Virtual메소드 : 아버지의 이름으로 아들의 메서드를 호출하는 기법
    ● this : 자기자신
    ● super : 상위 클래스


□ 5장 다형성
  ■ 다형성 : 하나로 여러가지 일을 하는것
    ● Abstract
        - 추상클래스 : 몸체없는 메서드({})를 가지고 있는 클래스, 클래스 선언부 앞에 abstract를 붙여준다.
        - 추상메서드 : 몸체없는 메서드({}), 메서드 선언부 앞에 abstract를 붙여준다.
    ● Interface : 골격만 가지고 있는 클래스, 몸체없는 메서드로만 이루어진 클래스
    ● Overriding
    ● Upcasting : 하위 클래스의 객체가 상위 클래스의 형으로 캐스팅 되는 것.
    ● Downcasting : 업캐스팅한 객체를 다시 되돌리는 것.
        - 직렬화 : 객제의 메모리를 통째로 저장할 수 있는 기법
  ■ 다중상속 : 자바는 단일 상속을 기본


'자바' 카테고리의 다른 글

소설같은 자바 훑어보기 3권!!  (0) 2010.02.22
소설같은 자바 훑어보기 2권!!  (0) 2010.02.19
Posted by 미스터네오
,