J9 - 자동 형변환

자동 형변환

리터럴을 변수에 대입할 때는 변수와 리터럴이 반드시 같은 형이어야 하지만 변환이 되어도 정보의 손실이 없는 경우 자동 형변형이 됩니다. 자동 형변환은 계산식 안에서도 발생합니다.

long a = 10; //10L로 자동 형변환되어 a에 대입
double b = 10; //10.0으로 자동 형변환되어 b에 대입
double x = 3.5;
double y = x * 2;  //2가 자동으로 2.0으로 자동 형변환되어 계산에 사용

만일 형변환이 있을 경우 데이터의 손실이 생기게 되면 자동 형변환이 되지 않고 컴파일 에러가 발생합니다.


int c = 10.5


위의 소스에서 보자면, 10.5는 double 인데 int 인 c에 대입하고자 하면 10이 되고 결국 소수점 이하 0.5가 손실되므로 컴파일 에러가 발생합니다.

자동 형변환이 가능한 경우

  • 정수형에서는 비트수가 작은 형에서 큰 형으로
  • 정수형은 부동소수점형(실수형:float)로 자동 형변환

자동 형변환이 가능한 방향

byte → short / char → int → long → float → double

캐스트

자동 형변환이 되지 않는 경우는 앞에서 설명한 대로 '손실이 발생할 때'입니다.
그러나 프로그래머가 의도적으로 혹은 어느 정도의 데이터 손실을 감안하는 경우에 강제적으로 형변환을 하는 경우
이것을 캐스트라고 합니다. 자동 형변환과는 반대의 방향으로 이루어 지는 강제적 형변환 입니다.

캐스트 입력하는 법

(변환하려는 형)캐스트 대상   //변환하려는 형을 괄호로 묶는다.

예)

int a = (int)5.5;
double b = (double)10;
byte c = 9.5;


캐스트가 필요한 형변형의 방향

byte ← short  ← int ← long ← float ← double
byte ↔ char  ← int
short ↔ char


  • 캐스트는 리터럴과 변수, 식에 적용가능
  • boolean형은 어떤 형으로도 캐스트 불가
  • String형은 char형 등 기본 데이터형으로 캐스트 불가

J8 - 변수(Variable)

변수

프로그램에서는 몇 가지 이유로 변수가 필요한데, 이 변수라는 것은 문자나 숫자 같은 데이터를 담는 컨테이너 입니다. 변수에 담겨진 데이터로는 다른 데이터로 바꿀 수 있으며, 일반적으로 우리가 사용하는 언어에서 대명사와 비슷한 역할을 한다고 이해하면 쉽습니다.

예를 들어 수학에서 다음 식은 "x는 10이다"를 의미합니다.

x = 10

프로그램에서도 다음과 같이 적으면 "x에 10을 대입한다"라는 의미가 되고, 결과적으로 x는 10이 됩니다.

x = 10;

수학에서의 등호(=)는 "같다"라는 의미입니다만, Java에서는 "대입한다"라는 의미로 사용됩니다.
변수에는 여러 가지 값을 대입할 수 있습니다. 예를 들어 다음과 같은 것도 가능합니다.

var = 10;

또한 새로운 값을 다시 var에 재설정하는 것도 가능합니다.

var = 20;

이렇게 하면 var의 값이 20으로 바뀌게 됩니다. 즉 변수는 이름 그대로 내용을 자유롭게 변경할 수 잇습니다. 다음과 같이 입력하면 어떻게 될까요?

var = var+1;

위의 식은 수학적으로는 틀립니다. 이것이 등호의 용도나 의미가 수학에서의 그것과 다른 대표적인 예 입니다. Java에서는 var에 1을 더해 var라고 정의한다라는 의미지요. 수학에서는 양변이 같다는 의미 입니다만, Java에서는 우변의 계산 결과를 좌변에 대입한다는 의미 입니다.

변수의 이름을 붙이는 법

