[Code.presso] 1주차-2. 처음시작하는 Java 프로그래밍

sorzzzzy·2022년 1월 13일
0
post-thumbnail

Code.presso Java 웹 개발 트랙 체험단 활동 중 수강하게 된 1주차 두번째 코스는 Java Programming 입문 과정이다🤗

강의 제목은 "처음시작하는 Java 프로그래밍"으로, 자세한 정보는 👇🏻아래👇🏻 링크를 통해 확인할 수 있다.

📌 처음시작하는 Java 프로그래밍 - 강의 정보

Java Programming 을 배우긴 했지만 주로 사용하는 언어는 아니었어서🤣 이번 강의를 통해 기초부터 다시 단단히 다지고, 완벽히 이해하고 넘어가려고 한다!

+) 변수와 연산자, 조건문, 반복문 등 이미 알고있는 기본 지식까지 모두 자세히 정리하진 않았고, 꼭 알아야 할 부분만 필자 나름대로 정리해보았다😉

✋🏻 포스팅 내 사용된 사진 파일들의 저작권은 모두 코드프레소에 있으며, 강의자료 공유 및 업로드는 불가능합니다.


🏷 Java 프로그래밍 언어의 소개

1️⃣ Java 언어 소개

Java 언어는 1991년 제임스 고슬링 주축인 그린 프로젝트로 시작되었으며, 2021년 기준 Java 18까지 출시되었다.

✔️ Java 특징, 하나
WORA - Write Once Run Anywhere

  • C, C++ 은 하드웨어에 의존적이라 다른 종류의 하드웨어에서 실행하려면 재컴파일이 필요하다.
  • 그러나 Java한번 작성되고 컴파일 된 결과물이라면 어떤 OS 에서든 동작이 가능하다!
    ➡️ 이를 가능하게 해주는 것이 JVM(Java Virtual Machine)

✔️ Java 특징, 둘
객체 지향 언어

  • Java 코드는 class를 기본 단위로 구성이 된다.
  • 상속, 다형성, 캡슐화 등 객체지향적 요소를 언어적으로 지원한다.

✔️ Java 특징, 셋
자동화된 메모리 관리

  • 모든 프로그램은 컴퓨터 메모리를 사용하는데, 메모리 자원은 한정적이라 효율적인 메모리 관리를 필수적으로 요구한다.
  • JVMGarbage Collector 는 개발자가 직접 메모리 관리를 하지 않아도, 사용되지 않는 메모리 자원을 알아서 회수한다.

✔️ Java 언어 적용 분야

Java는 다양한 분야에서 적용될 수 있는데 대표적으로,

  • 모바일 애플리케이션 개발
  • 웹 애플리케이션 개발

분야에서 가장 많이 적용된다.

📌 Point

  • Write Once Run Anywhere
  • 객체 지향 언어
  • JVM Garbage Collector 의 메모리 관리

2️⃣ Java 주요 용어

소스코드의 실행 과정이란, 소스코드를 컴퓨터가 이해할 수 있는 실행파일로 만들어주는 과정이다.

개발자가 소스코드를 만들면 컴파일/링킹/인터프리트의 과정을 거치고, 컴퓨터가 이해할 수 있는 결과물이 나오게 되고, 이 프로그램을 다양한 기기에서 실행할 수 있게 된다.

C언어의 경우, OS가 달라지면, 컴파일 과정을 다시 거쳐야 하는 번거로움이 있다😅
➡️ 이전에 설명했던 WORA와 맞지 않음

그렇다면, Java의 경우에는 어떨까🧐?


✔️ Bytecode

  • Java 소스코드를 빌드했을 때 생성되는 중간 코드이다.(어셈블리어와 유사한 형태)
  • 기계가 바로 실행시킬 수는 없다.

Bytecode 를 실행시키기 위해 필요한 것이 JVM 이다!

✔️ JVM

  • Java Virtual Machine
  • Bytecode 를 실행시키기 위한 가상 머신으로, WORA를 구현하는 핵심이다.
  • OS, HW 독립적으로 Bytecode를 실행할 수 있다.
    ➡️ Java Bytecode 와 OS/HW 사이의 번역기

✔️ JRE

  • Java Runtime Environment
  • JVM + Java 애플리케이션 실행에 필요한 추가적인 라이브러리
    ➡️ JRE에는 JVM이 포함되어 있다는 뜻
  • Java 애플리케이션을 실행하기 위한 기본 단위이다.
  • JRE = JVM + 라이브러리

✔️ JDK

  • Java Development Kit
  • JRE 와 여러 Java 개발 도구를 포함한다.
  • Java 개발을 위해서는 JDK 를 필수로 설치 해야한다.
  • JDK = JRE + Java 개발 도구

📌 Point

  • JVMJREJDK
  • Java 소스코드를 컴파일하면, Bytecode 라는 중간코드가 생성된다.
  • JVM 으로 플랫폼에 독립적인 WORA를 구현할 수 있다.
  • JRE실행 환경, JDK개발 도구를 제공한다.

