Search

반응형

'자바'에 해당되는 글 51건

  1. 2020.04.19 [자바]조건문 if-else문과 switch-case문, 예제로 살펴보기.
  2. 2020.04.17 [자바]클래스(class), 객체(object) 그리고 인스턴스(화) 기초정리...
반응형

안녕하세요. 신기한연구소 티보이입니다.

자바에서 필수로 알아야 하는 조건문에 대해 알아봅니다.

자바에서 사용하는 조건문은 if-else문과 switch-case문 그리고 3항연산자가 있습니다.

? 세가지가 존재할까요?

어떤 것이 더 좋고 말고는 없습니다.

모두 좋은 조건문이고 가독성에 맞게 잘 사용하시면 됩니다.

그래도 보통은 switch-case문보다는 if-else문을 주로 사용합니다.

코드에서 가장 중요한 부분 중 하나는 가독성이거든요.

먼저 switch문에 대해 알아봅니다.

초기에 switch-case문은 조건식에 사용 가능한 데이터 타입은 [byte, short, char, int] 였습니다.

가장 많이 사용하는 변수형인 String가 지원되지 않아서 사실 일반 개발자들에게는 외면당하고 있었지요.

그런데 JDK 7부터는 String 도 대열에 합류하게 됩니다.

고정된 값인 상수를 사용하는 조건문인 경우 if-else도 가능하지만 틀에 맞아 보이는 switch-case문의 가독성이 더 좋아 보입니다.

자바에서 switch-case문은 어떻게 만들어서 사용하는지 살펴보겠습니다.

Switch(조건식) {

           Case 값1:

                      실행식;

                      Break;

           Case 값2:

                      실행식;

                      Break;

Case 값3:

                      실행식;

                      Break;

           …

           Default :

                      실행식;

}

Switch-case문 조건식의 값과 case문의 값이 일치하면 해당 실행문을 처리하고 break;문에 의해 빠져나오게 됩니다.

주의할 점은 break문을 깜박하고 넣지 않으면 일치하는 case문의 실행문을 처리한 뒤 그 뒤의 모든 case문과 default문도 같이 실행하기 때문에 잘 확인해야 합니다.

컴파일시나 런타임시 오류로 표기되지 않기 때문에 간혹 실수하는 경우가 있거든요.

특히 운영 데이터를 처리하는 과정에서 이런 실수로 인해 머리아픈 상황이 발생할 수 있기 때문입니다.

숫자형인 intchar, 그리고 문자열인 String으로 만든 switch-case문의 샘플을 만들어보겠습니다.

int형으로 만든 샘플입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Type int
    
switch(i) {
    case 10 :
        System.out.println("The value is 10");
        break;
    case 20 :
        System.out.println("The value is 20");
        break;
    case 30 :
        System.out.println("The value is 30");
        break;
    default :
        System.out.println("no value");
        
}
cs

char형으로 만든 샘플입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Type char
char c = 'B';
switch(c) {
    case 'A' :
        System.out.println("The value is A");
        break;
    case 'B' :
        System.out.println("The value is B");
        break;
    case 'C' :
        System.out.println("The value is C");
        break;
    default :
        System.out.println("no value");
 
}
cs

String형으로 만든 샘플입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Type String
String s = "GO";
switch(s) {
    case "COME" :
        System.out.println("The value is COME");
        break;
    case "GO" :
        System.out.println("The value is GO");
        break;
    case "SIT" :
        System.out.println("The value is SIT");
        break;
    default :
        System.out.println("no value");
 
}
cs

break가 없는 경우 샘플입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//break가 없다면...
int j = 20;
switch(j) {
    case 10 :
        System.out.println("The value is 10");
    //    break;
    case 20 :
        System.out.println("The value is 20");
    //    break;
    case 30 :
        System.out.println("The value is 30");
    //    break;
    default :
        System.out.println("no value");        
}
cs

짧은 실행문을 가지고 있고 조건식이 상수라면 가독성이 더 좋아 보일겁니다. 

이제 if-else문에 대해 알아보는데 어떻게 구성되어 있는지 살펴보겠습니다.

If (조건식) {

           실행문

}else if (조건식) {

           실행문

}

Else{

           실행문

}

If-else문의 조건식은 Boolean값입니다. 조건식이 참인지 거짓인지로 판단해서 해당 실행문을 처리하는 건데요.

중요한 건 if로 시작해서 else if로 쭉 확인하다가 하나가 truebreak문이 없어도 해당 실행문만 처리하고 중단합니다.

실행문이 단문이면 굳이 { }를 사용하지 않아도 되고 2행 이상이면 반드시 { }로 묶어줘야 합니다.

조건이 하나면 if문만 사용하면 되고 else문도 필수는 아닙니다.

예문을 살펴볼께요.

1
2
3
4
5
6
7
8
9
boolean b = true;
String s1 = "T";
if(b) {
    System.out.println("boolean test true");
}else if ("T".equals(s1)) {
    System.out.println("String is T");
}else {
    System.out.println("bye");
}
cs

 

