~ 한 경우 input / ~ 한 경우 output을 만들어내는 조건문과
반복되는 연산 과정을 자동화하는 반복문.
삼항 연산자 | 결과값 = 조건식 ? 반환값1 : 반환값2
int answer = 1234;
System.out.println("비밀번호를 입력하세요.");
int input = sc.nextInt();
String result = (answer == input) ? "문이 열렸습니다" : "비밀번호가 다릅니다.";
System.out.println(result);
switch문 : 특정한 조건의 경우가 열거형으로 정해져있을 때 사용. if / else if 등의 조건문을 가독성 있게 표현하는 구문.
int answer = 1234;
System.out.println("원하시는 서비스 번호를 입력하세요.");
int input = sc.nextInt();
switch (input){
case 1:
System.out.println("대출 업무입니다.");
break;
case 2:
System.out.println("예금 업무입니다.");
break;
case 3:
System.out.println("적금 업무입니다.");
break;
반복문 | while : 해당 되어야만 돌아감 / do-while : 무조건 한 번은 돌아감 !
int a = 1;
do {
a++;
System.out.println(a);
} while (a < 10);
for : (초기식; 조건식; 증감식;) 조건식의 결과가 참인 동안 반복적으로 실행하는 명령문.
Enhanced for : 향상된 for문 또는 each문으로 불림.
int[] arr = {1, 3, 5, 7, 9};
// 일반 for 문
for(int i = 0; i < 5; i++){
System.out.println(arr[i]);
}
// enhanced for 문 : 반복횟수는 arr에 들어가있는 데이터 수만큼 반복.
for(int i : arr){
System.out.println(i);
}

메소드 영역 : 컴파일된 소스코드(클래스 등), 정적 변수(static) 등이 저장되어 코드 전역에서 사용 가능한 공간.
스택 영역 : 기본 자료형의 값. 지역변수, 매개변수, 기본형 자료, 객체의 주소값 등을 저장.
힙 영역 : 참조 자료형의 값. 애플리케이션 실행 동안 생성되는 모든 클래스 인스턴스와 배열을 저장하는 곳.
기본형 변수는 스택 영역에 저장되어 값을 직접 출력할 수 있지만,
참조형 변수인 객체 변수 등은 스택 메모리에는 힙 메모리의 주소만 저장해두고
실질적인 값은 힙 메모리에 저장함.
→ 배열을 출력할 때 Arrays.toString() 을 써야하는 이유! (아니면 주소값이 나옴)
원시 자료형 : Java에서 제공하는 기본 데이터 타입.
참조형 자료형
Wrapper 클래스 : 객체로 만들어진 기본 자료를 의미.

원시자료형을 Wrapping한 클래스.
박싱 : 기본 자료형을 래퍼 클래스로 변환하는 과정.
언박싱 : 래퍼 클래스를 기본 자료형으로 변환하는 과정.
// int와 Integer간의 형변환
int a = 10;
Integer b = new Integer(20);
int c = b; // 오토 언박싱 : Integer -> int 형변환
Integer d = a; // 오토 박싱.
// String 과 int 의 형변환
int a = 10;
// int -> String 변환
String st1 = Integer.toString(a);
String st2 = String.valueOf(a);
// String -> int 변환
int b = Integer.parseInt(st1);
// 참조 자료형에 원시 자료형을 담을 때에는 Wrapper 클래스를 써야한다.
List<Integer> list1 = new ArrayList<Integer>();
list1.add(10);
list1.add(20);
list1.add(30);
문자열 자료형.
StringBuffer : 문자열을 추가하거나 변경할 때 주로 사용하는 객체.
StringBuilder : StringBuffer 와 같은 기능을 하는 객체.
동시성을 고려하지 않아 성능이 더 뛰어나지만, 멀티스레드 상황에서 동기화 문제 발생 가능성 존재.
// StringBuffer
StringBuffer sb1 = new StringBuffer("hello");
// append : 문자열 가장 뒤에 다른 문자열을 더하는 것.
sb1.append(" world");
sb1.append(" java");
String answer = sb1.toString();
sb1.insert(5, " python");
sb1.delete(17, sb1.length());
System.out.println(sb1);
// StringBuilder
// String += < StringBuffer < StringBuilder
// StringBuilder는 스레드 safe X
StringBuilder sb2 = new StringBuilder();
sb2.append("hello");
sb2.append("\n");
sb2.append("world");