김미썸코딩

11/19 - Java 책내용 복습 본문

빅데이터 플랫폼 구축을 위한 자바 개발자 양성과정

11/19 - Java 책내용 복습

김미썸 2020. 11. 23. 08:47
728x90

복습 진도

chapter 2 ~ 10

 

1) 자료

          기본 자료형 중심

                 변수와 타입

                 연산자

 

          * 객체 자료형 

2) 제어

          조건문과 반복문

 

확인 문제 - 답을 적는 방식

----------------------------------------------

3) 객체 자료형

          참조타입

          클래스

          상속

          인터페이스

          중첩클래스(중첩 인터페이슨데 이것만 해도된다.)

          예외처리

 

확인 문제 중심으로 출제

-----------------------------------------------

 

 

2장.  변수와 타입

- 소스 코드 내에서 직접 입력된 값(정수, 실수, 문자, 문자열, 논리)을 리터럴이라고 부른다.

- 리터럴은 '상수' 와 같은의미지만 프로그램의 '상수'와 구분하기 위해서 '리터럴' 용어를 사용한다.

- 변수는 초기화 되어야 읽을 수 있고, 초기화되지 않은 변수는 읽을 수가 없다.

- 변수 이름의 첫번째 글자는 문자이거나 '&', '_' 이여야 하고 숫자로 시작할 수 없다.

- byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)

- 예외 : char 의 범위가 0~65535이므로 음수가 저장될 수 없다. 

- byte -> char (자동 타입 변환 X)

- char -> short(자동 타입 변환 X) -> 범위가 비슷하지만 char은 양수에 조금더 큰 범위를 가짐.

- 실수 맅터럴을 float 타입 변수에  저장하려면 리터럴 뒤에 소문자 'f'나 대문자 'F'를 붙여야 한다.

- 연산식에서의 자동 타입 변환 : 다른 타입의 피연산자가 있을 경우 두 피연산자 중 크기가 큰 타입으로 자동 변환된 후 연산을 수행.

- 자바는 정수 연산일 경우 int 타입을 기본으로 한다. 그 이유는 피연산자를 4byte 단위로 저장하기 때문이다. 

- 크기가 4 byte 보다 작은 타입(byte, char, short)은 4byte인 int타입으로 변환된 후 연산이 수행된다.

- 따라서 연산결과도 int 타입이 된다.

 

 

3장.  연산자 

- NaN 값인지 검사할 때 == 연산자를 쓰면 안된다.

- NaN 은 != 연산자를 제외한 모든 비교 연산자를 사용할 경0우 false 값을 리턴하기 때문이다.

- NaN 값을 검사하려면 반드시 Double.isNaN() 을 사용해야 한다.

 

 

 

4장.  조건문과 반복문

- 자바 6까지는 switch문의 괄호에 정수 타입(byte, char, int, long) 변수나 정수값을 산출하는 연산식만 올 수 있었다.

- 자바 7부터는 String 타입의 변수도 올 수 있다.

 

 

 

5장. 참조 타입

- 참조 타입에는 배열, 열거, 클래스, 인터페이스가 있다.

- 참조 타입 변수의 메모리 생성 위치는 스택이다.

- 참조 타입은 null 값으로 초기화 할 수 있다.

- 로컬 변수는 스택 영역에 생성되며 실행 블록이 끝나면 소멸된다.

- 메소드 코드나 상수, 열거 상수는 정적(메소드)영역에 생성된다.

- 참조하는 변수나 필드가 없다면 의미 없는 객체가 되기 때문에 이것을 쓰레기로 취급하고 JVM은 쓰레기 수집기를 실행시켜 쓰레기      객체를 힙 영역에서 자동으로 제거한다.

- String 타입의 문자열 비교는 equals()를 사용한다.

- boolean 타입 배열 항목의 초기값은 false이다.

 

6장. 클래스

- 클래스가 public class 로 선언되면 기본 생성자에도 public이 붙는다.

- 클래스가 public없이 class 로만 선언되면 기본 생성자에도 public이 붙지 않는다.

- 클래스의 구성요소 : 필드, 생성자, 메서드

- 인스턴스 필드 초기화는 생성자에서 할 수 있다. 클래스(static)필드 초기화는 static 블록 안에서 할수 있다.

 

- 생성자에서 다른 생성자를 호출 할 때에는 this()를 사용한다.

- 생성자를 실행시키지 않고는 클래스로부터 객체를 만들 수 없다.