변수의 이름은 자유롭게 정할 수 있습니다. 프로그래머가 정한 이름을 식별자라고 하는데 변수명 외에도 클래스명에도 있습니다. 식별자는 모든 문자를 다 사용할 수 있는 것은 아닙니다. 아래 정리된 것 처럼, 알파벳 대, 소문자와 아라비아 숫자, _(언더바), $만이 가능하며 이 외의 문자를 사용하게 되면 에러가 발생합니다.


식별자에 사용할 수 있는 문자
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 _ $

아래와 같은 식별자인 경우 에러가 발생합니다.

ex#1   &prog  project-01


식별자를 만드는 방법은 다음과 같은 약속이 있습니다.


  • 첫 문자는 숫자로 시작할 수 없다
  • 영문자의 대, 소문자를 구별한다.
  • 예약어는 사용불가
  • 이름의 길이는 거의 제한이 없다(문자열의 데이터 범위와 같은 범위)
위의 약속을 참고해 보자면 다음의 식별자들은 사용할 수 없습니다.

99name   1_var

또한 대, 소문자를 구별하기 때문에 철자가 같아도 아래의 식별자는 모두 다른 이름으로 식별합니다.


program    Program    ProGram    proGram   PrograM


예약어

예약어는 Java에서 이미 정해진 단어로 선언이나 처리를 위한 것이므로 일반적인 식별자로 사용하지 못합니다.

abstract    assert    boolean    break    byte    case    catch    char    class    const    continue    default    do    double    else    enum    extends    final    finally    float    for    goto    if    implements    import    instanceof    int    interface    long    native    new    package    private    protected    public    return    short    static    strictfp    super    switch    synchronized    this    throw    throws    transient    try    void    volatile    while

예약어라도 문자의 일부를 대문자로 바꾸거나, 일부로 사용하는 것은 괜찮습니다.

ASSERT    Class    Void_09    thisprogram

식별자를 만드는 관습

많은 프로그래머들이 식별자를 정할 때 오랜 관습으로 굳어진 규칙을 따르는 데요. 이것을 지키지 않는 다고 해서 에러가 발생하거나 잘못된 것은 아닙니다. 하지만 익혀두면 다른 프로그래머들의 소스를 볼 때 한 눈에 알아보기 좋을 것 같네요

  • 소문자로 시작한다.
  • 2 개 이상의 단어를 쓸 때는 두 번째 이후의 단어는 첫 글자를 대문자로 쓰거나 언더바로 연결한다.
예를 들어보자면,

myfirstprogram -> myFirstProgram 혹은 my_first_program
bigdataproject -> bigDataProject 혹은 big_data_project

이런 식으로 만드는 거죠. 식별자가 클래스 이름이나 변수명, 패키지이름일 때에 따라 아래와 같은 관습을 따릅니다.

  • 클래스명
    • 기본적으로 소문자 사용
    • 첫글자는 대문자
      Myproject
      Bigdataproject
      My_class
  • 변수명, 패키지 이름 등
    • 기본적으로 소문자 사용
    • 첫글자는 소문자
      myProject
      bigDataProject
      my$class

변수 선언

변수의 값을 대입하기 전에 사용하는 변수의 형을 이름과 함께 선언합니다. 변수를 선언할 때는 반드시 형 이름, 변수 이름, 세미콜론의 순서를 따라 선언해야 합니다.

int a;
a = 1;

위의 코드를 보면 int라는 키워드가 있고 뒤에 a가 오고 마지막에 세미콜론(;)으로 구문을 마쳤습니다.
int가 바로 형 이름, 즉 정수형 데이터를 사용하겠다라는 의미이고, 그 다음 a는 그 정수형 데이터의 이름이 a라는 것이고 세미콜론으로 구문의 끝을 나타내고 있습니다.

값을 대입하기 전에 반드시 변수 선언을 해야 하며, Java에서 세미콜론은 생략할 수 없습니다.

