it공부/Java

JAVA 개념 공부 요점정리( 2 )

콩쨈 2020. 7. 5. 21:10
반응형

 


1. 배열(array)이란?
  - 같은 타입의 여러변수를 하나의 묶음으로 다루는 것.
  
2. 배열의 선언
  - 원하는 타입의 변수를 선언하고 변수 또는 타입에 배열임을 의미하는 []를 붙여주면 된다.
    ex) 변수타입[] 변수명;
         변수타입 변수명[];
         
3. 배열의 생성
  - 배열을 선언한 다음에는 배열을 생성해야 된다.
  - 배열을 생성할때는 연산자 new와 함께 배열의 타입과 크기를 지정해 주어야 한다.
    ex) int[] score = new int[3];
        int[] score = new int[]{10,20,30};
        int[] score = {10,20,30};
1. 정렬(sort)
  - 어떤 데이터를 빠르고 쉽게 찾기 위해 일정한 순서대로 데이터를 가지런히 나열하는 작업
  - 버블정렬, 선택정렬, 삽입정렬
  
2. 버블정렬
  - 인접한 데이터간에 교환이 계속해서 일어나면서 정렬이 이루어진다.
  - 회전이 진행됨에 따라 가장 큰수가 가장 뒤에 확정된다.

2. 선택정렬(select sort)
  - 정렬을 대상으로 최소값을 찾아서 기준과 교체하는 방식이다.



1. 다차원 배열
  - 자바에서는 1차원 배열뿐만 아니라 2차원 이상의 다차원 배열도 허용한다.
  - 선언
    int[][] arr;
    int[] arr[];
    int arr[][];
    



1. 상속(~은 ~이다.)
  - 기존의 클래스를 재사용하여 새로운 클래스를 작성한다.
  - 적은양의 코드로 새로운 클래스를 작성할수 있다.
  - 새로작성하고자 하는 클래스의 뒤에 상속받고자 하는 클래스의 이름을
      키워드 'extends'와 함께 써주기만 하면된다.
      
      class Ambulance extends Car{
      
      }
      
  - 상속해주는 클래스를 '조상클래스', 상속받는 클래스는 '자손클래스'라 한다.
    : 조상클래스 - 부모클래스, 상위클래스, 기반클래스
    : 자손클래스 - 자식클래스, 하위클래스, 파생된클래스

  - 멤버만 상속된다.
  - 자손클래스의 멤버의 개수는 조상클래스보다 항상 같거나 많다.
  
2. 포함(~은 ~을 포함하고 있다.)
  - 상속이외에 클래스를 재사용하는 방법이다.
  - 한 클래스의 멤버변수로 다른 클래스를 선언하는 방법이다.

3. 단일상속
  - 자바에서는 단일상속(두개이상은 불가능)만 가능하다.
    class TVCR extends Tv, VCR{
    
    }
  - TV와 VCR에 동일명의 멤버가 있다면 어떤것을 상속받을지 결정할수 없다.
  - VCR의 method명을 변경한다면 VCR method를 호출하던 모든부분을 수정해주어야 한다.
  - 클래스간의 관계가 보다 명확해지고 코드를 더욱 신뢰할수 있게된다.
  
4. Object클래스 (모든 클래스의 조상)
  - 모든 클래스 상속계층도의 가장 위에 위치하는 조상클래스이다.
  - 다른클래스로부터 상속받지 않는 모든 클래스는 Object클래스를 상속 받는다. 
    class A extends Object{
    
    }
  - 모든 클래스는 Object클래스를 상속받는다.
  - toString(), .eqals()
  
5. 오버라이드(overriding)
  - 조상클래스로부터 상속받은 메서드를 재정의하는 것.
  - 오버라이딩이 성립하기 위한 조건 : 선언부가 동일해야 한다.
    : 자손클래스에서 오버라이딩하는 메서드는 조상클래스의
      메서드의 명칭은 같아야 한다.
      매개변수의 개수와 타입이 같아야 한다.
      반환타입이 같아야 한다.
      
      접근제어자를 조상클래스의 범위보다 좁은범위로 설정할 수 없다.
      예외는 조상클래스의 메서드보다 많이 선언할수 없다.
      클래스메서드를 인스턴스 메서드로 또는 그반대로 변경할 수 없다.
      
      public static void method() throws SQLException{
      
      }
      