- 외부에서 객체를 생성할 수 없도록 생성자에 private 접근 제한자를 붙일 수 있다.

 

- 정적 메소드와 정적 블록 내부에 인스턴스 필드나 메소드를 사용할 수 없다. 또한 this 키워드도 사용이 불가능하다. 

 

- final 필드는 상수가 아니다. 

- final 필드는 객체마다 저장되고, 생성자의 매개값을 통해서 여러 가지 값을 가질 수 없다. 

- static final 필드는 상수이다.

- 상수는 객체마다 저장되지 않고, 클래스에만 포함된다. 한번 초기값이 저장되면 변경 할 수 없다.

 

- 클래스가 패키지에 소속되려면 패키지 선언을 반드시 해야한다.

- 패키지 선언을 하지 않으면 자바는 자동으로 디폴트 패키지를 만들어서 그안에 파일을 저장한다.

 

- default 접근 제한자는 같은 패키지에 소속된 클래스에서만 사용할 수 있는 멤버를 만든다.

- public > protected > default >  private

- public : 모두 접근가능

- protected : 동일 패키지 + 상속받은 외부 패키지에서 접근 가능

- default : 동일 패키지에서 접근 가능

- private : 해당 클래스에서 접근 가능

 

 

 

 

7장. 상속

- 부모 객체가 자식객체로 강제 타입 변환되려면 Parent parent =  new Child()처럼 자식 생성자로 생성된 부모 객체여야 한다.

- 자식 생성자로 생성된 부모객체는 생성된 그 자식으로만 강제 형변환이 가능하다.

- 자식이 부모로 자동 형변환 되거나 부모가 자식으로 강제형변환되면 둘다 자식 클래스의 고유한 메서드로는 접근이 불가능하다.

- 자식이 오버라이딩한 메서드로만 접근이 가능하다. 

 

- protected 접근 제한을 갖는 메소드는 다른 패키지라도 자식 클래스라면 재정의 가능하다.

 

- super()는 부모의 기본생성자를 호출한다.

- 만약 부모 클래스에 매개값을 갖는 생성자가 있다면 자식생성자의 맨 첫줄에 super(매개값)으로 명시적으로 호출 되어야한다. 

 

- 클래스를 선언할 때 abstract를 붙이면 new연산자를 이용해서 객체를 만들지 못하고 상속을 통해 자식클래스만 만들수 있게 된다.

- abstract 클래스는 메서드에서 필드의 초기화도 가능하다.

- abstract 클래스는 상속되어야 사용될수 있다.

- abstract 메서더는 abstract 클래스 내에서만 선언되며, 자식을 통해서 반드시 구현{} 되어야 한다.

 

 

8장. 인터페이스

- abstract는 이름만 abstract이지 클래스와 구성요소(필드, 생성자, 메서드)가 같다.

- 그러나 인터페이스는 상수와 메서드(추상, 디폴트, 정적)만을 가진다.

- 인터페이스의 상수는 public static final 이 생략 된다.

- 인터페이스의 메서드는 public abstract 가 생략된다. 

- 따라서 인터페이스 내의 상수와 메서드는 public 이 생략된 것이고, abstract는 default가 생략된 것이다. 

 

- 구현 객체는 인터페이스 타입으로 자동 변환 된다.

 

 

 

 

9장. 중첩클래스

- 인스턴스 멤버 클래스는 Outer o = new Outer(); 선언후  Outer. Inner io = o. new Inner(); 이렇게 선언한다.

- 메서드 호출은 io.메소드명();

- 정적 멤버 클래스는 Outer 클래스 선언 필요 없이 바로 Outer.Inner io = new Outer.Inner(); 이렇게 선언한다.

- 메서드 호출은 Outer.Inner.메서드명();

 

- 로컬 클래스는 바깥 클래스의 모든 필드와 메서드를 사용할 수 있다.

- 로컬 클래스는 메소드 내부에서만 사용되므로 접근을 제한할 필요가 없다. static 붙일 수 없다.

- final 특성을 가진 매개 변수나 로컬 변수만 로컬 클래스 내부에서 사용할 수 있다. (해당 메소드 내에서만 사용하려면 상속되면 안됨)

 

- 익명 객체는 단독으로 생성할 수 없고, 클래스를 상속하거나 인터페이스를 구현해야만 생성할 수 있다.

 

 

 

728x90
Comments