변수 선언시 주의 사항


  1. 같은 이름의 변수를 다시 선언하면 안된다.
    데이터 형이 다르더라도 같은 이름의 변수가 다시 선언되면 안됩니다. 변수값을 재설정하는 것(변수에 다른 데이터값을 대입하는 것)과는 다른 것입니다.

    int a;
    a = 10;
    double a;
    a = 152;
    

    위에서 3행에 double a;로 변수 a를 또 선언했습니다. 이런 경우 에러가 발생합니다.
  2. 다른 형의 리터럴을 사용할 수 없습니다.
    변수 선언 시, 정수형이라고 int로 선언을 하면 선언한 변수에 정수가 아닌 실수형 데이터를 넣지 못합니다. 반드시 선언한 데이터 형의 리터럴을 할당해야 합니다.

    int a;
    a = 10.5 // int형 변수인 a에 10.5라는 double형 변수를 대입했다.
    

  3. 선언과 동시에 값을 할당 할 수 있다

    int a = 10;
    int b = c + 1;
    
  4. 여러 개의 변수를 한 번에 선언할 수 있다

    int a, b, c;
    
  5. 여러 개의 변수 중 일부 변수만 초기화(재설정) 할 수 있다.

    int a = 2, b, c;
    

J7 - 데이터의 종류

Java 언어에서 사용하는 데이터의 종류에는 크게 두 가지가 있습니다. 기본 데이터형과 참조형이 그것 입니다. 각각의 데이터형에 대해 알아보도록 하겠습니다.

기본 데이터형

기본 데이터형은 예전부터 계속 사용하던 전통적인 데이터형을 일컬으며 그 종류에는 정수형, 부동소수점형, 문자형, 논리형 데이터가 있습니다.


정수형

소수점이 없는 정수를 의미합니다. 또한 정수형에는 int, byte, short, long의 4 가지 데이터가 있습니다.

  • int - 대부분의 정수형 데이터는 int 사용, 데이터의 범위는 -2,147,483,648~2,147,483,647
  • byte - -128~127 사이의 좁은 범위를 사용하지만, 작은 데이터를 덩어리로 해서 사용할 때, 음의 진폭이나 그래픽의 색깔, 통신 데이터 등을 나타낼 때 사용.
  • short - int의 반 정도의 메모리를 사용하는 경제적 정수형 데이터. 범위는 ±32,000정도. 대량의 메모리를 이용할 수 있는 현재 사용 메리트 없음.
  • long - int로 다룰 수 없는 큰 범위의 정수의 경우에 사용. 숫자의 끝에 L을 붙여서 long형 데이터라는 것을 명시해야 함. L을 붙이지 않으면(소문자L도 가능) 컴파일 에러 발생.

부동소수점형

소수점이 붙어 있는 실수형 데이터. 소수점의 위치를 별도로 지정한다는 의미로 double형과 float형이 있습니다.

  • double - float의 2배에 가까운 유효자릿수를 가진다는 의미로 실수형 데이터는 주로 double을 사용.
  • float - 현재는 거의 사용하지 않는 추세. 숫자 끝에 F(혹은 f)를 붙어야 함.

문자형

한 개의 문자를 다룹니다. 컴퓨터에서는 모든 문자에 번호를 할당하고 문자를 정수로 바꿔서 저장해 두는데요, 어떤 문자를 어떤 번호에 할당할지는 여러 방법이 있습니다. Java에서는 유니코드라는 세계 표준 규격을 따르고 있습니다. 

  • char - 문자 한 개분의 정보를 저장하며, 작은 따옴표롤 사용. 

논리형

명제의 진위를 다루는 명제 논리를 위한 데이터형. 어떤 명제가 맞다는 true, 틀렸다면 flase가 됩니다.

  • boolean - 논리형은 참과 거짓을 표현. 항상 true와 false 중 한가지로만 도출.

참조형


