컴퓨터가 인식할 수 있는 명령어의 나열(집합)
프로그램을 작성하는 과정 = 코딩
프로그램을 작성하는 사람
프로그램을 작성하기 위한 언어체계, 사람이 컴퓨터와 소통하게 하는 요소
OS 관계없이 동일 코드로 동작. 이식성이 높다고도 표현함.
능률적이고 명확한 코드 작성 가능
다른 언어의 단점 보완(포인터,메모리 관리)
Garbage Collection : 메모리 관리 개념 / 메모리 누수 방지
5. 동적 로딩 지원
6. 멀티쓰레드 지원
어떤 일 하나를 처리하는데 필요한 일꾼이 여러개 있음. 여러 작업 동시 처리 가능 (병렬 작업 효율적 수행)
7. 네트워크와 분산환경 지원
자바 가상 기계
Java를 실행하기 위한 가상 기계로 OS(운영체제)에 관계없이 독립적으로 동작.
java code 한번 작성하면 어디서든 실행 가능(이식성 높음)

우리가 작성하는 모든 자바 코드는 컴퓨터가 이해할 수 없는 말
컴파일러 : 0과1로 이루어진 byte code를 만들어줌
컴파일러가 변환 과정을 컴파일이라고 함
Java는 컴파일과 인터프리터가 같이 사용됨
JVM에서 자동 메모리 관리
Garbage Collector 코드/알고리즘 구현해주는 애
사용자/개발자 입장에 따라 설치하는 범위가 달라짐

JVM 무조건 있어야함
JRE 자바실행환경 Java Class Library 자바 코드 실행하는데 필요(API) 실행만 할거면 JRE 필요
JDK 자바 개발 도구 모음
SE 생 자바 자바만 사용하겠다
EE 웹 개발용 기업용 (이거 사용할거임)
ME 핸드폰 가정용 기계 프로그래밍 할 때 사용
Oracle JDK ==> Open jdk + a 학원에서는 못씀
추가 a 기능 유로임 개인 용도로는 사용 가능
https://jdk.java.net/archive/
Open JDK 8,11,17 LTS 버전
Long Term Support 실무에서 많이 사용
대소문자 구분없이 시작 가능
대문자사용을권장
숫자로시작X

package .은 하위를 뜻함
edu
->kh
->basic
패키지는 관련된 코드의 묶음
edu 1레벨 kh 2레벨 basic 3레벨 이상
배포시 파일명을 뒤집어서 배포됨(인터넷 주소 domain이 됨)
-> basic.kh.edu
자바 코드는 Class 파일 안에만 작성할 수 있다고 생각하면 됨
이름 첫번째 대문자로 시작 뒤에 오는 단어 대문자로 시작 파스칼 케이스라고 함
(카멜표기법과는 조금 다름)
ctrl +/- 글씨 크기 바꿔줌
ctrl / 주석
ctrl alt 방향키 작성한 방향으로 해당 줄 복사
ctrl s 저장
ctrl F11 실행
ctrl n 새폴더 만들기 단축키
ctrl d 한줄 삭제
syso 쓰고 ctrl spacebar
->System.out.println(); 자동완성
package edu.kh.basic;
// 한 줄 주석 : 컴파일러(번역기)가 해석하지 않는 부분 코드 진행에 아무런 문제가 없음
/* 범위 주석
*
*
*
* */
class : 자바 코드가 작성되는 영역
자동으로 작성돼있음
public class JavaTest {
main method(메서드) : 자바 애플리케이션(프로그램)을 실행하기 위해 반드시 필요한 메서드
method : 하나의 기능 단위
public static void main(String[] args) {
System.out.println("Hello world!!!");
System.out.println("점심 뭐 먹지?");
System.out.println("12345");

숫자 연산
"" 안에 작성된 코드는 단순 문자열로 인식
"" 안에 작성되지 않은 코드는 숫자, 변수로 인식
System.out.println("1+2");
System.out.println(1 + 2);

산술 연산자
System.out.println(50 - 23);
System.out.println(12 * 13);
System.out.println(327 / 3);
System.out.println(12 % 2);

""(문자열) + 숫자 함께 작성
System.out.println("14 * 19 =" + 266);
// + 대신 , 쓸 수 없음
System.out.println("14 * 19 =" + 14 * 19); // 연산 합쳐서 출력

연산 순서 앞에서부터 적용돼서 문자열 이어쓰기 됨
System.out.println("90 + 70 + 65 = " + 90 + 70 + 65);

자바는 사칙연산의 우선순위를 그대로 따름
-> 우선 계산을 원하면 () 괄호 사용
System.out.println("90 + 70 + 65 = " + (90 + 70 + 65));

+ 기호의 역할
-> 숫자 + 숫자 = 덧셈 연산 결과
-> 문자열 + 숫자 or 문자열 + 문자열 => 이어쓰기