(1) 객체지향 (OOP : Object Oriented Programming)
(2) 메인 메소드
1) public static void main(String[] args) { }
(3) 클래스 (Class) : '객체'를 만드는 틀
(4) 객체 (Object) : 클래스를 통해 나온 구현물, 모든 것
ex) 붕어빵
(5) 생성자 (Constructor) : '객체' 가 생성될 때 하는 일(행위)
(6) 메소드 (Method) : '객체'가 할 수 있는 일(행위)
(7) 속성 ( Attribute == Member == Field ) : '객체'의 특성
다양한 객체를 표현하기 위해서 존재한다.
ex) 앙꼬, 가격
(8) 변수 ( Variable ) == 변데이터 ( 변할 수 있는 데이터 )
1) 유효범위
<1> 멤버(==전역) (JVM이 초기화 해줌)
1> 클래스(소속)
2> 객체(소속) ( == 인스턴스(instance))
<2> 지역 ( JVM이 초기화 안해줌 )
1> 파라미터( == 매개 == 아규먼트 )
2> 선언초기화 (생성자나 메소드안에 선언과 동시에 초기화한 지역변수)
2) 메모리
<1> 기본형(프리미티브(primitive) == 원시데이터) : 8가지
1> call by value
2> 형태 : 모두 소문자
3> 종류:
byte -> short -> int -> long -> float -> double
char ->
boolean
4> 담을 수 있는 값의 범위
1. byte(1) : -128(-2^7) ~ 127(2^7-1) (경우의 수 : 2^8)
2. short(2) : -2^15 ~ 2^15-1 (경우의 수 : 2^16)
3. char(2) : 0 ~ 2^16-1(경우의 수 : 2^16)
4. int(4) : -2^31 ~ 2^31-1 (경우의 수 : 2^32)
5. long(8) : -2^63 ~ 2^63-1 (경우의 수 : 2^64)
6. float(4) : 무한대(소수 오차발생) (경우의 수 : 2^32)
7. double(8) : 무한대(소수 오차발생) (경우의 수 : 2^64)
8. boolean(1) : false 또는 true
5> 형 변환( Type casting )
1. 자동형변환( 암시적/Implicit) by JVM
ex) 범위 작은 Type -> 큰 Type
2. 강제형변환( 명시적/Explicit) by 개발자 ( 데이터 꺠질 수 있음, 데이터의 범위를 잘 알아야함 )
ex) 범위 큰 Type -> 작은 Type
6> 예외 형변환
1. 정수형( byte, short, char, int )끼리의 연산의 결과는 int
7> 컴퓨터 소수 연산 오차
1. float 오차가 double 보다 큼
8> 디폴트 초기값 by JVM
1. 정수( 0, 0L ), 실수( 0.0f, 0.0 ), 불린( false )
9> 존재이유
1. 실행의 효율성
cf) Wrapper class 8가지
Byte, Short, Character, Integer, Long, Float, Double, Boolean
<2> 참조형( reference == 레퍼런스 ) : 무한
1> call by reference
2> 형태 : (관례상)첫문자 대문자
3> 디폴트초기값 : null
4> 형변환
1. 자식객체는 부모타입으로 형변환 할 수 있다.
2. 자식객체를 부모타입으로 형변환 할 때는 부모타입이 더 큰 범위 이므로, 자동 형변환 된다.
ex) 자동형변환 by JVM ( 자식 -> 부모 )
3. 강제 형변환은 자식객체을 부모타입 으로 바꿔서 사용하다가 원래 타입을 찾을 때 사용한다.
ex) 강제형변환 by 개발자 ( 부모 -> 자식 )
4. 모든 객체는 Object의 자식 ( 묵시적 상속 )
5. 형제관계(남남)는 상속과 무관 ( 형변환X )
3) 소유
<1> 클래스( == 정적 )
static 붙으면 클래스 소유
<2> 객체( == 동적 )
static 붙지 않으면 객체 소유
4) final
<1> 상수( == 상데이터) ( Constant )
1. final 붙으면 '초기'값을 못 바꿈
<2> 변수( == 변데이터) ( Variable )
1. 값을 바꿀 수 있음
(9) 클래스의 구조
1) 패키지 선언
2) 임포트 구문
3) 클래스 선언 {
<4> 멤버변수
<5> 생성자( Constructor )
<6> 매소드( Method )
}
(10) 주석 ( comment )
1) 1라인 :
// 적고싶은 문장
2) N라인 :
/*
적고싶은 문장 1
적고싶은 문장 2
*/
3) 문서화주석 :
/**
문장1
문장2
*/
(11) 제어
어떤 프로그램이 실행되고 있을 때,
어느 한 시점의 (CPU/GPU)연산은 어떤 특정 코드부분을 실행하고 있을 것이다.
그 코드 부분을 '제어점'이라고 하고, 그 제어점들의 집합을 '제어'라고 한다.
즉, "프로그램의 실행 흐름(line)" 이다.
JVM -> main() -> ..... main() -> JVM
cf) 비유: '부메랑'
(12) 연산자 ( Operator )
1) (데이터들을) 연산하게 하는 '기호'
2) 종류
<1> 산술연산자 ex) +, -, *, /, %
<2> 증감 ex) ++, --
<3> 대입(할당) ex) =
<4> 산술대입(할당) ex) +=, -=, *=, /=, %=
<5> 비트 ex) &, |, ^, ~(not), 시프트(<<, >>, >>>)
<6> 비교 ex) ==, !=, <, <=, >, >=
<7> 논리 ex) &, &&, |, ||,
<8> 논리대입(할당) ex) |=, &=
<9> 조건 ex) A? B:C ( A의 조건이 true이면 B를 취하고, false이면 C를 취해라)
<10> instanceof ex) 객체 instanceof 클래스
'Java > Java' 카테고리의 다른 글
Java 06. OOP( Object Oriented Programming) 특성 (0) | 2022.03.09 |
---|---|
Java 05. 컬렉션 ( Collection ) (0) | 2022.03.09 |
Java 04. 배열 ( Array ) (0) | 2022.03.09 |
Java 03. 제어문 (0) | 2022.03.08 |
Java 01. 설치 및 세팅 (0) | 2022.03.07 |