🏷 변수와 연산자

1️⃣ 변수의 작명 - 규칙과 규약

📌 규칙과 규약

  • 규칙 : 반드시 따라야 하는 것으로, 그렇지 않을 경우 에러가 발생한다.
  • 규약 : 따르는 것을 강하게 권장하는 것으로, 따르지 않는다고 에러가 발생하진 않지만, 따르는 경우 코드의 품질과 가독성이 향상된다.

✔️ 변수의 작명 규칙

  • 변수의 이름은 알파벳, _ , $ 로만 시작한다.
  • 변수의 이름은 대소문자를 구분한다.
  • Java 언어에서 사용되는 키워드는 변수의 이름으로 사용이 불가능하다.
  • 특수문자는 _$ 만 사용할 수 있다.

✔️ 변수의 작명 규약

  • 변수의 이름은 최대한 의미 있는 이름으로 짓는다.
  • 변수의 이름은 알파벳 소문자로 시작한다
  • 여러 단어 연결시 각 단어의 첫글자를 대문자로 한다.(=camelCase)

2️⃣ Java 자료형의 개념


✔️ 기본 자료형 - Primitive Type

  • 값 자체를 저장한다.
  • 정수형(byte, short, int), 실수형(float, double), 문자형(char), 논리형(boolean)

✔️ 참조 자료형 - Reference Type

  • 객체에 대한 참조 정보를 저장한다.
  • String, Array, Collections(List, Map, Set...), 개발자가 직접 만든 객체

3️⃣ 참조 자료형과 문자열(String)

문자열 자료형 이란🤔?
➡️ 하나 이상의 연속된 문자들의 집합으로 큰 따옴표를 사용하여 표현한다.

문자열도 객체이기 때문에, 속성과 행동을 가진다!

  • String 변수의 메소드 호출
    • 문자열변수명.메소드이름()
    • ex) name.length()

여기서 아~주 중요한 부분💡

문자열은 객체이고, 참조형 변수이기 때문에 == 가 아닌 equals() 를 통해 비교 연산을 진행해야 한다!

== 는 주소값을 비교하는 연산이고, equals() 는 값 자체를 비교하는 연산이다.

참조 변수는 객체에 대한 참조 값을 저장하게 되는데, == 연산자를 사용할 시 위의 내용과 같이 참조 갑에 대한 비교를 수행한다.
문자열 비교와 같이 실제 객체 간의 동등 여부를 비교하기 위해서는 equals 메소드를 사용해야 한다는 점! 꼭 기억하자🤗

📌 이 부분에 대한 자세한 내용은 이전 포스팅에서 다룬 적이 있으므로 참고하자!


🏷 조건문

조건문의 경우 이미 이해하고 있는 단일 조건 if 문, if-else 문, if-else if-else 문은 제외하고, switch-case 문에 대해서만 정리해보겠다.


1️⃣ 다중 조건식을 표현하는 switch-case 문

조건문을 switch-case 문으로 표현하면, 경우의 수가 많아지더라도 간결하게 표현할 수 있다.
처리속도가 if-else if-else 문 보다 빠르다!

  • switch 문에는 조건식을 기재하고 중괄호({})로 블록을 만든다.
  • case 문에는 조건식에 대한 결과값을 명시하고, 끝에 콜론(:)을 붙인다.
  • case 문 내에는 각각이 수행할 코드와 끝에 break; 를 작성한다.
  • default 문을 작성한다.

2️⃣ switch-case 문의 흐름

  1. switch 문의 조건식을 계산한다.
  2. 결과와 일치하는 case 문으로 들어가 코드를 수행한다.
  3. break 를 만나면 switch 문을 빠져나간다.
  4. 만약 해당하는 case 문이 없을 경우 default 문을 수행한다

✔️ break 문

  • break 문을 만나면 switch 문을 빠져나갈 수 있다.
  • break 문을 통해 case 문의 코드 실행 영역을 구분할 수 있다.
  • break 문은 생략이 가능하며, 대신 이러한 경우 switch 문이 종료될 때까지 모든 문장을 수행하게 된다
    ➡️ 이러한 특징을 이용해 caseOR 조건을 활용할 수 있다!

3️⃣ switch-case 문의 제한

  • switch 조건식의 결과는 정수 또는 문자열이어야 한다.
  • case 문에는 정수 상수, 문자열 상수만 올 수 있다.(변수와 실수는 불가)

🏷 배열

Java 배열(Array)란, 데이터를 담을 수 있는 상자가 연결되어 있는 형태이다.
단일 배열에는 동일한 자료형의 데이터만 저장이 가능하며,
길이 속성을 가지고 있고 길이는 생성시에 고정된다.
또한 배열은 순서가 존재하며, 0으로 시작하는 번호 즉 index를 가진다.


