본문 바로가기

프로그래밍언어/JAVA

Java 기초문법 ( 대입문, 배열선언, 조건문 )


* § 자바의 기초 문법

 

2.1 여러 가지 대입문

변수를 선언하는 목적은 변수에 데이터를 담아 두었다가 나중에 사용하기 위해서입니다.

>변수에 대입할 값을 계산하는 식

변수 = ;

>변수의 이름

ex) num = 1;

num = 2 + 3;

num = num1 + num2;

 

 

연산자

설명

사용 예

+

덧셈 연산자

num = 1 + 2;

-

뺄셈 연산자

num = 3 - 1;

*

곱셈 연산자

num = 2 * 3;

/

나눗셈 연산자

num = 7 / 2; // 계산결과는 3

%

나눗셈의 나머지를 계산하는 연산자

num = 7 % 2; // 계산결과는 1

 

복합 대입 연산자를 이용한 대입문

 

대입문이 하는 일이 변수의 원래 값에 다른 값을 더하는 것이라면 + 연산자와 = 산자를 따로 사용하는 것보다 두 기능이 복합된 += 연산자를 사용하는 것이 편리합 니다.

 

ex) [ num += 3; ] == [ num = num + 3; ]

연산자

설명

사용 예

+=

좌변의 변수에 우변의 값을 더하는 연산자

num += 1;

-=

좌변의 변수에서 우변의 값을 빼는 연산자

num -= 3;

*=

좌변의 변수에 우변의 값을 곱하는 연산자

num *= 2;

/=

좌변의 변수를 우변의 값으로 나눈 몫을 좌변에 대입하는 연산자

num /= 2;

%=

좌변의 변수를 우변의 값으로 나눈 나머지를 좌변에 대입하는 연산자

num %= 2;

 

 

 

 

< 예제 2-14 > 복합 대입 연산자의 사용 예를 보여주는 프로그램

class AssignmentExample1 {
public static void main(String args[]) {

int num = 17;

 

num += 1; // num = num + 1;과 동일

num -= 2; // num = num - 2;과 동일

num *= 3; // num = num * 3;과 동일

num /= 4; // num = num / 4;과 동일

num %= 5; // num = num % 5;과 동일

 

System.out.println(num);

 }

}


증가 연산자와 감소 연산자

 

+=연산자를 사용하는 이유가 변수의 기존 값에 1을 더하는 것이라면 더 간단한 방 법으로 명령문을 만들 수도 있습니다. ++ 연산자를 사용하는 방법입니다. 이 연산자 의 사용방법은 다음과 같습니다.

 

ex) num++; == ++num; (증가 연산자)

이 명령문은 num 변수의 기존 값에 1을 더해서 그 결과를 다시 num에 대입합니다.

 

ex) num--; == --num; (감소 연산자)

반대로 감소연산자는 기존 값에서 1을 뺀 후에 그 결과를 다시 변수에 대입하는 -- 연산자도 있습니다.

 

 

  

< 예제 2-15 > ++연산자 -- 연산자의 사용 예를 보여주는 프로그램

 

class IncrDecExample1 {
public static void main(String args[]) {

  int num = 0;

   num++;
  System.out.println(num);

  ++num;
   System.out.println(num);

  num--;
  System.out.println(num);

  --num;
  System.out.println(num);

          }
}

 

2.2 배열의 선언, 생성, 이용

 

10개의 데이터가 데이터타입이 모두 같고, 사용하는 목적도 비슷하다면 모든 데이터 를 한 곳에 저장해두고 하나의 변수를 가지고 사용할 수 있다. 이 절에서 배울 배열 이 바로 그런 식으로 사용할 수 있는 데이터 저장 장소입니다.

 

a)10개의 다른 이름을 갖는 변수들

 
이름 :             a             b            c                   d               e               f                 g                  h                I                j

                        7             9             100             32             5                8               6                 72              27             81

 

