티스토리 뷰
_객체 지향 언어의 특징
- 상속
- 코드 재사용으로 인해 코드가 줄어든다
- 계층 구조
- 추상화
- 공통의 속성이나 기능을 묶어 이름을 붙이는 것
- 클래스를 정의하는 것
- ex) 물고기, 사자, 토끼, 뱀 > 생물
- 캡슐화
- 행위와 상태를 포장하고 외부에 노출할 것과 감ㅊ물 것을 결정하는 것
- 외부에 노출되는 모든 것을 인터페이스라고 할 수 있다
- 은닉화
- 내부 데이터, 내부 연산을 외부에서 접근하지 못하도록 은닉
- setter, getter를 사용해 변수의 접근, 제어
- 다형성
- 캡슐화, 상속과 함께 동작함으로써 흐름제어를 단순화
- 서브클래스의 오버라이드된 메소드가 다른 작업을 할 수 있어 다양한 형태 제공
_자바의 자료형
- primitive 기본자료형
- 비객체 타입이므로 null값을 가질 수 없음
- byte, short, int, long, float, double, char, boolean
- reference 참조자료형
- java.lang.Object를 상속받음
- Class Type, Interface Type, Array Type
- String Class : equals()로 비교
- Wrapper Class : Byte, Short, Integer, Long, Float, Double, Char, Boolean
_오버로딩 / 오버라이딩
- 오버로딩 : 메소드 이름은 같지만 매개변수를 다르게 정의
- 오버라이딩 : 상위클래스가 가진 메소드를 자식클래스에서 재정의하여 사용
_추상클래스 / 인터페이스
- 공통점
- 선언만 있고 구현내용이 없다
- 객체를 생성할 수 없다
- 자식클래스에 무언가 구현시키도록
- 추상클래스 > extends로 구현
- 인터페이스 > implements로 구현
- 차이점
- 추상클래스
- is-a 관계 (Inheritance)
- 부모-자식의 상속관계
- 한 개 이상의 추상 메소드로 이루어짐
- 일반 메소드를 포함할 수 있음
- 인터페이스
- has-a 관계 (Composition)
- 다형성
- 모든 메소드가 추상 메소드이고 일반 변수를 가질 수 없음
_Wrapper 클래스
- 산술 연산에는 사용이 되지 않고 값을 저장하는 새로운 객체의 생성 및 참조만 가능
- Boxing : 기본 자료형 > Wrapper 클래스의 객체
- ex) Intger age = new Integer(30);
- Unboxing : 객체 > 기본 자료형
- ex) int age2 = age.intValue();
- Integer.ValueOf(String) : 산술연산 x (Integer클래스를 리턴)
- Integer.parseInt(String) : 산술연산 o (int형을 리턴)
_Garbage Collection
- garbage : 더이상 사용되지 않는 메모리
- garbage collection : 가비지를회수하여 메모리공간 늘리는것, 이를 수행하는 것이 garbage collector
_Collection / Map
- Collection : Set, List, Queue
- Map : HashMap, TreeMap
_String / StringBuilder / StringBuffer
- String
- 불변 > +연산이나 concat연산을 이용할때 항상 new로 새로운 객체를 만들어 새로운 메모리공간을 할당
- 단순하게 읽는 조회연산에서는 빠른편
- 문자열 연산이 적고 조회가 많을때 멀티쓰레드 환경에서 사용
- StringBuilder
- 가변 > 문자열 연산이 자주 있을때 사용하기에 적합
- 동기화를 지원하지 않으므로 멀티쓰레드 환경에 부적합
- StringBuffer
- 가변 > 문자열 연산이 자주 있을때 사용하기에 적합
- 동기화가 가능하므로 thread-safe
_JVM / JDK / JRE
JDK : Java Development Kit
- 자바 개발을 위한 도구
- 자바 컴파일러(Javac), 자바 가상머신(JVM) 등 각종 라이브러리를 포함
- JRE도 포함
JRE : Java Run Environment
- 자바 실행 환경
- JVM이 실행되도록 도와주는 역할
- 개발이 필요없고 실행만을 원하면 JRE만 설치하면 가능
JVM : Java Virtual Machine
- JVM만 설치되면 운영체제에 상관없이 작동하므로 플랫폼에 독립적
- java 코드 > JDK 컴파일(.class파일 생성) > JVM > 실행
- 프로그램이 실행되면 JVM은 OS로부터 메모리를 항당받고 JVM은 용도에 따라 메모리를 여러 영역으로 나누어 관리
- 자바 컴파일러 (javac)가 자바소스를 읽어 들여 바이트코드로 변환 (.java > .class)
- class파일들을 jvm메모리영역으로 로딩
- 로딩된 class파일들은 execution engine을 통해 해석
- 해석된 바이트코드는 runtime data area에 배치되어 실행
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 이진탐색트리
- DATABASE
- C
- ConstraintLayout
- OS
- 퀵정렬
- LinearLayout
- C++
- 안드로이드
- handshake
- RelativeLayout
- adapter
- frameLayout
- 알고리즘
- 정렬 알고리즘
- 백준알고리즘
- Android
- layout
- 백준
- 스프링부트
- HTTP
- 윈도우
- listview
- BOJ
- 스프링
- WinDbg
- windows
- 네트워크
- 운영체제
- debug
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함