참조형 데이터는 객체를 가리키는 형으로 배열, 클래스형, 인터페이스 형의 세 가지가 있습니다.


배열


순서가 있고, 같은 형의 원소들의 모임을 의미하고 배열은 배열 변수를 선언하고 각 원소의 형과 차원을 명시해야 합니다. 자세한 내용은 별도로 배열에 관해 정리해 보겠습니다.

인터페이스

자바 언어에서 클래스 외에 인터페이스라는 것을 제공하는데, 이러한 인터페이스 객체를 참고하기 위한 데이터형

클래스

클래스 객체를 참조하기 위한 자료형

문자열형

처음에 이 내용을 접하면서 위의 문자형과 혼동했었습니다만, 문자형과 문자열형의 다른 점은 2개 이상의 문자가 나열된 형태를 데이터로 삼는 것입니다. 위에 정리한 모든 데이터형은 모두 기본 테이터형입니다만 이 문자열형은 클래스형에 속한답니다.


J6 - 출력명령

System.out.println


System.out.println은 어떤 것을 출력할 때 사용하는 명령입니다. 명령문이기 때문에 앞에서 말씀드린데로 메소드 안에서만 사용할 수 있습니다.

System.out.println("Hello World");


괄호안에 큰따옴표로 묶여 있는 문자열을 출력하는 명령입니다.

여기서 주의할 점은 system.out.println 과 같이 소문자로 시작하면 에러가 난다는 점입니다.

이유는..... 저도 잘 모르겠습니다. 그냥 그렇게 정한 것 같아요.
약속에 이유는 없죠. 그냥 그렇게 정한 거니까... 뒤따라 가는 저같은 사람은 그 약속 지킬 수 밖에요...

또 한 가지 알아두면 좋은 것이 있습니다.

System.out.println과 뒤에 ln이 빠진 System.out.print 이 있다는 점.
ln이 있고 없고의 차이는 출력을 하고 나서 개행(줄바꿈)을 하냐 안하냐의 차이랍니다.

예를 들어볼게요.

public class J6_println {

    public static void main(String[] args) {
        System.out.println("println 명령을 사용하면 ");
        System.out.println("문자열을 출력하고나서 ");
        System.out.println("줄바꿈을 합니다.");
    }

}

위의 소스를 직접 실행해보면 어떻게 나올까요?





이번에는 그냥 print로 사용해 볼까요?

public class J6_print {

    public static void main(String[] args) {
        System.out.print("print 명령을 사용하면 ");
        System.out.print("줄바꿈 없이 한 줄로 ");
        System.out.print("문자열을 출력합니다.");
    }

}



예상대로 줄바꿈의 차이가 보이네요.

참고로 ln은 line의 의미라고 합니다. 출력시 개행과 개행이 없는 방법에 대해 알아보았습니다.

J5 - 들여쓰기와 주석문

들여쓰기


프로그래밍을 배우면서 소스코드를 보면 들여쓰기가 되어 있는 것을 볼 수 있는데요, 이걸 영어로는 인덴트(indent)라고 한답니다. 들여쓰기를 하는 목적이야 프로그램의 내용을 눈에 쏙쏙 들어오도록 하고 쉽게 찾아볼 수 있도록 하기 위한 것인데요....

package indent;
    public class HelloWorld {
        public static void main(String[] args) {         System.out.println("Hello World");     } }

위와 같이 블럭(중괄호로 묶은 내용)문은 오른쪽으로 4칸을 들여씁니다. 보통 편집기에서 Tab키로 가능합니다.

위의 소스에서 보면, 메소드 부분 안에 또 다른 블럭이 있는데 이렇게 겹겹이 블럭문이 있어도 상위 블럭문의 시작에서 4칸 들여쓰기를 하면 됩니다.

그런데 중요한 사실은, 실제 들여쓰기를 하지 않으면 틀린 것인가 하는 것입니다.