b)10개의 데이터를 저장할 수 있는 배열

 

이름 : num

7

9

100

32

5

8

6

72

27

81

 

인덱스 : 0 1 2 3 4 5 6 7 8 9

배열의 항목에는 각각 순번이 붙습니다. 그 순번을 인덱스(index)라고 하는데 배열 이름과 인덱스를 함께 사용하면 각각의 배열 항목을 단일 변수인 것처럼 사용할 수 있습니다.

 

일차원 배열의 선언 , 생성 , 이용

 

배열 변수도 일반 변수처럼 선언을 해야만 사용할 수 있습니다.

 

 

1차원 배열 변수 선언문 기본형식 (1) 1차원 배열 변수 선언문 기본형식(2)

   

타입 식별자[]; 

배열항목 타입 배열변수 이름

   

타입[] 식별자; 

 

배열항목 타입 배열변수 이름

 

 

 

ex) Int arr[];                                                   Int[] arr;

  float num[];                             Float[] num;

    String strArr[];                                                   Strung[] strArr;

 

배열을 사용하기 위해서는 배열을 생성해서 배열변수에 대입해야 한다.

 

 

[ 1차원 배열을 생성하는 식 ]

new 타입 [ 크기 ] ;

 

ex) arr = new int[10]

num = new float [5]

strArr = new String [3]

 

 

 

[ 1차원 배열의 항목을 가르키는 식 ]

배열이름 [ 인덱스 ];



배열 변수의 이름 배열 항목의 위치

 

  ex)

     arr[0] = 12;

     num[3] = num[1] + num[2];

     System.out.println(strArr[2]);

 

배열의 인덱스는 0부터 시작하기 때문에 배열의 첫 번째 항목의 인덱스는 0이고 , 두 번째 항목의 인덱스는 1입니다.

 

 

class ArrayExample1 {

public static void main(String args[]) {

 

int arr[]; ----------- 배열 변수를 선언합니다.

arr = new int[10]; ----------- 배열을 생성합니다.

 

arr[0] = 10;                             
arr[1] = 20;                              
arr[2] = arr[0] + arr[1];          ----------- 배열항목을 사용합니다.
System.out.println(arr[0]); 
System.out.println(arr[1]); 
System.out.println(arr[2]);  

          }
}




 

다차원 배열의 선언, 생성, 이용

 

[ 2차원 배열 변수 선언문 기본 형식(1) ] [ 2차원 배열 변수 선언문 기본 형식 (2) ]

 

           타입 식별자[][]; 타입[][] 식별자;

                   ↑                 ↑                          ↑                          ↑
배열 항목의 타입             배열 변수의 이름          배열 항목의 타입           배열 변수의 이름

 

 

 

ex) Int arr[][]; Int[][] arr;

Float num[][]; Float[][] num;

String strArr[][]; String[][] strrArr[][]

 

 

[ 2차원 배열을 생성하는 식 ]

 

new 타입 [크기1] [크기2]

          ↑             ↑            ↑
배열 항목의 타입     행의 수       열의 수

 

ex) arr = new int[10][10];

num = new float[5][2];

strArr = new String[3][15];

 

   

class ArrayExample2 {
public static void main(String args[]) {


int table[][] = new int[3][4];

 

table [0][0] = 10;

table [1][1] = 20;

table [2][3] = table [0][0] + table [1][1];

 

System.out.println(table[0][0]);

System.out.println(table[1][1]);

System.out.println(table[2][3]);

 

}

}



 

 

배열의 선언과 초기화를 한꺼번에 하는 방법

 

배열 변수를 선언하고 나서 바로 다음에 해야 할 일은 배열을 생성하고 항목을 초기화 하는 것입니다

 

Int arr[]

 

arr = new int[10];

 

arr[0] = 10;

arr[1] = 20;

arr[2] = 30;

arr[3] = 40;

arr[4] = 50;

arr[5] = 60;

arr[6] = 70;

