Java 웹 개발

[코드프레소 웹 개발 체험단] - 처음 시작하는 Java 프로그래밍

m_yell 2022. 1. 16. 03:00

- 코드프레소 Java 웹 개발 체험단 활동 중

- 코드프레소 이러닝 강의 수강 중 '처음 시작하는 Java 프로그래밍'

 

이 글은 코드프레소 Java 웹 개발 체험단 강의 중 '처음 시작하는 Java 프로그래밍' 강의 내용입니다.

 

  •  Java 언어의 특징

1) WORA : Write Once Run Anywhere

- 한 번 작성 및 컴파일이 된 결과물이 어디서든 동작 가능

 

2) 객체 지향 언어

- 상속, 다형성, 캡슐화 등의 객체지향적 요소를 언어적으로 지원

 

3) 자동화 된 메모리 관리 

- JVM의 Garbage Collector가 사용되지 않는 메모리 자원을 회수. 개발자가 직접 메모리 관리를 하지 않아도 된다.

 

  • Bytecode : Java 소스코드를 빌드했을 경우 생성되는 중간 코드
  • JVM(Java Virtual Machine) : Bytecode를 실행하기 위한 가상 머신, WORA를 구현하는 핵심

 

C 언어 경우, 윈도우에서 컴파일된 결과물을 윈도우와 리눅스 다 실행할 수 없지만 Java는 JVM만 설치되어있으면 실행 가능하다.

 

  • JRE

- Java Runtime Environment

- JVM + Java 애플리케이션 실행에 필요한 추가적인 라이브러리 등을 포함

- Java 애플리케이션을 실행하기 위한 기본 단위 (실행 환경)

 

  • JDK

- Java Development Kit

- JRE + Java 개발 도구를 포함

- Java 개발을 위해서는 JDK 설치가 필수


  • Java 기초 문법 요소

1) 클래스

- Java 프로그램의 기본단위

- Java 프로그램은 한 개 이상의 클래스로 구성

- 일반적으로 1개의 클래스는 1개의 Java 파일 (파일과 클래스명이 동일해야하고, 클래스명은 대문자로 시작)

 

* 객체는 속성과 행동을 가지고 있다. 사물을 의미.

클래스는 객체를 만들기 위한 툴

 

2) 메소드 (메인 메소드)

- Java 프로그램의 시작점

 

3) 블록과 세미콜론

- 여러 라인의 코드를  { } 로 묶은 단위

- 클래스 블록과 메소드 블록 등 다양한 블록이 있다.

- 실행 가능한 코드라인(명령문)은 세미콜론(;) 으로 종료되어야하고 세미콜론이 생략되면 에러 발생

 

4) 들여쓰기

- Java에서 들여쓰기는 실행에 영향을 주지 않음 (가독성을 높이기 위해 사용)

* 파이썬은 들여쓰기가 잘못되면 에러가 발생

- 들여쓰기 방법을 모르는 경우 자동 Formatting 기능 사용 (IntelliJ 경우 : Ctrl+Alt+L

or [code]메뉴 → [Reformat Code])

 

5) 표준 입출력

- Java는 키보드 등으로부터 입력을 받고, 모니터에 출력하기 위한 기본 라이브러리 제공

- System.out.println() 함수는 출력 및 줄 바꿈 수행


  • 변수

- 데이터를 저장하기 위한 공간, 이름이 존재

- 자료형 변수이름; 으로 변수 선언

int age; 
float number; // 변수 선언

age = 10; // 변수에 값 대입

int age = 10; // 변수 선언 및 동시에 초기화

 

  • 기본 자료형 : 값 자체를 저장하고 있다.
  • 참조 자료형 : 다른 객체에 대한 참조를 저장하고 있다.

long으로 자료형을 저장하려면 뒤에 'L' or 'l'을 적어준다.

float으로 저장하려면 뒤에 'F' or 'f'를 적어준다.

 

  • 문자 자료형(char) : ' ' 을 사용. (문자 1개를 저장)

문자열은 " " 으로 표현

 

  • 참조 자료형 : String(문자열), Array, Collections(List, Map, Set, ...), 개발자가 만든 객체

문자열은 객체이기 때문에 행동을 할 수 있다. 

Ex) 문자열변수명.length(), toLowerCase(), toUpperCase(), ...

 

* 비교 연산자의 결과는 True or False(boolean값) 가 된다.

* new 키워드로 String 객체 생성 가능

String name1 = "CodePresso"; // 방법 1
String name2 = new String(original:"CodePresso"); // 방법 2

//문자열 비교
System.out.println(name1 == name2)  //False가 출력된다.
// 객체끼리 비교할때는 equals( )메소드를 사용해야한다.
System.out.println(name1.equals(name2)); //True 출력

