본문 바로가기

Developer/Java-oop

#002. Java 기본 다루기...

#002. Java 기본 다루기...

 

1. studypack 패키지에 basic 이라는 class를 만들어서 테스트한다. (만드는 방법은 #001 를 참고)

이제부터는 코딩 연습이기 때문에 이미지보다는 텍스트 위주로 내용을 채우겠다.

#001를 참고해서 class를 만든다면, 아래와 같은 화면이 될 것이다.

주석이 있는 부분에다가 코드를 넣어 실행하고, 지우고 다시 테스트 하는 방법으로 하겠다.

실행하는 방법은 상단에 플레이 버튼을 누르면, 하단의 결과창에 보이게 된다.

 

2. 간단하게 변수에 값을 넣고 출력을 한다.

테스트코드

int i = 81;

System.out.println("int i 의 값: " + i);

char c = 'A';

System.out.println("char c 의 값: " + c);

double d = 3.72;

System.out.println("double d 의 값: " + d);

int id = (int)3.72;

System.out.println("int id 의 값: " + id);

boolean b = false;

System.out.println("boolean b 의 값: " + b);

실행 결과

int i 의 값: 81

char c 의 값: A

double d 의 값: 3.72

int id 의 값: 3

boolean b 의 값: false

설 명

= 표시는 좌항변수에 우항의 값을 보관하라는 표시입니다.

아래 구문을 보면, i 에 81 을 보관하라는 구문입니다.

ex) int i = 81;

 

+ 표시는 +기준으로 좌측값과 우측값을 더하라는 표시입니다. (상수일 때는 덧셈을 문자열일 때는 문자를 붙여줍니다.)

아래의 구문을 보면, System.out.println 은 화면에 출력을 하라는 함수이며, ( ) 안에 값을 출력하라는 구문입니다.

ex) System.out.println("int i 의 값: " + i);

 

앞 강좌의 자료형을 보면 *int *double 이렇게 * 표시된 내용이 있습니다.

*표시는 기본 자료형 입니다.

81 를 입력하면 정수형이기 때문에 int (4byte)로 기본으로 인식을 합니다.

3.72 를 입력하면 실수형이기 때문에 double (8byte)로 기본으로 인식을 합니다.

좌항변수 정수(int형 4byte)이고, 우항변수 3.72는 실수(double형 8byte) 이며, 좌항변수에 우항을 넣지 못하기때문에 실수형 변수중 정수부분만 잘라서 정수 id 에 넣어줍니다. 그때 실수형 변수를 정수형으로 변환해주는 것을 형변환 이라고 합니다.

ex) int id = (int)3.72;

 

3. char .. 기본형 테스트 계속하기..

테스트코드

char c0 = 'A';

char c1 = '\u0041';

char c2 = 65;

System.out.println("c0 의 값 : " + c0);

System.out.println("c1 의 값 : " + c1);

System.out.println("c2 의 값 : " + c2);

실행 결과

c0 의 값 : A

c1 의 값 : A

c2 의 값 : A

설 명

char 형은 2byte가 기본형이다. 이유는 unicode 타입으로 저장하기 때문이다.

문장1: char 형의 기본 데이터 보관 방식이다.

문장2: unicode 로 값을 넣어도 자동으로 문자로 변하는 것을 볼 수 있다.

문장3: 숫자를 입력해도 ascii 코드 값 기준으로 문자가 들어가는 것을 볼 수 있다.

 

4. int, long .. 기본형 테스트 계속하기..

테스트코드

int i1 = 3;

int i2 = (int)3.14;

long l = 1234567890123l;

System.out.println(1/i1);

System.out.println(i2);

System.out.println(l);

실행 결과

0

3

1234567890123

설 명

문장1: int 형의 기본 데이터 보관 방식이다.

문장2: 1234567890123은 정수형이 계산할 수 있는 수보다 더 크다. 그런데 long 변수에 넣을 수 없는 이유는 정수기본형이 int이기 때문에 이정수는 long type 이라고 정수 숫자 뒤에 l(소문자L)을 표시해준다. 그렇지 않으면 오류가 발생된다.

문장3: int 형 변수에 실수데이터 3.14를 넣으려면, (int) 라는 형 변환 연산자를 입력해줘야만 정수부분만 보관이 된다. 4byte에 8byte를 넣지 못하기 때문에 8byte중 정수부분인 앞쪽 4byte를 넣어주는 것이다.

문장4: 1/i 의 결과는 1/3 둘 다 정수기 때문에 결과도 정수부분 0만 나온다.

 

5. float, double .. 기본형 테스트 계속하기..

테스트코드

double d1 = 3.3;

double d2 = 3;

float f = 3.14f;

System.out.println(1/d1);

System.out.println(d2);

System.out.println(f);

실행 결과

0.30303030303030304

3.0

3.14

설 명

문장1: 1/3.3 의 결과는 정수/실수 둘 중에 자료형이 큰 쪽으로 형 변환이 되어서 계산이 된다. 즉 1.0/3.3 로 계산이 됨으로 결과는 0.3030... 이 나오게 된다.

문장2: 정수3을 대입해도 자동으로 형 변환이 이뤄져 3.0 으로 들어가는 것을 확인할 수 있다.

문장3: 3.14도 실수 형 기본이 double 이기 때문에 실수숫자가 float형임을 표시하지 않으면 오류가 발생된다.

 

6. 기본연산자(사칙연산) 테스트해보기... ( + , - , * , / , % )

테스트코드

int i = 7 ;

int j = 3 ;

System.out.println("i 를 j로 더한 값 : "+ (i+j));

System.out.println("i 를 j로 뺀 값 : "+ (i-j));

System.out.println("i 를 j로 곱한 값 : "+ (i*j));

