처음 a언어가 만들어지고 b언어 그리고 c언어가 만들어진 후 이 모든 기능들을 다 포함하는 언어인 JAVA가 탄생했다.
-JVM이라는 가상머신인 공통 실행환경에서 실행되기 때문에 여러 운영체제에서 사용가능하다.
-객체 지향 언어이다. 이는 세상과 닮아있는 개발 언어라 이해하기 쉽고 유지보수가 쉽다.
-컴파일러와 인터프리터를 통해 처리하면서 오류를 체크하기 때문에 보안성이 높다.
-다양한 API를 통한 대규모 앱 개발에 용이하다.
-가비지 컬렉터가 있어 메모리 관리에 용이하다.


-JDK(JAVA Development Kit)안에 JRE(JAVA Runtime Environment) 와 자바 개발 툴이 있다.

-프로젝트 파일의 src 폴더 아래에 .java 파일의 이름과 소스코드의 class 명이 일치해야한다.
-라이브러리 임포트하는 구문은 클라스 밖에 적어준다.
-static 정적변수, 프로그램이 실행될 때 무조건 실행되는 거다.
-void 함수의 return 값이 없음을 의미.
-(String[] args) 함수가 시작될 때 넘겨받을 변수들(파라미터?), 문자열타입의 무한대 배열...

-참조형 변수는 크기가 정해져 있지 않고 힙영역에 원본값이 들어있는 곳을 가르키는 주소값을 저장한 것이다.
(C에 포인터 같은건가..?) 크기가 정해져있지 않았다는 말은 필요한 크기만큼 동적 할당을 한다는 말이다.
-생소한 부분이다. 확실히 개념을 잡고 넘어가자
-기본형 변수를 클래스로 한번 랩핑(감싸는)
-왜 감싸냐?? 클래스로 변수를 관리하면 클래스안에 있는 다양한 기능을 쓸 수 있기 때문!😁
변수
// 박싱
// Integer 래퍼 클래스 num 에 21 의 값을 저장
int number = 21;
Integer num = new Integet(number);
// 언박싱
int n = num.intValue(); // 래퍼 클래스들은 inValue() 같은 언박싱 메서드들을 제공해줍니다.