* 참조 변수는 객체에 대한 참조값을 저장 → 동등 연산자 사용 시 참조 값에 대한 비교를 수행 (객체 자체를 비교하는 게 아니다)

* 문자열의 경우, 실제 문자열 안에 들어있는 값를 비교하기 위해서는 equals() 메소드 사용

 

* 괄호를 사용한 연산의 우선순위를 명시하면 가독성이 향상된다.

 

  • 확장 형 변환 ( = 자동 형 변환) : 작은 크기의 자료형의 값을 큰 크기의 자료형에 넣는 거
  • 축소 형 변환 ( = 명시적 형 변환) : 큰 크기의 자료형에서 작은 크기의 자료형으로 형 변환, 데이터가 손실될 수 있다. 개발자가 직접 명시해줘야함.
// 축소 형 변환
double pi = 3.1415;
int n;

n = (int)pi;

  • 제어문 : 조건문, 반복문

- 조건문 : if, else if, else, switch 의 키워드 사용. { }와 들여쓰기는 필수. 명령어가 한 줄인 경우 { }는 생략 가능하지만 쓰는 걸 추천. boolean 결과를 가지는 명령은 조건식을 구성할 수 있다. else문만 단독으로 사용할 수 없다.

if-else if-else문에서 if는 최초 1번만, else if는 없거나 여러번 사용 가능, else문은 없거나 마지막에 1번 사용.

 

AND 연산자 : && → 결과는 boolean형으로 조건문에서 빈번하게 사용

OR 연산자 : ||

 

* 깊은 레벨로 중첩된 조건문은 코드의 가독성을 저하시킨다.

 

- Switch - Case 문

switch(조건식){
	case 값1:
    	//조건식의 결과가 값1인 경우 수행할 코드
        break;
    case 값2:
    
    	break;
    default:   
    
}

* break문은 생략 가능, 이 경우 switch문이 종료될때까지 모든 문장을 수행

* switch 조건식의 결과 (=case)는 정수 또는 문자열이어야한다.

* case문에는 정수, 상수, 문자열 상수만 올 수 있다. (변수와 실수는 불가)


  • 배열 

- 단일 배열에는 동일한 자료형의 데이터만 저장 가능

- '자료형[] 변수명' 으로 선언

int[] today;

- Java 배열은 객체이며, 선언과 동시에 객체 생성 가능

- new 키워드 사용. 생성 시 배열의 길이를 명시

* Java에서 객체를 생성할때는 new 라는 키워드를 사용

자료형[] 변수명 = new 자료형[길이]

 

int[] today = new int[10];

길이가 10인 int형의 배열 객체 생성

today 변수에 생성한 배열 객체의 참조를 저장

배열은 객체이고, 배열을 저장하는 변수는 참조 자료형 변수

 

// 배열의 선언과 초기화 동시에
자료형[] 변수명 = {값1, 값2, 값3, ...}

* 배열의 크기는 { }안의 값의 개수에 따라 결정됨

* index를 이용해 배열의 값을 바꿀 수 있다.

 

배열 객체는 length라는 속성 보유 → 변수명.length

속성을 가지고 올때는 ( ) 안쓰고, 메소드를 불러올 때는 ( ) 사용


  • for 문
for(초기식;조건식;증감식) { 

}

 

  • Enhanced for문

- 배열 내 저장된 모든 값을 순차적으로 참조하기 위한 다른 형태의 for 문 (= for-each style이라고도 불림)

String[] languages = {"Java", "Python", "C", "C++"}

for (int i = 0; i < languages.length; i++) {
	System.out.println(languages[i]);
}

//////////////////////////////////

String[] languages = {"Java", "Python", "C", "C++"}

for (String languages:languages) {
	System.out.println(languages);
}

// 위 코드는 동일한 코드
  • 문법
for (자료형 변수명 : 배열명) {
	명시한 배열의 길이만큼 실행할 코드들;
}

배열에 있는 걸 하나씩 꺼내와서 임시로 데이터를 저장할 변수가 왼쪽에 위치

왼쪽의 자료형은 배열 내에 저장되어있는 자료형과 동일해야한다.

별도의 종료 조건을 명시하지 않고 배열에서 가져올 데이터가 없는 경우 반복문은 종료

주로 배열, 컬렉션등에 저장된 원소 데이터를 읽는 목적으로 사용

 

  • 반복문 제어

break 문 : 반복문을 완전히 중단 (자신과 가장 가까운 반복문 전체의 실행을 중단함)

continue 문 : 현재 반복을 중단하고 다음 반복으로 넘어감

 

 

- 코드프레소 URL : https://www.codepresso.kr/ 

 

프리미엄 IT 교육 서비스 - 코드프레소

 

www.codepresso.kr