앞서 설명했듯이 인덴트는 소스를 보기 좋게, 한 눈에 들어오도록, 그 구조를 인식하기 쉽게 하기 위한 것이므로 극단적이지만 들여쓰기나 개행(줄바꿈)이 없어도 오류가 나지 않는다는 것입니다.


package indent; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); }}

위에 처럼 개행과 인덴트를 전혀 사용하지 않고 작성을 하더라도 정상적으로 동작을 한다는 것이죠.
다만, 문법적으로 구별하기 위한 공백은 지켜줘야 한다는 사실. 기억해야 겠네요.

그럼, 무작정 아무 때나 들여쓰느냐..... 는 아니구요. - 물론 작성자 맘대로 해도 되겠지만 - 프로그래머들의 오랜 시간동안 굳어진 약속이랄까요, 불문율 같은 게 있습니다. 정리해 보자면 다음과 같습니다.

코드 띄어쓰기 원칙


  • 세미콜론, { }를 입력하고 나서는 개행.
  • { }로 둘러싸인 블럭문은 이전 시작 위치보다 4칸(Tab) 들여쓰기
  • } 는 왼쪽으로 4칸 당겨쓴다. (블럭문의 시작에서 여는 괄호, {가 포함된 라인의 시작점을 기준하여 4칸 당겨씁니다.)
  • 들여쓰기는 Tab키로 입력.

위의 원칙을 적용해서 일반적인 코드를 작성한 것을 살펴보겠습니다.

package indent; //세미콜론으로 개행
public class HelloWorld { //블럭의 시작에서 개행
    public static void main(String[] args) { //블럭의 시작. 4칸 들여쓰기. 세미콜론으로 개행
        System.out.println("Hello World"); 블럭문은 4칸 들여쓰기. 세미콜론으로 개행
    } // 블럭닫기는 블럭의 시작 라인보다 4칸 당겨쓰고 개행
} // 블럭닫기는 블럭의 시작 라인보다 4칸 당겨쓰고 개행

일반적으로 프로그래밍 언어 편집 프로그램(여기서는 Eclipse)는 라인의 끝에 개행을 위해 Enter키를 누르면 자동으로 들여쓰기가 됩니다.


주석문


주석문은 말그대로 프로그램에 설명을 붙이기 위해 사용합니다. 주석. 즉, 설명문인데요. 프로그램 어디든 적을 수 있으며 프로그램의 특정 코드에 대해 설명이 필요할 때, 사용 목적이나 어떤 내용이든 프로그래머의 설명을 적는 것입니다.

주석문에는 3 가지 형태가 있습니다.

여러 행의 주석


/*
* 여러 행의 주석의 형태
*/


/*로 시작해서 */로 끝나는 형태입니다. 이 형태는 보통 클래스와 메소드의 설명을 적기 위해 사용하고 보통 제목이나 타이틀을 적을 때 사용한답니다.


예)

/* 여러 행의 주석 형태 */
/*** 별이 많아도 무관합니다. ***/
/*/* 슬래시와 별이 중첩되는 형태라면 에러가 발생합니다. */*/


설명문을 작성하기 위한 주석

/**
* Hello World라는 문자열을 출력하는 메소드
* 2015.09.18 작성
*/


이건... 사실 저도 아직 무슨 차이가 있는 건지는 모르겠지만, javadoc이라는 프로그램이 읽어내어 설명문을 작성할 때 이용한다는데요. 나중에 이 부분 공부를 하게 되면 후에 자세히 적어보겠습니다.


한 줄의 주석

아마도 가장 많이 사용할 형태의 주석일 것 같은데요, 고수님들이 만들어 놓은 다른 프로그램을 보아도 이 한 줄 주석이 제일 눈에 많이 띄더군요. 사용법은 간단합니다. 그냥 슬래시를 2개 연이어 적고 그 이후 주석을 적으면 됩니다.

