9_java_프로그래밍 언어활용 1~8 정리

study/java · 2019. 11. 6. 08:20

1. 프로그램

컴퓨터가 인식할 수 있는 명령어의 나열(집합)

2. 자바 언어의 특징 7가지

1)운영체제에 독립적(이식성이 높음)
2)객체 지향 언어
3)사용하기 쉬운 언어
 - 능률적이고 명확한 코드 작성 가능
 - 다른 언어의 단점 보완(포인터, 메모리 관리)
4)자동 메모리 관리(garbage collection)
5)동적 로딩 지원
6)멀티쓰레드 지원
7)네트워크 분산환경 지원

3. JVM(Java Virtual Machine)

자바를 실행하기 위한 가상 기계

4. JRE(Java Runtime Enviroment)

JVM<JRE
5. 변수

메모리에 값을 기록하기 위한 공간 //(할당)

6.  기본자료형 종류와 크기 기본값

boolean // 1byte // false
char // 2byte // '\u0000'
byte // 1byte // 0
short // 2byte // 0
int // 4byte // 0
long // 8byte // 0L
float // 4byte //0.0f
double // 8byte // 0.0 or 0.0d

7. 변수의 명명 규칙

1) 대소문자가 구분되며 길이 제한이 없다.
2) 예약어를 사용하면 안된다.
3) 숫자로 시작하면 안된다.
4) 특수문자는 '_'와 '$',만 허용한다
5) 여러 단어 이름은 단어의 첫글자를 대문자로 한다
 단, 첫 시작 글자는 소문자로 하는 것이 관례이다.

8. 리터럴

변수에 대입되는 값 자체

9. 상수

한 번만 저장할 수 있는 메모리

10. 자동 형변환

컴파일러가 자동으로 값 범위가 작은 자료형을 범위가 큰 자료형으로 반환

11. 강제 형변환

값의 범위가 큰 자료형을 값의 범위가 작은 자료형으로 변환
강제형변환시 자료 손실이 발생

12. 데이터 오버플로우

허용된 범위 이상의 비트를 침범

13. 변수와 메모리 구조3가지

stack : 메소드를 호출하면 자동생성 끝나면 자동소멸
지역변수, 매개변수, 메소드 호출 스택

heap : new연산자에 의해 동적으로 할당되고 저장되는 공간
객체, 배열 등

static : static 예약어로 선정된 필드, 메소드가 저장되는 공간
클래스 변수 등

14. 연산자 종류

단항, 산술, 비교, 논리, 복합 대입, 삼항연산자

15. 전위 연산과 후위 연산

전위연산 : 먼저 연산 후 다른 연산 실행
후위연산 : 다른 연산 우선 실행 후 연산

16. 조건문

프로그램 수행 흐름을 바꾸는 역할을  하는 제어문 중 하나로
조건에 따라 다른 문장이 수행되도록함

17. switch문

조건식 하나로 많은 경우의 수를 처리할때 사용

18. 반복문

프로그램 수행 흐름을 바꾸는 역할을 하는 제어문 중 하나로
특정 문장들을 반복해서 수행하도록 함

19. break

break문이 포함된 가장 가까운 반복문을 빠져나가는 구문

20. continue

반복문 내에서만 사용 가능하며 아래 부분은 실행하지 않고
반복문 다시 실행
for문 : 증감식 , while(do~while)문의 경우 조건식으로 이동
특정 조건을 만족하는 경우를 제외할떄 유용

21. 배열

같은 자료형의 변수를 하나의 묶음으로 다루는 것

22. 얕은 복사와 깊은 복사

얕은 복사 : 객체의 주소값만 가져와 참조형 변수에 저장하고
하나의 객체를 두 변수가 참조하는 것

깊은 복사 : 새로운 배열 객체를 생성하여 기존 배열의 데이터를 
복사하는 것

23. 2차원 배열

