1.3 자바의 기본


자바 환경설정은 작성하지 않았습니다. 구글링하면 많이 나오니 참고해주세요 



자바 개발환경이 준비가 되었다면 제대로 구축이 되었는지 확인하기 위해 프로그램 언어 세계에서는 관례가 된 "Hello World!"를 표시하는 애플리케이션을 만들고 실행했다.


하지만, 자바를 처음 공부하는 사람에겐 이 소스 코드가 무엇을 나타내는지, 어떻게 해서 'Hello World!'를 표시하는지가 궁금할 것이다. 그러므로 이 절에서는 자바 프로그래밍의 기본 문법을 학습하도록 한다.


자바에서는 소스 코드를 기술 할 때 유의해야 할 몇가지 규칙이 있다. 실제로 소스 코드를 읽거나 기술하기 전에는 최소한 알아두는 편이 좋은 자바 형식을 살펴보자.



자바 형식


자바 소스 코드는 주로 다음 3가지 요소로 기술한다.

- 자바에서 지정한 키워드

- 소스 코드 작성자가 직접 붙인 이름(식별자)

- 뭔가 역할을 가진 기홈(연산자 등)


자바에서 지정한 키워드를 예약어라고 한다.

예약언느 컴파일 시 프로그램을 분석하는 데 사용되는 단어 또는 true, false, null 등 이미 그 단어 자체에 프로그램 상의 의미가 있는 값을 나타낸다. 그러므로 예약어와 똑같은 단어는 식별자로 지정할 수 없다.


식별자란 소스 코드를 기술하는 사람이 붙인 이름을 말한다.


예를 들어 프로그램에서 'OO가 ☆☆를 ◇◇한다'와 같은 처리를 기술할 때 이들이 각각 무엇을 나타내는지 그리고 무엇을 하는지 등 그 의미를 사람이 읽고 이해할 수 있게 프로그램 언어에서 허용된 문자로 붙인 이름이다.


또한 계산과 조건 판정 등에 사용하는 기호를 연산자라고 한다. 따라서 기호는 _와 $를 제외하고 식별자로 사용할 수 없다.


키워드, 식별자, 연산자를 자바 문법에 따라 서로 연결해 자바의 문(statement)을 만든다.


다시 몇 개의 문을 모아 블록을 만들고 자바 애플리케이션을 만든다.



문과 블록


자바 소스 코드는 문과 복수의 문을 모은 블록으로 구성된다.

문에서는 단어나 기호를 조합해 값을 설정하거나 처리를 호출한다. 그리고 문의 맨 끝에는 세미콜론(;)을 붙인다.


블록은 복수의 문을 묶어 순서대로 배치함으로써 하나의 큰 처리 흐름이나 문의 영향 범위를 나타낸다.

{와 }로 에워싼 범위가 블록이다. 예를 들어 '사람'이라는 블록을 다음처럼 설정해보자.


- '이름'과 '취미'가 설정된 문

- '자기소개를 한다'와 '인사를 한다'를 나타내는 처리 블록


다음은 설정 예이다.


예제 1-1 블록과 문


----------------------------------------------------------------------------------------------------------------------------


사람 {

이름은 'OO';

취미는 'XX';


자기소개를 한다 {

인사를 한다;

이름을 말한다;

취미를 말한다;

}


인사를 한다 {

인사말은 '안녕하세요';

인사말을 한다;

}

}


----------------------------------------------------------------------------------------------------------------------------


블록 내의 문에는 각각 유효 범위가 설정되어 있다. 블록 내에서는 같은 계층 혹은 블록 밖에 있는 문이나 블록을 참조할 수 있지만, 블록 밖에서는 블록 내에 있는 문을 참조할 수 없다.





소스 코드 구조


자바의 소스 코드는 단순하게 보면 다음과 같은 구조로 기술한다.

- 소스 코드가 무엇을 나타내는지 선언

- 선언 블록 내에 값을 설정하기 위한 변수를 정의

- 선언 블록 내에 변수값을 사용한 처리를 기술