System.out.println("i 를 j로 나눈 몫 : "+ (i/j));

System.out.println("i 를 j로 나눈 나머지 : "+ (i%j));

실행 결과

i 를 j로 더한 값 : 10

i 를 j로 뺀 값 : 4

i 를 j로 곱한 값 : 21

i 를 j로 나눈 몫 : 2

i 를 j로 나눈 나머지 : 1

설 명

결과 자체가 설명이 된다.^^

 

7. 대입연산자 테스트해보기... ( = , += , -= , *= , /= )

테스트코드

int i = 1;

System.out.println("i = 1 후 i의 값 : " + i);

i += 3;

System.out.println("i += 3 후 i의 값 : " + i);

실행 결과

i = 1 후 i의 값 : 1

i += 3 후 i의 값: 4

설 명

문장1: 정수형 i변수에 1이란 값을 보관하라는 구문이다.

문장3: i+=3 은 풀어서 i=i+3 과 같은 의미다. 기존 i에 1이 들어 있었으므로. i=1+3 이 된다.

 

8. 단항연산자(증감연산자) 테스트해보기... ( ++ , -- )

테스트코드

int i = 1;

System.out.println("i = 1 후 i의 값 : " + i);

i++;

System.out.println("i++ 후 i의 값 : " + i);

실행 결과

i = 1 후 i의 값 : 1

i++ 후 i의 값 : 2

설 명

문장3: i++ 은 풀어서 i+=1 관 같은 의미다. 즉 i=i+1 과 같은 의미이다. 기존 i에 1이 들어 있었으므로 i=1+1 이 된다.

 

9. 제어문 테스트하기... ( if , switch )

9-1) if ( ) : 가로 안에 내용은 다른 프로그램(c++, c#, vb....)과 다르게 true, false가 될 수 있는 식 또는 값만 들어갈 수 있다.

테스트코드

int i = 3, j = 4;

if ( i > j ) {

    System.out.println("i 가 j 보다 크다. ");

} else     if ( i == j ) {

    System.out.println("i 가 j 같다. ");

} else {

    System.out.println("i 가 j 보다 작다. ");

}

실행 결과

i 가 j 보다 작다.

설 명

문장1: 저렇게 두 개의 변수를 같이 선언을 할 수가 있다.

문장2: 첫 번째 조건을 비교 후 맞으면, 문장3이 실행된다.

문장4: 문장2가 틀렸다면, 문장4의 조건으로 비교 후 맞으면 문장5가 실행된다.

문장6: 위 조건에 맞는게 없다면, 문장7이 실행된다.

그러므로 결과는 문장7이 되겠다.

9-2) switch ( ) : 가로 안에 내용은 정수, 문자가 들어갈 수 있다.

테스트코드

char c = 'C';

switch (c) {

    case 'A': System.out.print('A');

    case 'B': System.out.print('B');

    case 'C': System.out.print('C');

    case 'D': System.out.print('D'); break;

    case 'E': System.out.print('E'); break;

    default: System.out.print('Z');

}

실행 결과

CD

설 명

문장1: c 변수에 C 문자를 보관한다.

문장2: c 변수의 값을 위에서부터 아래로 찾는다. 문장5가 같으므로 문장5를 실행 후, break; 를 만날 때까지 아래로 실행을 한다. 문장6을 실행 후, break; 를 만나 밖으로 나온다. 그러므로 결과는 CD 가 출력된다.

문장8: 위에 만족하는 조건을 못 찾았을 경우 문장8이 실행된다.

 

10. 반복문 테스트하기... ( for , while )

10-1) 같은 문장을 반복해서 사용할 때 for 문을 사용한다.

테스트코드

int i=0;

for( i=0; i<3; i++ ){

    System.out.println("i의 값: " + i);

}

System.out.println("i의 값: " + i);

실행 결과

i의 값: 0

i의 값: 1

i의 값: 2

i의 값: 3

설 명

문법: for ( 초기식 ; 조건식 ; 증감식 ) { 수행문; }

문장2: i변수에 0을 넣고, 3보다 작은 동안, 한번 수행시 i를 1씩 증가한다. i가 3보다 작지 않다면, 더 이상 진행하지 않고 밖으로 나온다.

자세한 설명: for 를 만나면 반복한다. 초기값은 i 라는 변수에 0을 넣고, i<3 에 비교를 한다. 조건에 만족한다면 아래문장을 수행하고, i++로 가서 i에 1을 증가한다. 그 후, 다시 조건식 i<3 에 비교를 한다. 만족한다면 계속 반복하고, 다르다면 밖으로 나온다.

마지막 상태에서 i는 증가를 하고 나오기 때문에 3이 될 것이다.

10-2) 같은 문장을 반복해서 사용할 때 while 문을 사용한다.

테스트코드

int i = 0;

while (i<3){

    System.out.println("i의 값: " + i);

    i++;

}

System.out.println("i의 값: " + i);

실행 결과

i의 값: 0

i의 값: 1

i의 값: 2

i의 값: 3

설 명

문법: while ( 조건식 ) { 수행문; }

문장2: 조건식 i<3 에 비교를 하고, 만족한다면 안으로 들어간다. 수행 문을 실행하고 다시 올라가서 조건을 비교한다. 만족하지 않으면 밖으로 나온다.

주의: 문장4번이 빠지게 된다면 i<3 은 죽을 때까지 조건이 만족하므로 무한반복이 될 것이다.

 

지금까지는 다른 언어와 의미는 같으나, 사용법이 달라서 설명을 했습니다. 다음시간 부터는 객체에 대해서 알아보겠습니다..

 

잡담: 블로그 포스팅 하는게 이렇게 힘든지 몰랐네요.. 2시간 동안 작성했네요.. 휴=33