• 영타는 200타 이상 만들자
  1. 이클립스 설치
    https://www.egovframe.go.kr/home/sub.do?menuNo=94

🙋코딩이란?
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메소드(동사-기능)가 있어야 함

  1. 깃 설치
    https://git-scm.com/download/

깃이 있어야 로컬레포, 웹레포 만들어서 동기화 및 저장소 소스 공유가 가능

  1. cmder(커맨더) 설치
    https://cmder.app/

명령프롬프트(cmd)나 파워쉘 대신 cmder 사용

🙋 언제 사용하지?

  • 설치된 버전을 확인할 때
  • 깃 실습시 GUI 방식이 아닌 명령어를 사용해서 깃의 상태 공부

트리구조

1. workspace_java

  • 작업 공간을 만들었음(프로젝트 아님)

2. dev_java

  • 프로젝트. 배포하는 이름
  • dev(developer) 자바 진영에서 zip의 이름을 다르게 가져간 것
  • 이걸로 dev_java.jar(로컬)/war(웹)를 만들 수 있다(동기화)
  • jar: 자바로 생성 / war: 웹으로 생성 / ear: 엔터프라이즈로 생성
  • 배포할 때는 로컬뿐만 아니라 웹 배포를 위해 war 사용

3. src(source) / bin(binery)

  • dev 프로젝트에 src(소스)와 bin(바이너리)이 있음

① src: source 이 안에는 확장자가 xxx.java로 들어간다.
② bin: 바이너리 폴더 안에는 명령어(실행 명령어 java/컴파일 명령어 javac)가 있다. 여기에는 xxx.class가 저장이 된다 → 얘가 만들어져야 JVM에게 일을 시킬 수 있다

srcbin
고급언어저급언어
주석 보이지 않음주석 있음
.java.class
코딩은 src에 함(src에 작성된 것)bin을 배포(bin 폴더에 관리)

*src(.java)를 실행파일로 만들려면 메소드(프론트엔드에서는 함수)가 필요하기 때문에 괄호()를 붙임

🙋 그렇다면 작성 순서는 어떻게 될까?
1. 클래스 선언 2. 선언부(변수. 메소드 등) 3. main 메소드

package com.step1;

public class JFrameTest1 {
   // 선언부
   // 생성자 선언
   // 사용자 정의 메소드 선언
   // 메인메소드 선언
   public static void main(String[] args) {
   }
}

  • 자바라는 패키지를 폴더라고 생각하면,자바 폴더 밑에 lang이라는 폴더가 있는데 그 폴더 밑에는 여러 개의 클래스가 이미 제공되고 있다. 이 클래스를 호출(사용)하려면 인스턴스화 해야 한다.

🙋 인스턴스화란?
메모리(RAM)에 개발자가 작성한 문서를 로딩하는 것.
클래스를 사용하기 위한 과정

(ex. 변수선언 → 호출하기
변수의 소유주는 클래스. 이런 것들을 누리기 위해 인스턴스화)

  • 클래스 이름의 빨간 줄은 JVM이 해당 클래스 이름을 찾을 수 없을 때 표시가 됨
  • import로 해결. 자바 폴더 아래 lang 폴더에 있는 것만 찾을 수 있다.
  • 패키지를 구분할 때 폴더 이름과 폴더 이름 사이에 dot(.)을 찍어 구분/식별한다.

🙋 클래스 선언 방법은?

(public) class 클래스명 {
}

  • 변수나 메소드를 선언할 때 public을 사용할 수 있다
  • public은 생략할 수 있지만, 모두에게 공유하고 싶다면 public(공개키)
  • 나만 알고 싶을 때는 private
<예제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 컬렉션 프레임워크 (자료구조)

  • 변수의 종류: 전역변수 / 지역변수 / 정적변수
    • 기초단계: 변수를 구분하고 선언
    • 중급: 기초를 넘어서 초기화하고, 변수의 위치 결정
    • 상급: 상태관리(인증 ex.로그인)

🖱 단축키
ctrl + d : 해당 줄 전체코드 삭제
Sys + ctrl + 스페이스 + Out : System.out.println(); 자동완성

0개의 댓글