자료형이 같은 1차원 배열의 묶음으로 배열 안에 다른 배열이 존재

24. 가변 배열

행의 개수는 정해져 있으나, 각 행에 대한 열의 개수가 정해지지않은
2차원 배열

25. 삽입 정렬

정렬 알고리즘에서 가장 간단하고 기본이 되는 알고리즘

1) 비교 주체를 정하는 for문
2) 비교대상을 정하는 for문
3) if문에 정렬기준을 정함
4) 출력

26. 버블 정렬

인접한 두개의 요소를 검사하여 정렬하는 방법
뒤에서 부터 정렬 되어지는 것이 특징

1) 한회차당 내부에 있는 for문이 반복할 회수 지정
2) 지정된 회수만큼 반복하며
j 번째 인덱스요소와 j+1번째 요소를 비교하여 정렬
3. if문에 정렬기준정함

27. 객채지향 3+1대 특징 @@@@

1) 캡슐화
 데이터들과 기능을 하나로 묶어 관리하는 기법
 데이터의 직접 접근 제한, 정보은닉, 코드보호

2) 상속
 다른 클래스가 가지고 있는 멤버(필드, 메소드)들을 새로 작성할 
 클래스에서 직접 만들지 않고 상속받음으로써
 새클래스가 자신의 멤버처럼 사용 할수 있는 기능

3) 다형성
 부모 클래스 타입 참조변수 하나로 상속관계에 있는
 여러 타입의 자식 객체를 참조할 수 있는 기술

4) 추상화
  필요한 공통점 추출, 불필요한 공통점을 제거

28. 객체

클래스에 정의된 내용대로 new 연산자를 통해 메모리 영역에 생성된 것

29. 클래스
객체의 속성, 기능에 대한 정의를 한 설계도
추상화, 캡술화가 반드시 적용되어야함


30. MVC
Model View Controller

31. 객체(instance) 와 객체(object)의 차이
instance는 class의 속성, 기능을 heap 영역에 생성된 결과물
object는 실제로 존재하는 객체

32. 필드 개념 , 필드의 종류, 필드 초기화 순서@@@
클래스 밑에 만드는 애들
C언어에서 말하는 '전역변수'와 비슷한 개념으로
해당 클래스 내부 어디서든 접근 가능한 변수 
1) 멤버변수(==instance 변수)
   생성 : new를 통해 생성 시 메모리에 할당
   소멸 : 인스턴스가 소멸시 소멸
JVM기본값 - > 명시적 초기값(선언) -> 
인스턴스 초기화 블럭 초기값 ->생성자를 통한 초기값

2) 클래스변수(==static 변수)
   생성 : 프로그램 실행 시 static 영역에 메모리 할당
   소멸 : 프로그램 종료 시 소멸
JVM기본값 > 명시적 초기값(선언) -> 
클래스 초기화 블럭 초기값(클래스블럭초기화)

3) 지역변수
   생성 : 메소드 호출시
   소멸 : 메소드 종료시

필드의 예약어 : 
static(공유 목적)
final(하나의 값만 계속 저장해야 하는 변수)


33. 필드접근제한자 @@@@@@@
7_oop 27page
+ public 전체
# protected 후손 클래스
~ (default) 같은 패키지 내
- private 같은 클래스 내부


34. 생성자@@@
- 객체가 힙에 할당될 때 객체 안에 만들어지는 필드의 초기화 +
생성시 필요한 기능 수행

특징 4가지
1) public이 원칙
2) 반환형 없음
3) 함수명은 반드시 클래스명과 같아야 된다
4) 오버로딩 가능함

35. 매개변수 생성자
-객체 생성 시 원하는 초기값을 인스턴스변수의 초기값으로 기록 원할 때 ㅅ/ㅏ용됨

36. 오버로딩 //조건 @@@@@@@@@@@@@
한 클래스 내에 동일한 이름의 메소드를 여러개 작성하는 방법