6. super.
  - this.  지역변수와 인스턴스변수의 명칭이 같을때 구분하기 위해 사용
  - super. 자손의 멤버와 부모의 멤버의 명칭이 같을때 구분하기 위해 사용
  
7. super()
  - this() : 같은 클래스내의 다른생성자를 호출할때 사용
  - super(): 부모클래스의 생성자를 호출할때 사용한다.
  
8. 제어자
  - 클래스, 메서드, 변수의 선언부에 사용된다.
  - 접근제어자와 그외 제어자
  - 접근제어자 : public, protected, default, private
    그외제어자 : static, final, abstract, native...
  - 접근제어자를 가장 왼쪽에 많이 둔다.
  
  - static(클래스의, 공통의)
    : 멤버변수, 메서드, 초기화블럭에 사용가능
    : 클래스변수
      모든인스턴스에서 공통적으로 사용
      인스턴스 생성 없이 '클래스명.변수명'으로 호출할수 있다.
      클래스가 메모리에 로드될때 같이 생성된다.
    : 클래스메서드
      클래스메서드 내에서는 인스턴스 멤버를 사용할 수 없다.
      
  - final(마지막의, 변경할수 없는)
    : 변수에 사용시 값을 변경할수 없는 상수가 된다.
    : 메서드에 사용시 오버라이드 할수 없다.
    : 클래스에 사용시 부모클래스가 될수 없다.
    
  - abstract(추상의, 미완성의)
    : 메서드와 클래스에만 사용가능
   



9. 접근제어자
  - public : 접근제한이 없다.
  - protected : 같은패키지 + 다른패키지의 자손클래스
  - default : 같은 패키지 내에서 사용가능
  - private : 같은 클래스내에서만 사용가능
  
  - 클래스에는 public, default
  
10. 캡슐화
  - 접근제어자를 사용하는 이유
    : 외부로부터 데이터를 보호하기 위해
    : 외부에는 불필요한, 내부적으로 사용되는 부분을 감추기 위해 
    
11. 생성자의 접근제어자
  - 인스턴스의 생성을 제한할 수 있다.
  - 생성자의 접근제어자를 private으로 지정
    : 외부에서는 생성자에 접근할수 없으므로 인스턴스를 생성할수 없다.
    : 다른클래스의 조상이 될수 없다. 
    : final을 붙여서 상속할수 없는 클래스임을 알리는 것이 좋다.
  
12. 다형성 (polymorphism)
  - 여러가지 형태를 가질수 있는 능력
  - 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있다.
  - 부모타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있다.
    자손타입의 참조변수로 부모타입의 인스턴스를 참조할 수 없다.
    
13. 참조변수의 형변환
  - 서로 상속관계에 있는 클래스만 형변환이 가능하다.
  - 자손타입 -> 부모타입(up-casting) => 형변환 생략 가능
     부모타입 -> 자손타입(down-casting)=> 형변환 생략 불가
     
14. instanceof
  - 참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 사용
  - 결과가 true인 경우 참조변수가 검사한 타입으로 형변환이 가능하다.
  - 클래스메서드는 클래스변수처럼 참조변수의 타입에 영향을 받는다.
  - 참조변수의 타입에 영향을 받지 않는 것은 인스턴스메서드 뿐이다.
        
15. 매개변수의 다형성
  - 참조변수의 다형적인 특징은 메서드의 메게변수에도 적용된다.
  
16. 여러가지 객체배열 - Vector
  - 배열을 사용할경우 전체 크기를 한번 정하면 확장할수 없다.
     이를 Vector클래스를 이용하여 해결할 수 있다.
  - 동적으로 크기가 관리되는 객체 배열 이라고 할수 있다.
  
  Vector() : 10개의 객체를 저장할수 있는 Vector인스턴스를 생성한다.
  add()    : Vector에 객체를 추가한다.
  remove() : 객체를 하나를 삭제한다.
  size()   : Vector에 들어있는 객체의 수량
  isEmpty(): Vector가 비어있는 검사한다.
  get(int index):index번째 방의 객체를 반환한다. 