변수란 프로그램 안에서 값을 전달하기 위한 상자이다.

프로그램 안에서 계산을 하거나 가공한 값을 임시로 보관하는 데 사용한다. 변수 선언이나 처리를 기술하지 않아도 소스 코드는 성립하지만 우선은 이 3가지로 구성되는 것이 기본이다.



그리고 이번에 만든 '사람' 에제를 이 3가지 요소로 예를 들면 다음과 같다.


구성 요소 

예제에서의 대상 

소스 코드가 나타내는 것 선언 

사람 

변수(값을 가진 것)선언

이름, 취미, 인사말 

처리를 기술 

자기소개를 한다, 인사를 한다. 



클래스 선언


자바에서는 소스 코드로 나타내고자 하는 것이 무엇인지 블록으로 감싸서 선언한다.

구체적으로는 다음과 같은 것을 선언한다.


- 클래스

- 인터페이스

- 열거형


여기서는 이 중에서 가장 자주 사용하는 클래스를 만드는 방법을 설명한다.

클래스를 학습하고 나면 인터페이스와 열거형도 이해하기 쉬워진다.


클래스는 다음 구문으로 선언한다.


[구문] 클래스 선언

class 클래스명 {

... 클래스 내용 ...

}



클래스를 선언하는 블록에서는 class 키워드를 선두에 놓고 공백으로 구분한 뒤에 클래스명을 지정한다.

이렇게 선언된 class 블록 아래에 클래스가 사용할 변수나 처리를 기술함으로써 클래스의 성질과 동작을 연결시킬 수 있다.

좀 전에 예로 든 '사람'클래스에는 '이름'과 '취미'라는 변수가 있었고, 처리로는 '자기소개를 한다', '인사를 한다'라는 기능이 있었다.



변수 설정


자바 애플리케이션은 변수로 값을 유지한다.

변수에 값을 설정하려면 = 기호를 사용하며, = 기호 왼쪽에는 변수명을, 오른쪽에는 설정할 값을 쓴다.

이것을 대입(혹은 할당) 이라고 한다.


다음은 변수를 선언하는 구문이다.


[구문] 변수 선언(값을 대입하는 경우)


변수형 변수명 = 값;


변수형이란 그 변수에 어떤 값을 담을 수 있는지 나타내는 정보로, 수치, 무낮, 클래스 등을 지정할 수 있다. 변수에는 선언한 자료형의 값만 설정할 수 있다.


변수에 값을 설정한 다음에는 변수를 지정해서 값을 가져올 숭 ㅣㅆ다.


다음곽 ㅏㅌ이 값을 대입하지 않고 변수를 선언할 수도 있다.


[구문]변수 선언 (값을 대입하지 않는 경우)


변수형 변수명;


이 경우 변수형의 기본값(아무것도 설정하지 않으면 자동으로 설정되는 정해진 값)이 대입된다.

좀 전에 만든 클래스를 에로 들면 '이름'과 '취미'에는 문자열을 설정하므로 자바의 문자열 클래스인 String으로 형을 지정한다.

