이미 국비지원 자바기반 풀스택 개발자 양성과정을 참여하고 있다.
문제는 4개월 차에 접어들면서 제일 처음 배웠던 Java를 사용하는 빈도가 많이 적어졌고 프론트 엔드 보다는 백 엔드가 더 관심이 있어 개념을 보충할 필요가 있다고 생각했다.
패스트캠퍼스의 국비지원교육인 Java & Spring 웹 개발 종합반을 선택하게된 중요한 이유는 강사진에 있다.
남궁성 강사야 '자버지'로 불릴 정도로 Java, Spring 강의의 실력은 이미 입증이 되었고, 박은종 강사의 객체지향 설계를 위한 디자인패턴 with 자바
강의는 교육과정이 끝난 뒤 꼭 수강하리라 다짐하고 있던 차, 강의 스타일 및 품질을 미리 체험해볼 수 있는 기회였다.
제임스 고슬링이 썬 마이크로시스템즈에서 1995년에 개발한 객체 지향 프로그래밍 언어로 2010년에 오라클이 썬 마이크로시스템즈를 인수하면서 Java의 저작권을 소유하였다.
Java는 크게 다음과 같은 3가지 에디션으로 나뉜다.
Java SE (Standard Edition)
Java의 핵심 API와 기능들을 제공한다.
Java EE (Enterprise Edition) == Jakarta EE
서버에 특화된 에디션. 엔터프라이즈는 기업을 의미한다.
JSP, 서블릿 등 웹 애플리케이션 관련 기술이 포함되어 있다.
Java ME (Micro Edition)
PDA 등 소형 기기의 임베디드 시스템 환경에 특화된 경량 에디션이다.
Java의 가장 큰 특징은 플랫폼에 독립적
인 언어라는 것이다. 여기서 말하는 플랫폼이란 윈도우, Mac OS 등 컴퓨터의 운영체제이다.
C 언어의 경우 플랫폼에 맞는 기계언어로 컴파일 되기 때문에 Window 환경에서 컴파일한 파일을 Mac OS 에서 실행할 수 없다.
반면 Java 는 운영 체제에 맞는 JRE가 컴파일된 파일을 실행하므로 한번 컴파일 된 파일은 어느 플랫폼에서나 실행할 수 있다.
이처럼 다양한 플랫폼에서 실행하기 위해 포인터라는 강력한 로우 레벨 기능을 포기하고 가비지 컬렉터를 내장하여 안정성을 높였다.
자바는 객체지향 언어이므로 유지보수가 쉽고 확장성이 좋다라는 말을 자주 볼 수 있다.
그렇다면 객체 지향 프로그래밍이란 무엇일까?
객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
간단히 정리하자면 프로그램 구현에 필요한 객체를 파악하고 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 것을 말한다.
반대되는 개념인 절차 지향 프로그래밍은 기능을 중심으로 바라보는 방식으로 무엇을 어떤 절차로 할 것인지가 핵심이 된다.
즉, 객체 지향 프로그래밍이란 어떤 기능을 어떤 순서로 처리하는가라는 순서에 초점을 두기 보다는 누가 어떤일을 하는가의 상호작용에 초첨을 맞춘다.
JDK & Eclipse 설치 및 실행은 생략한다.
JDK 설치, Eclipse 설치, Java 환경변수 편집을 검색하면 자세히 알 수 있다.
package 패키지명; // 유사한 클래스들을 묶어줄 패키지 ( 폴더와 비슷 ) 선언
import 다른 패키지에 있는 클래스명; // 외부 클래스 사용 선언
class 클래스명 {
static 자료형 변수명; // 클래스 변수 // static int i = 10;
자료형 변수명; // 인스턴스 변수 // String str; // double d;
public static void main(String[] args) { // main method
/* 시작될 기능 구현 코드 */
} // main method의 끝
public 반환타입 메소드명(매개변수, 매개변수, ...) {
/* 메소드 기능 구현 코드 */
} // 메소드명 메소드의 끝
} // class의 끝
Java 프로그래밍은 위와 같은 구조로 작성한다.
실행범위는 코드상에서 ‘{ }’ 로 표시하고 ‘{’ 은 코드의 시작을, ‘}’은 코드의 끝을 의미하며 블록이라 표현한다.
블록 내에서는 블록 사이에 있는 소스코드만 사용이 가능하고 다른 실행범위에 있는 소스 코드는 일반적으로 사용할 수 없다.
소스 코드의 내용 이해를 돕기 위한 설명 문구를 주석이라고 한다.
// 한줄 주석
/*
여러 줄 주석
*/
/**
도큐먼트 작성용 주석
*/
주석 내의 문구는 소스코드로 인식되지 않는다.
변수란 하나의 Data를 저장할 수 있는 공간, 방정식에서 사용하는 x = 10 과 같다. 변수에 기록된 Data는 고정되어 있지 않고 다른 Data가 기록되면 기존의 Data는 삭제되고 새로운 Data가 기록된다.
기록되는 Data의 종류에 따라 변수의 자료형을 정해야 한다.
변수를 사용하지 않으면 Data를 일일히 수정해야하는 번거로움이 있다. 변수를 사용하면 입력된 값을 재사용할 수 있어 코드가 간결해지고 유지보수가 쉽다.
int a = 10;
int b = 20;
System.out.println(a + b);
System.out.println(a - b);
자료형이란 변수에 기록되는 Data의 종류라 할 수 있으며 Java는 기본적으로 8개의 기본형 타입을 제공한다.
자료형 | 키워드 | 크기 | 키본값 | 값의 범위 |
---|---|---|---|---|
논리형 | boolean | 1byte | false | true or false |
문자형 | char | 2byte | '\u000' | 0 ~ 65,535 |
정수형 | byte | 1byte | 0 | -128 ~ 128 |
정수형 | short | 2byte | 0 | -32,768 ~ 32,767 |
정수형 | int | 4byte | 0 | -2³¹ ~ 2³¹ - 1 |
정수형 | long | 8byte | 0L | -2의 63제곱 ~ 2의 63제곱 - 1 |
실수형 | float | 4byte | 0.0f | -3.4E38 ~ 3.4E38 |
실수형 | double | 8byte | 0.0 or 0.0d | -1.7E308 ~ 1.7E308 |
Class를 사용자 정의 자료형 이라고 하며, Class를 자료형으로 하여 선언된 변수를 레퍼런스 변수라고 한다. 문자열을 저장하는 String Type 이 대표적이며 참조형의 갯수는 제한이 없다.
String str = "문자열";
참조형 변수는 이 후 교육과정에서 더 자세히 알아본다.
Memo
연산자란 어떤 기능 또는 대상에 계산과 같은 처리를 수행하는 기호라 할 수 있다.
int i = 10;
위 코드에서 = 가 연산자이며 좌측의 int 타입 i 변수와 우측의 값 10이 피연산자가 된다.
이처럼 두개의 피연산자가 필요한 연산자를 이항연산자라고 하며 단항, 이항, 삼항 연산자가 있다.