17. 추상클래스(abstract class)
  - 추상메서드
    : 메서드는 선언부와 구현부로 구성되어 있다.
    : 선언부만 작성되고 구현부는 작성되지 않을 메서드를 추상메서드라 한다.
    
    abstract 리턴타입 메서드명();
    
  - 추상클래스 : 추상메서드를 포함하고 있는 클래스는 추상 클래스가 된다.
  
  - 추상클래스를 상속받은 자손 클래스는 추상클래스가 되어야 한다.
    상속받은 추상메서드를 override통하여 구현부를 작성한다면 일반 클래스가 된다.
      
18. 인터페이스( interface )
  - 일종의 추상클래스이지만 추상메서드와 상수만을 멤버로 가진다.
  - 인터페이스의 작성
    interface 인터페이스명{
     public static final 변수타입 변수명 = 값;
     public abstract 반환타입 메서드명(변수타입 변수명...);
    }
    
    : 모든 멤버변수는 public static final이어야 한다. 생략가능
    : 모든 메서드는 public abstract이어야 한다. 생략가능
    
  - 인터페이스의 상속
    : 인터페이스는 인터페이스만 상속이 가능하다.
      ( 인터페이스가 클래스를 상속받으면 인터페이스가 아니게 된다.)
    : 클래스와 달리 다중상속이 가능하다.
    : 인터페이스는 클래스와 달리 Object와 같은 최고 조상은 없다.
    
  - 인터페이스의 구현
    : 자체로는 인스턴스를 생성할수 없다.
    : 인터페이스에 정의된 추상메서드의 몸통을 만들어주는 클래스가 작성되어야 한다. 
    : 클래스의 확장(extends), 인터페이스 구현(implements)
    : 인터페이스의 일부 메서드만 구현하였다면 해당 클래스는 추상클래스가 되어야 한다.
    : ~able (~을 할수 있는) Movable
    IMember, IMemberImpl
   



  - 인터페이스를 이용한 다형성
    : 인터페이스타입의 참조변수로 이를 구현한 클래스의 인스턴스를 참조할수 있다.
    
  - 인터페이스의 장점
    : 개발시간을 단축할수 있다.
    : 표준화가 가능하다.
    : 서로 관계가 없는 클래스들에게 관계를 맺어 줄 수 있다.
    : 독립적인 프로그래밍이 가능하다.
    : 예제 7-26
    
  - 인터페이스의 이해
    : 클래스를 사용하는쪽(user)과 클래스를 제공하는 쪽(provider)이 있다.
    : 메서드를 사용하는 쪽에서는 메서드의 선언부만 알면된다.
    A - I - B
  
19. 내부 클래스(inner class)
  - 클래스 내에 선언된 클래스이다.
  - 서로쉽게 접근할수 있고 외부에는 불필요한 클래스를 감춤으로 복잡성을 줄일 수 있다.
  
  - static 클래스
    : 외부클래스의 클래스멤버들과 관련된 작업을 수행한다. 메서드와 관련된 작업을 수행
  - 인스턴스클래스
    : 외부클래스의 인스턴스멤버들과 관련된 작업을 수행한다.
  - 지역클래스
    : 외부클래스의 메서드와 초기화 블럭안에 선언되며 메서드가 종료시 삭제된다.
  - 익명클래스
    : 클래스의 선언과 객체생성을 동시에 하는 이름없는 클래스(일회용)


1. collection Framework
  - collection은 다수의 데이터(데이터 그룹)
    Framework는 표준화된 프로그래밍 방식을 의미
    
2. 핵심 interface
   - List
     : 순서가 있다.
     : 데이터의 중복을 허용한다.
     : ArrayList, LinkedList, Stack, Vector등..
     : 대기자 명단
     
   - Set
     : 순서가 없다.
     : 데이터의 중복을 비허용한다.
     : HashSet, TreeSet..
     : 집합
     
   - Map
     : key와 value의 쌍으로 이루어져 있다.
     : 순서가 없다.
     : 키는 중복을 비허용하고, value는 중복을 허용한다
     : HashMap, TreeMap, HashTable, Properties..
     : 우편번호, 지역번호
     
 3. List
   - Vector와 ArrayList
     : Vector의 경우 동기화를 보장한다.
     : Object배열을 이용해서 데이터를 순차적으로 저장한다.
     
   - LinkedList
     : List의 단점을 보완하기 위해 만들어짐
     : 자신의 데이터와 다음 요소의 주소값으로 구성되어 있다.
     
   - DoubleLinkedList
     : 자신의 데이터와 다음요소의 주소값 이전요소의 주소값으로 구성되어 있다.
      
 4. Stack과 Queue
   - Stack : LIFO,FILO
     : 저장 push()
     : 추출 pop()
     : 맨위의 객체 peek()
     : 주어진 객체 찾기 search()
     
   - Queue : FIFO
     : 저장  offer()
     : 추출  poll()
     
 5. Set
   - Set인터페이스를 구현한 구현체중 대표는 HashSet이다.
   - add메서드나 addAll메서드를 사용하는데 이미 저장된 요소가 있다면 
      중복등록에 실패하게 된다.

 6. Map
   - key와 value로 이루어져 있다.
   - HashMap, HashTable
   - Map<Object,Object> 이지만 일반적으로 key의 경우는 String으로 사용한다.
   - key의 경우 유일해야 한다.
  


   
