🙋코딩이란?
JVM(Java Virtual Machine)이 이해할 수 있는 문서(이력서)를 작성하는 것
(우리 언어는 고급이니까)
🙋 코딩을 어떻게 하지?
이미 convention이 되어 있지!
1. 클래스를 선언한다.
- 클래스의 구성요소는 두 가지
① 변수
② 메소드(뒤에 괄호가 있으면 메소드!)
→ 이것을 사용하려면 RAM에 끼워놔야 한다. 왜냐하면 눈에 보이는 하드웨어가 아닌 소프트웨어이기 때문에(메모리 활성화 하려면 인스턴스화 해야 함)
🙋 메소드란?
기능, 액션을 처리해주는 것. 기능을 구현해주는 것
기능을 구현하려면 선언을 해야한다.
2. 변수를 선언할 수 있다.- 변수는 저장소
3. 메소드를 선언할 수 있다(안할 수도 있다)- 메소드에는 2가지가 있음
① 제공되는 메소드 ② 사용자 정의 메소드
→ 메소드는 제공되는 기능도 있지만, 사용자 정의 메소드를 선언할 수도 있어야 함
4. 메인메소드가 있어야(반드시 선언해야) 실행할 수 있다
(결과를 확인할 수 있다)- exe 파일로 만들 수 있다 → 배포할 수 있다 → 서비스
🙋 클라우드에 저장하면 좋은 점?
어디에 있든 동기화가 된다
🙋 JVM 자바버추얼머신을 왜 설치했지?
컴파일 하기 위해(JVM이 컴파일 처리 주체). 이클립스나 VScode가 컴파일을 해주며, 이게 있어야 실행할 수 있다 → 즉, exe 파일을 만들 수 있다(exe파일이 있어야 배포 가능)
: 이미 많은 것들이 구현(내장)되어 있으며, 이것을 다르게 말하면 API라고 한다. 이 제공되는 API가 가리키는 게 클래스를 얘기하는 것이고, 클래스는 동사(메소드)/명사(변수)를 가질 수 있다
🙋 API를 사용한다는 것은?
선언하고 호출한다는 것. JDK가 있어야 하기 때문에 OpenJDK 설치함
(OpenJDK17설치 → JVM가상기계를 갖게 되었다.
: 이것이 있어야 main 메소드 가진 클래스를 실행할 수 있다)
🙋 컴파일이란?
1. xxx.java가 xxx.class로 바뀌는 것
(확장자가 자바에서 클래스로 바뀌는 것)
2. 또는 고급언어가 저급언어로 바뀌는 것
🙋 컴파일을 실행하려면?
main메소드(동사-기능)가 있어야 함
깃이 있어야 로컬레포, 웹레포 만들어서 동기화 및 저장소 소스 공유가 가능
- cmder(커맨더) 설치
https://cmder.app/
명령프롬프트(cmd)나 파워쉘 대신 cmder 사용
🙋 언제 사용하지?


1. workspace_java
2. dev_java
3. src(source) / bin(binery)
① src: source 이 안에는 확장자가 xxx.java로 들어간다.
② bin: 바이너리 폴더 안에는 명령어(실행 명령어 java/컴파일 명령어 javac)가 있다. 여기에는 xxx.class가 저장이 된다 → 얘가 만들어져야 JVM에게 일을 시킬 수 있다
| src | bin |
|---|---|
| 고급언어 | 저급언어 |
| 주석 보이지 않음 | 주석 있음 |
| .java | .class |
| 코딩은 src에 함(src에 작성된 것) | bin을 배포(bin 폴더에 관리) |
*src(.java)를 실행파일로 만들려면 메소드(프론트엔드에서는 함수)가 필요하기 때문에 괄호()를 붙임
🙋 그렇다면 작성 순서는 어떻게 될까?
1. 클래스 선언 2. 선언부(변수. 메소드 등) 3. main 메소드
package com.step1;
public class JFrameTest1 {
// 선언부
// 생성자 선언
// 사용자 정의 메소드 선언
// 메인메소드 선언
public static void main(String[] args) {
}
}

🙋 인스턴스화란?
메모리(RAM)에 개발자가 작성한 문서를 로딩하는 것.
클래스를 사용하기 위한 과정
(ex. 변수선언 → 호출하기
변수의 소유주는 클래스. 이런 것들을 누리기 위해 인스턴스화)


🙋 클래스 선언 방법은?
(public) class 클래스명 {
}
<예제1>
package com.step1;
import javax.swing.JFrame;
// 자바에서는 디폴트 패키지 외에는 모두 패키지 명을 다 적어야 하는데
// 반복되는 코드가 발생하니까 import라는 예약어를 지원함
public class JFrameTest1 {
// 선언부
// 자바가 제공하는 클래스를 호출하려면 인스턴스화를 해야 함(이것은 컨벤션-약속)
// 아래 문장을 작성하면 jf라는 변수로 그 클래스가 소유(정의된)하고 있는
// 전역변수나 메소드를 호출할 수 있다 - 사용
JFrame jf = new JFrame();
// 생성자 선언
// 코딩한다는 것은 JVM과 소통하는 것 - 시나리오
// 사용자 정의 메소드 선언 - 화면에 윈도우창을 하나 띄워본다
public void initDisplay() {
// 메소드 호출은 끝에 세미콜론을 붙인다
// setTitle 메소드의 파라미터 자리에는 문자열 타입이 와야 함
// 이미 타입이 결정되어 있다
jf.setTitle("처음 만들어보는 윈도우 창");
jf.setSize(500, 400); // 가로, 세로 사이즈
// 2개의 파라미터가 필요한(콤마로 알 수 있음) 열거형
jf.setVisible(true); // 트루여야 화면이 보임
jf.setVisible(false);
jf.setVisible(true);
}
// void: 의미는 비어있다는 것. 여기서는 반환값이 없다는
// 메인메소드 선언 - 개발자가 호출하지 않아도 제일 먼저 실행됨(뭐가? 메인메소드가) - 누가? jvm이 호출
public static void main(String[] args) {
// insert here
// 내 안에 구현된 메소드라 하더라도 메인메소드 안에서 호출하려면 인스턴스화
JFrameTest1 jft = new JFrameTest1();
jft.initDisplay();
}
}
< 혼자 공부하는 자바 - 주의 깊게 공부해야 하는 챕터>
CHAPTER 2 변수와 타입 (1. 변수 선언하기 2. 8가지 타입을 알고, 변수 타입 결정하기)
CHAPTER 4 조건문과 반복문 (이론이 아닌 코딩으로 반복 필요)
CHAPTER 6 클래스
CHAPTER 13 컬렉션 프레임워크 (자료구조)
🖱 단축키
ctrl + d : 해당 줄 전체코드 삭제
Sys + ctrl + 스페이스 + Out : System.out.println(); 자동완성