1) 메소드 명이 동일해야함
2) 매개변수가 달라야함
- 매개변수의 개수
- 다른자료형
- 매개변수의 순서
* 단, 매개변수명은 오버로딩 성립조건과 관계 없음

37. JVM가 자동으로 생성해주는 것
java.lang, return, default constructor, this, this(), Auto Castring

38. 상속의 정의 ,목적 , 장점 , 특징 @@@
다른 클래스가 가지고 있는 멤버(필드,메소드)들을 새로 작성할
클래스에서 직접 만들지 않고 상속받음으로써
새클래스가 자신의 멤버처럼 사용할수 있는 기능

목적 
클래스의 재사용, 공통적인 규약 정의

장점
1) 코드의 재사용성
2) 코드의 추가 및 변경 용이
3) 코드의 중복을 제거하여 생산성과 유지보수에 크기 기여

특징
1) 모든 클래스는 object클래스의 후손
2) 부모 클래스의 생성자, 초기화블록은 상속 안됨
3) 부모의 private멤버는 직접접근불가

39. 오버라이딩 Over Riding(위로 올라타다)
자식 클래스가 상속받은 부모의 메소드를 재작성 하는 것

40. 오버라이딩과 오버로딩의 차이 @@@
      오버라이딩 // 오버로딩
위치         // 하위클래스 // 같은클래스
작성규칙   // 이름,매개변수(개수,타입) 리턴타입 같아야함 
  // 메소드 이름 동일 나머진 상관 없음
접근제한자// 자식메소드의 접근범위가 부모메소드의 범위보다
     넓거나 같아야함
 // 접근 제한자와 상관없음
예외처리  // 자식메소드의 예외수가 부모 메소드의 예외수보다
    적거나 범위가 좁아얗마
 // 예외처리와 상관없음

41. 바인딩
정적바인딩 : 프로그램 실행 전 컴파일 단계에서
메소드와 메소드 호출부를 연결

동적바인딩 : 프로그램 실행 후 당시의 객체 타입을
기준으로 바인딩 되는 것

42. 추상클래스 @@
몸체 없는 메소드를 포함한 클래스
상속 시 반드시 구현해야 하는 오버라이딩이 강제화되는 메소드

43. 추상클래스의 특징@@
1. 미완성 클래스 -> 반드시 상속하여 객체 생성
2. abstract 메소드가 포함된 클래스는 반드시 abstract 클래스
  abstract 메소드가 없어도 abstract 클래스 선언 가능
3. 클래스 내에 일반 변수, 메소드 포함 가능
4. 객체생성은 안되지만 참조형 변수 타입으로 사용 가능

44. 추상 클래스의 장점 @@
일관된 인터페이스 제공 꼭 필요한 기능 강제화

45. 인터페이스@@
상수형 필드(public static final)과 
추상 메소드(public abstract)만을 작성할 수 있는 추상 클래스의 변형체

46. 인터페이스 특징@@
1) 모든 인터페이스의 메소드는 묵시적으로 public abstract
2) 변수는 묵시적으로 public static final
3) 객체 생성은 안되나 참조형 변수로는 가능

47. 인터페이스 장점@@
상위 타입 역할로 다형성을 지원하여 연결
해당 객체가 다양한 기능 제공 시에도 인터페이스에 해당하는
기능만을 사용하게 제한 가능
공통 기능 상의 일관성 제공
공동 작업을 위한 인터페이스 제공

48 추상클래스와 인터페이스 @@@
구분  // 추상클래스 // 인터페이스
필드 // 일반, 상수 // 상수
상속 //  단일상속 // 다중 상속
구현 // extends 사용 // implements 사용
추상 // abstract 메소드0개이상 // 모든 메소드는 abstract
abstract // 명시적사용 // 묵시적사용
객체 // 객체 생성 불가 // 객체 생성 불가
용도 // 참조 타입 // 참조타입