1. 정규식이란?
  - 텍스트 데이터중에서 원하는 조건과 일치하는 문자열을 찾아내기 위해
     사용하는 것.
     
  - 정규식의 구성
    : Pattern이라는 클래스를 이용하여 정규식을 정의한다.
    : Matcher클래스를 이용하여 Pattern과 데이터를 비교하는 역할을 한다.
    
1. java.lang 패키지
  - java.lang패키지는 자바프로그래밍에 기본이 되는 클래스들을 포함하고 있다.
    ex) String, System ....
    
2. Object클래스
  - Object클래스는 멤버변수는 없이 11개의 메서드로 이루어져 있다.
  
  - boolean equals(Object obj)
    : 매개변수로 객체의 참조변수를 받아서 비교하여 그 결과를 boolean값으로 돌려준다.
    : 참조변수에 저장된 주소값이 같은지를 판단할수 밖에 없다.
    : 주소값이 아닌 멤버변수가 가지고 있는 값을 비교하기 위해서는 equals메서드를
       오버라이드 하면 된다.
       
    : equals메서드가 오버라이드 되어있는 클래스들
      => String, Date, File, wrapper클래스
      
  - hashCode() - 10진수로 이루어짐
    : 객체의 주소를 이용하여 해시코드를 반환한다.
    : String클래스는 문자열의 내용이 같으면 같은 해시코드를 반환한다.
    
  - toString()
    : 인스턴스에 대한 정보를 문자열로 제공할 목적으로 작성
    : 기본적인 toString()
      return getClass().getName()+"@"+Integer.toHexString(hashCode());
    
  - clone()
    : 얕은복사
    : 자신을 복제하여 새로운 인스턴스를 생성한다.
    : 단순히 인스턴스의 값만을 복사한다.
    : 객체가 참조하고 있는 객체까지 복제하지 않는다.

  - getClass()
    : 자신이 속한 클래스의 Class객체를 반환하는 메서드
    : class로 부터 객체를 얻는 방법
      1) 생성된 객체로 부터 얻는 방법
         Class obj = new Card().getClass();
      2) 클래스 리터럴로부터 얻는 방법
         Class obj = Card.class;
      3) 클래스의 이름으로 부터 얻는 방법
         Class obj = Class.forName("Card");
  
3. String클래스
  - 다른언어에서는 문자열을 char형 배열로 다루었으나 자바에서는 문자열을
     위한 클래스가 존재한다.
    : 문자열을 합치게 될때 새로운 문자열을 가진 String인스턴스가 생성된다.
    : 문자열을 합칠때는 StringBuffer클래스를 사용한다.
    
  - 문자열의 비교
    : 문자열 리터럴을 지정하는 방식, String클래스의 생성자를 사용하는 방법
    
  - 문자 인코딩 변환
    : 한글 윈도우의 경우 인코딩 방식으로 CP949지만 우리는 UTF-8을 사용한다.
    
  - String format
    : 기본형을 String형으로 변환
      1) 빈 문자열을 더하는 방식
        int a = 10;
        String s = a+"";
        
      2) valueOf()
        int a = 10;
        String s = String.valueOf(a);
        
    : String을 기본형값으로 변환
      1) wrapper클래스를 이용하는 방법
        String s = "123";
        int c = Integer.parseInt(s);
        int c = Integer.valueOf(s);
        
      2) String을 기본형으로 변환시 결과는 10진수 이다.
        String s = "200";
        int a = Integer.parseInt(s,16);
      