arr[7] = 80;

arr[8] = 90;

arr[9] = 100;

 

맨 위의 문장과 두 번째 문장을 합하면

 

Int arr[] = new int arr[10]; 로 만들 수 있다.

 

간단하게 만드는법 초기값의 수와 동일한 크기의 배열이 생성되고 그 배열의 항목들이 해당 값으로 초기화되기 때문입니다.

 

Int arr[] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };

 

 

< 예제 2-18 > 배열 항목을 초기화하는 1차월 배열 변수의 선언문의 예

 

class ArrayExample3 {
public static void main(String args[]) {

 

int arr[] = { 10, 20, 30, 40, 50 };

 

System.out.println(arr[0]);

System.out.println(arr[1]);

System.out.println(arr[2]);

System.out.println(arr[3]);

System.out.println(arr[4]);

 

        }

}



 

 

2차원 배열의 경우에도 이런 선언문을 사용할 수 있습니다, 하지만 그럴 때는 중괄호 안에 중괄호를 써서 차원을 표시해야 합니다. 다음은 그런 예를 보여주는 프로그램입니다.

 

< 예제 2-19 > 배열 항목을 초기화하는 2차월 배열 변수의 선언문의 예

 

class ArrayExample4 {
public static void main(String args[]) {

int table[][] = { { 1, 2, 3, 4 },
                     { 5, 6, 7, 8, },
                     { 9, 10, 11, 12} };

 

System.out.println(table[0][0]);

System.out.println(table[1][1]);

System.out.println(table[2][3]);

 

         }

}



 

배열의 항목 수를 알아내는 방법

배열의 이름 뒤에 “.length”를 붙여서 만든다

 

< 예제 2-20 > 배열의 항목 수를 출력하는 프로그램

class ArrayExample5 {
public static void main(String args[]) {

 

int arr[] = { 21, 2, 4, 3, 4, 65, 7, 178, 3, 5, 45, 75, 2, 0, 32, 75, 92 };

System.out.println(arr.length);


      }
}

 

 

2.3 조건문

 

(1) 조건문이란?

컴퓨터가 단순한 기계보다 우수한 이유는 조건에 따라 다른 처리를 할 수 있기 때문 입니다. 자바 프로그램에서도 그런 명령문을 만들 수 있는데, 그런 명령문을 조건문 이라고 합니다. 조건문은 if키워드를 가지고 만들 수 있습니다.

 

(2) if

- if 조건문은 그 조건에 해당하면 실행되는 문법이다.

 

 

[ if 문의 기본 형식(1) ]

> true 또는 false 값을 산출할 수 있는 식

if ( 조건식 )

{ 조건이 참이면 실행하는 코드 }

* 일반적인 if문은 참일 때만 실행된다.

 

ex)

if (num1 > num2)

System.out.println(“num1 값이 더 큽니다”);



[ if 문의 기본 형식(2) ]

> true 또는 false 값을 산출할 수 있는 식

if ( 조건식 )

블록

ex)

if (num1 > num2)

{ System.out.println(“num1 값이 더 큽니다”);

System.out.println(num1);

}

 

<예제 2-21> if 문의 사용 예를 보여주는 프로그램

 

class IfExample2 {
public static void main(String args[]) {

int num1 = 52;

int num2 = 24;

 

if (num1 > num2)

 

System.out.println("num1 값이 더 큽니다. ")
System.out.println("num1 = " + num1);

  System.out.println("Done.");

     }
}



 

 

- if 문을 else 키워드와 함께 사용하는 방법

 

if 문을 else 키워드와 함께 사용하면 조건을 만족하지 않을 때 해야 할 일도 기술할 수 있습니다. if 문을 else 키워드와 함께 사용하는 방법은 다음과 같습니다.

 

 

 

[ if-else 문의 기본 형식 ]

 

<예제 2-22> if - else 문의 사용 예를 보여주는 프로그램

 