1️⃣ Java 배열의 선언 및 객체 생성

  • Java 배열은 객체이며, 선언과 동시에 객체 생성이 가능하다.
  • new 키워드를 사용한다.
  • 생성시 배열의 길이를 명시해야 한다.

자료형[] 변수명 = new 자료형[길이]
➡️ int[] todayStockPrices = new int[10]
: 길이가 10인 int 형의 배열 객체
: todayStockPrices 변수에 생성한 배열 객체의 참조를 저장
: 배열은 객체이고, 배열을 저장하는 변수는 참조 자료형 변수


2️⃣ 배열의 선언, 생성 그리고 초기화를 한번에!

  • 배열의 선언, 생성, 초기화를 동시에 할 수 있다.
  • 배열의 크기는 중괄호 안의 콤마로 구분된 값의 개수에 따라 결정된다.

자료형[] 변수명 = {값1, 값2, ...}
➡️ int[] todayStockPrices = {1, 3, 5, 7}
➡️ 길이는 4


3️⃣ index를 활용한 배열 값 사용

변수명[index]
➡️ int[] ages = {1, 2, 3, 4, 5}
➡️ ex) System.out.println(ages[0])


4️⃣ 배열의 길이 확인

  • 배열은 객체이고, 객체는 속성을 가지고 있다.
  • 배열 객체는 length 라는 속성을 가지고 있다.
    ➡️ 변수명.length
    ➡️ ex) System.out.println(ages.length)

🏷 반복문

특정 코드를 반복해서 실행하는 반복문에 대해 간단히 알아보자!
반복문에는 대표적으로 for 문, while 문, continue-break 문이 있다.

1️⃣ for 문

✔️ for문 문법

  • 반복문을 위한 for 키워드 사용한다.
  • 반복을 위한 특정 조건을 (초기식; 조건식; 증감식) 으로 구분한다.
  • 중괄호 {}for 문의 코드 블록을 명시한다.
  • 조건식의 결과가 참인 동안 반복적으로 실행할 코드들을 입력한다.

증감식에는 반복문을 제어하는 변수의 값을 증가 또는 감소시키는 식이 들어간다.
증가 연산자(++), 감소 연산자(--), 그리고 대입 연산자(+=, -=) 또한 활용할 수 있다.

✔️ for 문의 활용
특정 문자열을 가져와서 출력할 수도 있다.
이때 사용하는 메소드가 charAt() 메소드이다.

String text = "codepresso"
System.out.println(text.charAt(5));

이처럼 charAt(index) 로 특정 위치의 문자열을 가져올 수도 있다!


2️⃣ Enhanced for 문

Enhanced for 문은 배열 내 저장된 모든 값을 순차적으로 참조하기 위한 다른 형태의 for이다.
Enhanced for 문은 별도의 종료 조건을 명시하지 않고, 배열에서 가져올 원소 데이터가 더 이상 없는 경우 반복문이 종료된다.
주로 배열, 컬렉션 등에 저장된 원소 데이터를 읽는 목적으로 사용된다.

  • for 문의 첫번째 값은 저장할 원소 데이터의 자료형과 변수명을 명시한다.
  • 콜론(:)을 기재한다.
  • 원소 데이터가 저장되어 있는 배열명을 명시한다.
  • 중괄호({}) 내에는 명시한 배열의 길이 만큼 실행할 코드를 작성한다.

3️⃣ while 문

반복문 구현을 위한 방법 중 하나로 비교적 구조가 간결한 while 문에 대해 알아보자!

✔️ while문 문법

  • 반복문을 위한 while 키워드를 사용하여 구문을 시작한다.
  • 반복을 위한 조건식을 작성한다.
  • 중괄호({}) 내에는 조건식의 결과가 참인 동안 실행할 코드들을 작성한다.

✔️ 주의해야 할 점

  • while 문은 조건식 결과가 참이면 계속해서 반복문을 실행한다.
  • 그렇기 때문에 중괄호({}) 내에는 조건식의 결과를 false로 만들 별도의 코드가 필요하다.
    ➡️ 그렇지 않으면 무한루프가 발생한다!

4️⃣ continue-break

반복문을 제어하는 continue-break 에 대해 알아보자.

✔️ break - 반복의 완전 중단

  • 자신과 가장 가까운 반복문 전체의 실행을 중단한다.
  • 주로 반복문 초입에 if 문과 함께 사용된다.

✔️ continue - 현재 반복의 중단

  • 반복문 진행중에 continue 를 만나면 현재 반복을 중단하고, 다음 반복을 위해 조건식으로 이동한다.
  • 주로 if 문 내부에서 사용된다.

1주차 두번째 강의인 "처음시작하는 Java 프로그래밍" 를 이렇게 완강했다!

이 코스는 Java를 처음 배우는 사람들을 위한 입문 코스이다.

기초 코스부터 다양한 분야의 IT 전문 교육 프로그램이 코드프레소 홈페이지(https://www.codepresso.kr/)에 존재하니 참고하면 좋을 것 같다😎

profile
Backend Developer

0개의 댓글