// TODO Auto-generated method stub
// 한 줄의 주석은 줄바꿈을 하면 안됩니다. 개행 이후에 있는 내용은 에러를 야기합니다.
/////// 물론 슬래시가 많아도 되구요, 뒤에 슬래시가 많이 붙어도 됩니다. 주석으로 인식하니까요 /////
//// 이렇게 줄을 바꾸면,
               에러가 나겠지요;; ㅜㅜ /////


J4 - 프로그래밍의 시작:Hello World

프로젝트와 패키지 그리고 클래스를 만드는 것에 대해 알아보는 시간입니다.

일단, 전 시간에 정리했던 Eclipse 설치법과 JDK설치 및 환경설정에 대해 준비가 되어 있는 상태이므로 Eclipse를 실행해서 프로젝트를 만들어 봅니다.

대부분의 프로그래밍 언어교재를 보면 첫 시작은 "Hello World"를 출력하는 프로그램으로 시작을 하는데, 자바도 그러네요 ^^;

Hello World 프로그램을 만들어 보겠습니다.


프로젝트 만들기


신규 프로젝트 작성 버튼을 클릭하거나 메뉴의 '파일>새로 만들기>Java 프로젝트'로 시작합니다.



대화창이 나타나면 프로젝트 이름에 첫 프로젝트이니 FirstProj라고 입력해 봅니다. 물론 이 이름은 마음대로 정해도 됩니다.




여기서 프로젝트와 패키지는 실제로 폴더로 만들어 지게 되는데, 기본위치라고 나타나는 경로가 바로 그 위치 입니다.

프로젝트 이름을 작성할 때 주의할 점
+ 대시(-)를 넣어 만들 수 있습니다.
+ 일반적으로 PC에서 폴더이름으로 사용할 수 있는 문자라면 무엇이든 가능합니다.
완료를 클릭하면 아래와 같이 패키지 탐색기에 'FirstProj'라는 프로젝트가 만들어 집니다.




패키지 만들기

패키지를 만들기 위해 위에서 만든 패키지 'FirstProj'를 클릭하여 선택한 후 새 패키지 작성 버튼을 클릭합니다.




파일>새로 작성>패키지의 메뉴를 통해 같은 작업이 가능합니다.
대화창이 나타나면 이름란에 패키지 이름을 적어넣고 완료를 클릭합니다.
여기서는 sample이라는 패키지 이름을 사용했습니다.





완료를 클릭하면 아래와 같이 패키지탐색기에 sample 패키지가 나타납니다.




같은 방법으로 source라는 패키지도 하나 더 만들어 봅니다.





클래스(프로그램) 만들기

앞서 Java에서는 프로그램을 클래스라고 한다고 했는데요, 방금 만든 두 가지 패키지 중 어디에 클래스를 만들 것인가를 정해야 합니다. 여기서는 sample 패키지에 클래스를 만들기 위해 sample을 선택하고 새 Java 클래스버튼을 클릭합니다.




새 Java 클래스라는 이름의 대화창이 나타나면,

  1. 이름에 클래스 이름을 적습니다. 여기서는 HelloWorld라고 하겠습니다.
  2. public static void main(String[] args) 에 체크를 합니다.
  3. 완료 버튼을 클릭합니다.




프로그램 작성

 위에 까지 순서대로 하셨으면 프로그램의 뼈대가 자동으로 만들어져 아래 그림과 같은 소스를 볼 수 있습니다.


6번 라인에 보면 

// TODO 자동 생성된 메소드 스텁

이라는 구문이 보이는데요, 이것은 프로그램 작성자가 코드에 구체적인 설명을 붙이는 주석이라고 합니다. 있어도 되고 없어도 되는 것으로 프로그램 실행에는 아무런 지장이 없는 것입니다만, 형식을 잘못 구성하면 주석문으로 인식하지 않고 에러가 날 수 있으니 나중에 주석문 공부시간에 자세히 알아보도록 하겠습니다.

7번 라인이 공백인데 이곳에 다음과 같이 입력해 봅니다.