If문은 조건식의 Boolean값이기에 어떤 식도 만들어 사용할 수 있답니다.

Switch문과 if문의 속도는 어떤 것이 확실히 빠르다고 할 순 없어 보입니다.

테스트를 해보면 switch문이 빠른 경우가 더 많지만 if문이 더 빠른 경우도 있기에 절대적이지 않다는 의미입니다.

 

초반에 이야기 했듯이 프로그램은 가독성이 중요한 부분을 차지합니다.

필요없이 소스를 많이 만들거나 보기 어렵게 구성하는 것은 좋지 않는 코딩습관이거든요.

어떤 상황이냐에 따라서 switch-case, if-else, 3항연산자를 적절히 사용하면 되겠습니다.

사실 필자는 if-else문의 사용빈도가 거의 95%이상이라는 점

즐코딩 하세요~

반응형
반응형

객체지향언어인 자바를 공부하시는 분들께

클래스, 객체, 인스턴스에 대해 확실히 정리하고 가는 시간이 되었으면 합니다.

최대한 쉽게 설명은 했지만 혹시 더 궁금하신 부분이 있다면 댓글 주세요.

객체지향 프로그래밍을 위한 클래스, 객체 그리고 인스턴스에 대해 예를 들어 설명해보겠습니다.

프로그램을 만들 때 목적이 있습니다. 이유없이 존재하는 프로그램은 없거든요.

은행 고객관리 프로그램을 만든다고 가정해 봅니다.

가장 큰 목적은 은행에서 관리하는 고객관리입니다.

그렇다면 중요한 포인트가 어떤 것이 있을까요?

 

먼저 기본 고객정보가 필요하겠지요?

다른 고객과 식별이 가능한 이름, 나이(주민번호), 전화번호, 주소 등이 필요합니다.

그리고 가입도 하고 정보도 수정하고 탈회도 할 수 있기에 그런 기능도 필요합니다.

또한 은행 고객이기에 이 고객이 가지고 있는 은행 상품이 있습니다.

가입한 상품명(oo적금, oo예금, oo대출 등), 계좌번호, 금액, 기간, 가입일, 해지일 등일 겁니다.

이 또한 가입하기, 해지하기 등의 기능이 필요합니다.

또한 고객의 신용정보도 필요합니다. 이 부분은 고객정보에 취합할 수도 있지만 보통 신용정보는 다른 기관에서 가져오기 때문에 별도의 정보로 관리할 수도 있습니다.

고객정보, 신용등급, 변경이력 등에 대한 정보가 있을 것이고 신용정보 조회 같은 기능도 필요합니다.

사실 실제 은행에서 사용하는 프로그램은 복잡하지만 객체지향의 개념에 대해 설명하기 위해 간단하게 표현해 보겠습니다.

클래스(class)는 공통적인 성질을 가진 부류나 종류라고 사전에 정의되어 있습니다.

자바에서 사용하는 클래스도 비슷한 개념으로 생각하면 됩니다.

우선 은행은 고객이 필요합니다. 고객은 은행에서 식별 및 활용할 수 있는 정보와 가입, 정보 변경 등을 할 수 있는 기능이 필요합니다.

그 정보와 기능을 정리(설계)해서 프로그램으로 틀을 만드는 것을 클래스라고 합니다.

클래스는 공통적인 성질을 가진 종류에 대해 정보(데이터)와 기능을 기술해 놓은 명세서입니다.

해당 은행의 모든 고객은 은행업무에 필요한 같은 종류의 정보와 기능을 가지고 있다는 의미입니다.

 

이 클래스를 바탕으로 실제 활동할 고객을 만들어야 합니다.

만들 고객들을 객체라고 합니다.

이 객체를 실제 new라는 키워드를 사용해서 메모리에 올리면 객체를 인스턴스화 했다고 합니다.

정리를 하면,

객체를 만들기 위해 필요한 정보와 기능을 정의해 놓은 것을 클래스라고 하고,

그 클래스를 가지고 만든 것이 객체이며,

객체가 new 키워드로 메모리에 적재되면 인스턴스가 됩니다.

 

김은행씨가 인터넷 뱅킹으로 접속하면 고객 클래스에서 객체를 하나 만들어 메모리에 인스턴스화 합니다.

동시에 홍대출씨가 인터넷 뱅킹으로 접속하면 고객 클래스에서 또 하나의 객체를 하나 만들어 메모리의 다른 위치에 인스턴스화 합니다.

 

BankCustomer bc = new BankCustomer();

고객 클래스[BankCustomer], 객체[bc], 인스턴스화[new BankCustomer()]

김은행, 홍대출 두 고객이 동시 접속을 하면 bc로 이름은 같은 객체이지만 JVM의 힙 메모리의 각각 다른 영역에 저장되어 독립적으로 관리된다.

지금까지 자바 객체지향의 기본이 되는 클래스, 객체, 인스턴스에 대해 알아봤습니다.

즐코딩하세요~

반응형