컴퓨터는 0,1로만 이루어짐. 이건 우리가 못읽음. 그래서 번역이 필요함. -> 이걸 도와주는게 "컴파일러"
컴파일러는 바이트코드(Byte Code)로 변경시켜줌.
JVM은 바이트 코드만 실행시켜줌 (JDK 설치할때, 같이 설치됨.)
JVM은 서로 다른 OS(Linux, Windows, Mac OS)에서 실행될수 있도록 도움을 줌
(JVM에서 해석을 해줌 이때는 interpreter)
java -> compiler -> bytecode -> interpreter -> 실행
1. Write Once
- 코드를 하나 작성하면
2. Run Anywhere
어디서든 실행가능함.
환경변수(시스템변수)에 등록되어있는 변수는 어디에서든 실행이 됨.
cmd 켜서
javac -d . 이름
하면 바이트 코드로 바꿔줌. (해석안됩니다...?) -> 이걸 이제 JVM이 인터프리터를 통해 번역해줌
Primitive Type : 기본형
- 미리 정해진 크기의 Memory Size로 표현
구분 | 타입 | bit 수 | 값 |
논리형 | boolean | 1 | true / false |
정수형 | byte | ||
short | |||
int |
Reference Type : 참조형 -> (Class)
- 미리 정해질 수 없는 데이터의 표현
class Person{
int age;
char grade;}
class : 하나의 설계도
Person : 객체
new Person();
new : 메모리 할당 받자!
int 32 ,char 16 해서 총 48비트 할당!
Variable이란? --> 하나의 그릇!
위에서 age나 grade임!
지역변수! (해당 지역에서만 쓸 수 있는 것 { } 사이)는 "반드시" 초기화 해야함!
package com.ssafy;
public class BP_12 {
public static void main(String[] args) {
String s1 = "Hello";
String s2 = "Hello";
String s3 = new String("Hello");
}
}
CPU : 중앙처리장치
RAM : 주 기억장치
RAM에서 JVM이 약간의 메모리를 할당받음.
JVM의 메모리 구조
1. class : class정보를 저장
2. stack : main에 있는 s1, s2, s3저장
3. heap : constant pool (상수 저장소) s1, s2에 Hello 저장. 근데 같은 hello니까 새로 지정하지 않음.
근데 s3는 heap 영역에 String으로 Hello를 저장함.
///여기서부터는 git
GitFlow 전략
feature branches | develop | release branches | hotfixes | master |
특징만 파악해서 브랜치 | 개발할때 사용 | QA진행 | 수정하고 바로 배포하는거 | 실제 배포하는 브런치 |
나로부터 feature가 시작된다. |