System.out.println("Hello World!!");




여기까지 됬다면 저장합니다. 저장은 습관화 합시다. 저장 없이 예상치 못한 상황으로 날려먹기라도 한다면.... 나만 손해... ㅜㅜ





프로그램 실행


작성한 프로그램을 실제로 동작시켜 보겠습니다. 패키지 탐색기에 있는 HelloWorld.java를 우클릭하여 실행도구>Java 응용프로그램을 클릭합니다.





그러면 아래 콘솔창에 Hello World!! 라고 출력이 된 것을 볼 수 있습니다.

성공!!



J3 - 프로그램의 구성요소

프로그램 작성법에서는 고유의 약속이 있다고 합니다. 어떤 프로그램이든 문법과 약속을 따라야 하는데, 이번에는 이것에 대해 공부합니다.

패키지문과 공백


아래의 짧은 프로그램이 있습니다.

package sample;
public class HelloWorld {

    public static void main(String[] args) {

        System.out.println("Hello World!!");

    }

}

1항을 패키지문이라고 하고 2, 4, 8번 라인은 공백 라인입니다. 공백라인은 무시해도 됩니다. 단순히 코드가 눈에 잘 들어오게 하는 것입니다.

클래스 선언

클래스 선언이란 프로그램의 이름을 선언하는 것으로 Java에서는 프로그램을 클래스라고 한답니다. 3번 라인은 클래스가 시작되는 부분으로 클래스 선언이라하고 public class는 클래스를 선언할 때 사용하는 약속문이고 HelloWorld가 클래스 이름이 됩니다. 클래스 이름은 작성자가 마음대로 정하면 되지만 첫 글자는 반드시 영어 대문자여야 합니다.

그리고 5, 6번 라인에 보이는 {, }는 프로그램의 몸체에 해당하는 부분인데, 이 중괄호로 묶인 부분을 블럭이라고 합니다.

메소드

위에서 설명한 몸체, 즉 body에 해당하는 부분을 메소드라고 하는데, 이 메소드는 하나의 클래스(프로그램)내에 몇 개라도 만들 수 있습니다만, 저는 초보 중에서도 상초보이기 때문에 일단 메소드가 하나만 있는 클래스만 배우는 것으로 시작합니다.

위의 예제 코드에서 5~7번 라인까지가 메소드 선언이라고 하고 아마도 public static void가 메소드를 선언하는 구문인 것 같습니다. 뒤에 main이 메소드의 이름이라고 하니, 클래스 선언과 같은 구조라면 그렇게 이해하는 것이 맞는 것 같고, 일단 public이 무언가를 선언하는 것이고 static void면 메소드, class면 클래스 선언.... 인 것 같습니다. 아직 책을 다 보지 못했기 때문에 고수님들이 알려주시면 수정하고, 뒤에 다른 내용이 나오면 수정하도록 하겠습니다. 맞으면 이대로 남겠지요 :)


명령문

6번 라인은 Hello World!! 라는 문자열을 출력하는 명령문이랍니다. 이처럼 메소드 안에서 구체적인 일을 실행하는 구문이 명령문이며 모든 명령문은 메소드의 블럭 안에 있어야 합니다. 일단 뭐가 복잡하고 의미도 모르는 단어들이 점으로 구분되어 있긴 한데 여기서는 형태만 눈에 익히고 넘어가는 게 좋겠습니다.

명령문의 마지막에 세미콜론(;)이 붙어 있는데, 이것은 빠지면 안되는 것이고 프로그램에서는 마침표의 역할을 한다고 이해하면 쉽다고 하니 그런가보다하고 넘기면 될 것 같습니다.