4. StringBuffer, StringBuilder클래스
  - String클래스는 인스턴스를 생헝할때 지정된 문자열을 변경할수 없다.
  - 문자열을 변경하기 위해서 StringBuffer클래스를 이용한다.
  
5. Math클래스

6. wrapper클래스
  - 객체지향의 개념은 모든것을 객체로 다루어야 한다.
  - 8가지 기본형은 객체로 다루지 않는다.
  - 때로는 기본형 변수도 어쩔수 없이 객체로 다루어야 하는 경우가 있다.
    : 매개변수로 객체를 요구할때
    : 기본형이 아닌 객체로 저장되어야 할때
    
    기본형타입    |    객체타입
    boolean    |   Boolean
    char       |   Character ***
    byte       |   Byte
    short      |   Short
    int        |   Integer ***
    long       |   Long
    float      |   Float
    double     |   Double
    
    
    void method(Object obj){
     Vector

 v = new Vector<>();
    }
    
  - 오토박싱 : 기본형 값을 wrapper클래스의 객체로 변환해주는 것
  - 언박싱   : wrapper클래스의 객체를 기본형 값으로 변환해주는 것
  
7. StringTokenizer클래스
  - 긴 문자열을 지정된 구분자를 기준으로 토큰(token)이라는 여러개의 무자열로
     잘라내는 데 사용된다.
  - 단 한 문자의 구분자만 사용가능
  
  
  
   1. 프로그램 오류
  - 프로그램이 실행중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우
  - 컴파일에러 : 컴파일 할때 발생하는 에러
  - 런타임에러 : 실행시에 발생하는 에러
  - 에러는 프로그램 코드에 의해서 수습될수 없는 심각한 오류
     예외는 프로그램 코드에 의해서 수습될수 있는 경미한 오류
     
2. RuntimeException클래스와 그외 클래스들
  - 모든 예외의 최고조상은 Exception이다.
  - RuntimeException클래스들은 주로 프로그래머의 실수에 의해서 발생하는 예외
    ex) IndexOutOfBoundsException, NullPointException
  - Exception클래스들은 주로 외부의 영향으로 발생할수 있는 것
    ex) FileNotFoundExeption, ClassNotFoundExeption
    
3. 예외처리( try-catch )
  - 프로그램 실행시 발생할수 있는 예외의 발생에 대비한 코드를 작성하는 것.
  - 작성방법
    try{
     예외가 발생할 가능성이 있는 문장
    }catch(Exception1 e){
     Exception1발생했을때 대비할 코드
    }catch(Exception2 e){
     Exception2발생했을때 대비할 코드
    }catch(Exception3 e){
     Exception3발생했을때 대비할 코드
    }
  
4. 예외발생시키기
  - 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든다.
    ManException me = new ManException();
  - 키워드 throw를 이용해서 예외를 발생시킨다.
    throw me;
    
    합치면
    throw new ManException();
    
5. 예외 던지기
  - 매서드 예외 선언하기
    : 메서드의 선언부에 throws를 이용해서 메서드내에 발생하는 모든 예외를 적어주기만
       하면된다.
    : 예외의 처리는 메서드를 호출한 쪽에서 처리한다.

6. finally
  - try-catch블럭의 예외발생에 상관없이 실행되어야 하는 코드를 포함하고 있다.
  
   try{
    예외가 발생할 가능성이 있는 문장
   }catch(Exception e){
    예외가 발생하였을때 처리할 문장
   }finally{
    무저건 마지막에 수행될 문장
   }
   
  - try -> finally
    try -> catch -> finally
   
   
   
// 컴파일러가 예외처리를 강제하지 않는 경우
//1. RuntimeExeption과 그 자식들
//2. Error와 그자손들
// 이런 것들을 'unchecked예외' 
 * 
 * 
   

*/


}
}

 

 

반응형

'it공부 > Java' 카테고리의 다른 글

자바 [Eclipse] 이클립스 단축키 정리모음  (0) 2020.07.05
JAVA 자바 개념정리  (0) 2020.07.05
JAVA 수업개념 요점 정리( 1 )  (0) 2020.07.05
Thread 와 Array 를 이용한 예제  (0) 2020.07.05
for while 반복문 예제  (0) 2020.07.05