class IfExample2 {
public static void main(String args[]) {

  int num1 = 12;
  int num2 = 24;

  if (num1 > num2)

  System.out.println("num1 = " + num1);

  else

  System.out.println("num2 = " + num2);

  System.out.println("Done");

 

       }
}


 

 

<예제 2-23> if 문을 포함하는 if 문의 예를 보여주는 프로그램

 

class IfExample3 {
public static void main(String args[]){

 

int num1 = 52;
int num2 = 24;
int num3 = 32;

if (num1 > num2)
          if (num1 > num3)

System.out.println("num1이 제일 큽니다.");
System.out.println("Done.");

 

}

}




 

dangling else else if

dangling else는 가장 가까이 있는 if 키워드와 짝을 이루는 규칙이다.

 

<예제 2-24> 자바의 dangling else 규칙을 잘 모르고 작성한 프로그램

 

class IfExample4 {
public static void main(String args[]) {

  int num1 = 152;
  int num2 = 173;

  if (num1 > num2)
        if (num1 > 100)

 System.out.println("num1 = " + num1);

                    else

 if (num2 > 100)

    System.out.println("num2 = " + num2);
    System.out.println("Done.");

 

      }

}


 

 

<예제 2-25> 수정된 ifexample4 프로그램



  

class IfExample4 {
public static void main(String args[]) {

 

int num1 = 152;
int num2 = 173;

 

if (num1 > num2){
      if (num1 > 100)

System.out.println("num1 = " + num1);

}

 

else {

if (num2 > 100)

System.out.println("num2 = " + num2);

}

 

System.out.println("Done.");

 

}

  }


 

 

<예제 2-26> 자바의 dangling else 규칙을 잘 활용한 프로그램

 

class IfExample5 {
public static void main(String args[]) {

 

int num = 74;

 if (num < 10)
            System.out.println("num의 값은 10 미만입니다.");

 

else if (num < 100)
                      System.out.println("num의 값은 10 이상 100미만입니다.");

 

           else if (num < 1000)
                      sy
stem.out.println("num의 값은 100이상 1000 미만입니다.");

 

          else
                      System.out.println("num의 값은 1000이상입니다.");

 

        }

 }

 

switch 조건문

switch 키워드도 if 키워드처럼 조건문을 만드는 데 사용돕니다. 하지만 switch 문은 if 문과는 달리 여러 개의 조건을 설정할 수 있습니다. switch 문의 전형적인 형식은 다음과 같습니다.

 

정수나 char 타입의 값을 산출할 수 있는 식

  ↑

switch (){

case 1 : 1회 이상 여러 번 반복 가능한 부분

명령문들

break;

 

case 2 :

명령문들

break;

 

case 2 :

명령문들

break;

 

default :

명령문들 생략 가능한 부분

break;

}

 

 

 

<예제 2-27> switch문의 전형적인 사용 예를 보여주는 프로그램

 

class SwitchExample1 {
public static void main(String args[]) {

 

             int num = 3;

 

             switch (num) {
             case 1 :
             System.out.println("Good Morning, Java");
             break;

 

             case 2 :
             System.out.println("Good Afternoon, Java");
             break;

 

             case 3 :
            System.out.println("Good Evening, Java");
            break; 


            default :
           System.out.println("Hello, Java");
            break;

 

          }

               System.out.println("Done.");

           }

  }



 

 

<예제 2-29> 둘 이상의 값에 대해 같은 처리를 하는 switch 문의 예

 

class SwitchExample2 {
public static void main(String args[]) {

 

               char ch = 'p';

 

              switch (ch) {
                                 case 'A' :
                                 case 'a' :

                                  System.out.println("사과");

                                  break;

 

                                 case 'P' :
                                 case 'p' :

                               System.out.println("");

                                 break;

 

                                case 'G' :
                                case 'g' :

                                           System.out.println("포도");

 

                                default :

                                             System.out.println("?");

                               break;

 

             }

  }