Chapter 01 | 자바 시작하기
1.1) 프로그램 언어와 자바
- 사람과 컴퓨터가 대화하기 위해서는 사람의 언어와 기계어의 다리 역할을 하는 프로그래밍 언어가 필요하다.
- 고급 언어 : 컴퓨터와 대화할 수 있도록 만든 언어 중 사람이 쉽게 이해할 수 있는 언어 (Java, C, C++, C#, Python)
- 저급 언어 : 기계어에 가까운 언어 (어셈블리어)
- Compile : 고급 언어를 컴퓨터가 이해할 수 있는 기계어로 바꾸는 과정
- 그 중 자바는 다음과 같은 특징을 가지고 있다.
- 모든 운영체제에서 실행 가능 : 윈도우에서 개발된 프로그램 수정 없이 맥OS, 리눅스에서 사용 가능
- 객체지향 프로그래밍 : Object Oriented Programming(OOP) 최적의 언어
- 메모리 자동 정리 : RAM 자동 관리
- 풍부한 무료 라이브러리 : Open Source Library 풍부
1.2) 자바 가상 머신
- Java Virtual Machine : java 명령어로 인해 구동되어 바이트 코드 파일을 완전한 기계어로 번역하고 실행시킴
- 에스페란토 언어 역할
Chapter 02 | 변수와 타입
2.1) 변수 선언
- RAM은 수많은 번지들로 구성된 데이터 저장 공간
- 변수(variable) : 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름
- 프로그래밍 언어는 변수를 통해 메모리 번지에 값을 저장하고 읽는다.
- 변수 선언 : 어떤 타입의 데이터를 저장할 것인지 그리고 변수 이름이 무엇인지 결정하는 것
- The local variable value may not habe been initialized : 초기화되지 않은 변수 사용 시 컴파일 에러
2.2) 변수 타입
Type | 크기 | 1byte | 2byte | 4byte | 8byte |
정수 | byte | short | int | long |
char | ||||
실수 | float | double | ||
논리 | boolean |
- Primitive type : 스택 메모리에 직접 저장 (정수, 실수, boolean)
- Reference type : Heap 메모리에 동적 할당 -> 객체의 번지를 참조 (Class, Interface, Array)
2.3) 자동 타입 변환
byte b1 = 10;
int i1 = b1; // 큰 타임 int <- 작은 타입 byte (자동 형변환O)
byte b2= i1; // 작은 타입 byte <- 큰 타임 int (자동 형변환X)
byte b2 = (byte) i1; // 작은 타입 byte <- 큰 타임 int (강제 형변환) / 값 손실 위험
- 자동 타입 변환 : 큰 허용 범위 타입 = 작은 허용 범위 타입
- 강제 타입 변환 : 작은 허용 범위 타입 = 큰 허용 범위 타입
- byte < short, char < int < long < float < double
2.4) 형 변환
1. 문자 -> 숫자
1) String to Int
int i_num = Integer.parseInt(s_num);
int i_num = Integer.valueOf(s_num);
2) String to Float
float f_num = Float.valueOf(s_num);
2. 숫자 -> 문자
1) Int to String
String s_num = String.valueOf(i_num);
String s_num = Integer.toString(i_num);
2) Float to String
String s_num = String.valueOf(f_num);
String s_num = Float.toString(f_num);
3. 정수 <-> 실수
1) Int to Float
int i_num = (int)f_num;
2) Float to Int
float f_num = (float)i_num;
Chapter 03 | 연산자
3.1) 부호/증감/산술 연산자
- 부호 연산자 : 부호를 유지하거나 변경
- 증감 연산자 : 변수의 값을 증가시키거나 감소
- 산술 연산자 : 가(+)감(-)승(*)제(/)나머지(%)로 총 5개
3.2) 오버플로우와 언더플로우
- Overflow : 타입이 허용하는 최대값을 벗어나는 것
- Underflow : 타입이 허용하는 최소값을 벗어나는 것
3.3) 정확한 산술 연산
- 실수 타입을 사용하지 않고 정수 연산을 이용
- double과 float는 부동(浮動) 소수점을 사용하기 때문에 소수가 정교하지 않음
- 고정 소수점은 범위가 제한적이라 더 넓고 유연한 부동 소수점을 자바에서 사용
3.4) NaN, Infinity
5 / 0 -> ArithmeticException
5 % 0 -> ArithmeticException
5 / 0.0 -> Infinity
5 % 0.0 -> NaN
boolean result = Double.isInfinite(Variable);
boolean result = Double.isNaN(Variable);
- ArithmeticException : 무한대 값을 정수로 표현할 수 없기 때문
- Infinity : 무한대
- NaN : Not a Number
3.5) 비교 연산자
0.1f == 0.1 // false
0.1f == (float) 0.1 // true
- 부동 소수점 방식을 사용하는 실수 타입이 0.1을 정확하게 표현 못함
- float 타입과 double 타입의 정밀도 차이
boolean result = str1.equals(str2); //true
boolean result = (str1 == srt2); //false
- Reference type은 참조 주소끼리 비교하기 때문에 equals 함수로 비교
3.6) 논리 연산자
- AND(&&, &) : 피연산자 모두 true= true
- OR(||, |) : 피연산자 중 하나 이상 true = true
- XOR(^) : 피연산자 true 다른 하나 false = true
- NOT(!) : 피연산자 논리값 변경
- Short-circuit(&&, ||) : 좌측 피연산자만으로 결과가 확정된 경우, 우측 피연산자는 계산하지 않는 기능
3.7) 비트 논리 연산자
- bit 단위로 논리 연산 수행 (0, 1)
- 정수 타입만 피연산자가 될 수 있고, 부동 소수점 방식인 실수 타입은 불가능
- Short-circuit : 좌항과 우항 자릿수 비트에 대한 비트연산을 적용하는 방식으로 동작되기 때문에 사용불가
3.8) 비트 이동 연산자
- a << b : a * 2^b (부호비트 포함X)
- a >> b : a / 2^b (부호비트 포함X)
- a >>> b : b만큼 오른쪽으로 이동, 빈자리 0으로 채우기 (부호비트 포함O)
3.9) 삼항(조건) 연산자
- 삼항 연산자 : a == 100 ? true : false
Chapter 04 | 조건문과 반복문
4.1) 코드 실행 흐름 제어
- 자바는 main() 메소드의 {에서 }까지 위에서 아래로 실행하는 흐름을 가진다.
- 제어문을 통해 원하는 방향으로 흐름을 바꿀 수 있다.
4.2) 조건문
- if 문
- switch 문 : 실수 사용 불가
4.3) 반복문
- for 문
- while 문
- do-while 문
4.4) break, continue 문
- break 문 : for과 while문 종료
- continue 문 : 반복문 조건식으로 바로 이동
'LG 유플러스 유레카 > 강의 정리' 카테고리의 다른 글
[알고리즘] Part09 | 시뮬레이션 (1) | 2025.02.18 |
---|---|
[알고리즘] Part08 | 백트래킹 (0) | 2025.02.17 |
[소프트웨어 엔지니어링] Part 02 | 객체지향 프로그래밍 (0) | 2025.02.01 |