문자열 값을 나타내려면 값의 앞뒤를 큰 따옴표(")로 에워싸야 한다.


위 설명을 바탕으로 '이름' 변수를 다음과 같이 선언할 수 있다.


예제 1-2 '이름' 변수 설정

----------------------------------------------------------------------------------------------------------------------------

String 이름 = "?";

----------------------------------------------------------------------------------------------------------------------------


변수형은 처음에 변수명을 선언할 때만 지정하면 되고, 값을 변경할 때는 다음처럼 쓸 수 있다.


[구문] 변수의 값 변경

변수명 = 값;


값 부분에 계산식 등 어떤 처리를 넣은 경우 변수에는 처리 결과가 값으로 설정된다. 예를 들어 1 + 1의 계산 결과를 대입하고 싶을 때는 다음과 같이 기술한다. 변수형은 수치형 중 하나인 int로 한다.



예제 1-3 계산 결과를 수치형 int에 저장한다.

----------------------------------------------------------------------------------------------------------------------------

int 계산_결과 = 1+ 1;

----------------------------------------------------------------------------------------------------------------------------


지금까지 이해한 내용을 다시 '사람'클래스로 표현하면 다음을 문자열 변수로 지정할 수 있다.


- 이름

- 취미

- '인사를 한다' 안에 있는 인사말


이 문자열 변수를 자바 문법에 맞게 다시 쓰면 다음과 같이 된다.


class 사람 {


String 이름 = "?";

String 취미 = "?";


자기소개를 한다 {

인사를 한다;

이름을 말한다;

취미를 말한다;

}


인사를 한다 {

String 인사말 = "안녕하세요?";

인사말을 한다;

}

}


예제에서 '이름'과 '취미'는 클래스의 상태를 나타내는 변수이다.

이처럼 클래스의 블록에서 직접 선언한 변수를 필드(field)라고 한다.


메서드 기술


자바 애플리케이션에서는 어떤 처리가 포함된다. 처리에는 1+1처럼 처리를 나타내는 기호를 사용해 표현하는 식(expression)과 몇 개의 처리를 묶은 메서드(method)가 있다.


위 예제를 바꾸면 다음과 같다.


class 사람 {


String 이름 = "";

String 취미 = "";


void 자기소개를 한다() {

인사를 한다;

System.out.println(이름);

System.out.println(취미);

}


void 인사를 한다() {

String 인삿말 = "";

System.out.println(인삿말);

}

}



여기서는 '~를 한다'는 처리를 화면에 문자열을 출력하는 System.out.println으로 바꿨다. 지금 단계에서는 System.out.prntln을 문자열을 출력하는 명령이라고만 기억하자.




가변 길이 인수


자료형이 같은 인수가 여러 개 이어질 경우 인수형 뒤에 '...'을 붙임ㅇ로써 0 ~ 복수 개의 인수를 지정할 수 있다. 이거을 가변 길이 인수라 하며, 다음과 같이 기술한다.


[구문] 가변 길이 인수

반환형 메서드명(인수형 ... 인수명) {

.... 임의의 처리 ....

}



이때 전달받은 인수는 같은 형의 값을 하나로 묶은 배열로 다루어진다. 이 메서드를 호출하는 쪽은 몇 개라도 같은 형의 값을 가변 길이 인수에 담아 넘길 수 있게 된다. 값은 쉼표로 구분해 표현한다. 물론 값을 넘기지 않는 것도 가능하다.


그럼 다시 좀 전의 예제에 생성자를 추가해서 인스턴스 생성 시 '이름'과 '취미'를 설정할 수 있게 해보자.


생성자를 기술하기 전에는 인스턴스를 몇 개를 만들더라도 모두 같은 '이름'과 '취미' 값만 가질 수 있었지만. 생성자를 추가함으로써 인스턴스마다 이름과 취미를 따로 설정할 수 있게 된다.



class 사람 {


String 이름 = "";

String 취미 = "";


(new 키워드로 인스턴스 생성)


사람(String 이름, String 취미) {

this.이름 = 이름;

this.취미 = 취미;

}

(new 사람 ("혜린", "음악 감상"))


void 자기소개를 한다(){

인사를 한다;

System.out.println(이름);

System.out.println(취미);

}

void 인사를 한다(){

String 인사말 = "안녕하세요";

System.out.println(인사말);

}

}



여기서는 같은 사람 클래스에서 다음처럼 다른 인스턴스를 생성했다.


- 이름이 '혜린'이고 취미가 '음악 감상'인 사람 인스턴스

- 이름이 '도준'이고 취미가 '축구'인 사람 인스턴스







































'프로그래밍 > JAVA' 카테고리의 다른 글

1.3.3 접근제한자  (0) 2019.01.22
1.3.2 패키지  (0) 2019.01.22
1.1.3 자바 애플리케이션 작성  (0) 2019.01.22
1.1.2 왜 자바일까?  (0) 2019.01.22
1장 자바 기초 지식  (0) 2019.01.22
TAGS.

Comments