[요약]
1. 프로그램의 시작은 패키지문으로 시작한다.
2. 프로그램 작성은 보기 좋게 공백라인과 들여쓰기로 정리한다.
3. 클래스 선언은 프로그램의 이름을 선언하는 것이며 반드시 영문대문자로 시작한다.
4. 메소드는 클래스를 구성하는 단위다.
5. 명령문은 일을 실행하는 처리구문이며 반드시 메소드의 블럭 안에 있어야 한다.
6. 세미콜론은 줄을 바꿀 때 사용하며 마침표와 같은 역할이다.

J2 - Java개발환경 구축 - JDK와 Eclipse

우선 Java로 개발을 하려면 JDK(Java Development Kit)를 설치해야 하고, 그 외의 개발환경을 갖춰야 합니다.

이미 설치되어 있다면 이 과정은 건너뛰어도 되겠네요.

Java 프로그램을 작성하고 실행하고 편집하고 확인하는 통합개발환경(IDE:Intergrated Development Environment)이라는 시스템을 사용하고 있다고 합니다. 이 IDE를 사용하면 효율적으로 Java 프로그램을 만들고 확인할 수 있는데, 여기서는 Eclipse라는 IDE를 사용해 프로그램을 작성하기위해 환경을 갖추는 것 부터 해보겠습니다.

설치쯤 다 알고 있는 분들이나, 이미 설치를 하신 분은 패스해 주시고,
저처럼 아무것도 모르겠다 싶은 분들은 아래 자세히 보기를 눌러 보시기 바랍니다.


J1 - 시작, Java

프로그래밍 언어를 처음 접한 것이 초등학교때 였던가.... 아무튼 아주 오래전의 일이지만, 그 때 처음으로 Basic이라는 프로그래밍 언어를 처음 마주했다. 그 당시 집에 PC가 있는 친구는 한 반에 겨우 2~3명 정도. 방과 후에 우르르 몰려가 세상에 이렇게 신기한 물건이 또 있을까... 초록색 화면에 무슨 뜻인지도 모르는 영어로 뭔가가 잔뜩 써있는데, 이게 게임도 되고 그림도 그릴 수 있는 것이 그저 신기할 뿐이었다.

그후 어찌어찌 우리집에도 486컴퓨터가 들어왔고 그저 문서작성과 게임만 하는 가전제품으로 사용하다 대학에 들어가 그제서야 PC의 다양한 기능을 제대로 사용하기 시작했는데
그래도 여전히 나는 누군가 만들어 놓은 프로그램을 사용할 뿐, 내가 만들 수 있다는 사실은 전혀 몰랐다. 물론 주변에 이 분야에 두각을 나타내는 친구들이 있었지만 그냥 신기할 뿐이지 내가 이걸 배워봐야겠다는 생각을 한 것은 그 후로 한참 뒤의 일이었다.

하지만, 대학을 졸업하고 전공대로 기계설계일을 계속해온 나는 최근에서야 비로소 프로그램을 만들어보고 싶다는 생각이 들었다. 이제 모바일을 이용한 다양한 앱이 우리 생활에 깊숙이 들어와 이제는 우리 삶의 일부가 되었다고 해도 과언이 아닌 지금. 늦었다고 생각하면 한량 없이 늦은 때지만, 그래도 지금이라도 조금이나마 머리가 돌아갈 때 배워야겠다는 생각이 들어 주말에 시내 서점에서 프로그래밍 언어 서적을 사왔다.

선택한 언어는 Java.

많은 언어 중에 Java를 선택한 것은,

1. 객체지향언어
2. 웹에서 응용을 대응한 프로그래밍 언어
3. 멀티플랫폼 대응 언어
4. 안드로이드 앱개발의 기본 언어
5. 클래스가 풍부
6. 멀티스레드 기능, 서블릿, 가비지 컬렉션

등등의 이유에서다. 물론 책을 보고서야 알게된 내용이지만.

아무튼 앞으로 공부한 내용을 간단히 노트처럼 정리할 예정인데, 나 처럼 프로그래밍에 대해 거의 문외한인 구독자들과 방문자들께 작은 도움이라도 되길 바란다.