티스토리 뷰

좀 늦어진 감이 없진 않군요

요즘 반배치다 뭐다 해서 java를 공부하지 못한 관계로...

 

그래서 빨리 쓰려 합니다 ㅋ


이번에는 저번 강좌에서 얘기 한것과 같이 좀 재미있습니다 ㅋㅋ

다들 영문법을 배우셨을거라 생각되는대요 if절에 대한 부분도 배우셨을거라 생각됩니다


java에서도 이런 if구문을 제공하고 있습니다

바로 if~else구문입니다


그래서 이번에는 자바 프로그램의 흐름 제어 역활을 하는 if~else문에 대해 알아보도록 하겠습니다


먼저 if구문의 기본 뼈대를 설명드리겠습니다


if(true 또는 false)

{

  /* 괄호 값이 true일경우 실행되는 영역 */

}

else

{

  /* 괄호 값이 false일경우 실행되는 영역 */

}


이런 구조를 지니고 있습니다

괄호 ( ) 안에 true가 오면 true부분이, false가 오면 false부분이 실행되는 것이지요


그런대 여기서 괄호 ( )는 T또는 F만 올수 있습니다

그러므로 true와 fasle를 반환하는 연산자와 boolean 변수도 들어갈수 있겠죠?


if절은 구조가 간단해서 별다른 설명은 필요 없을듯 합니다

간단하게 예제를 살펴보도록 하겠습니다


class Ifelse
{
 public static void main(String[] args)
 {
  int n1=50, n2=80;
  
  if(n1<50)
   System.out.println("n1은 50보다 작다");
  else
   System.out.println("n1은 50이거나 50보다 크다");
   
  if(n1==n2 && n1>n2)
   System.out.println("n1=n2이며 n1>n2이다");
  else
   System.out.println("n1=n2와 n1>n2가 성립하지 않는다"); 
 }
}


Ifelse.java


이런 소스가 있습니다


int형 변수로 n1과 n2를 선언하고 있군요

그다음 첫번째 if로 n1<50을 연산하게 해서 그 결과를 보고 표현하라 지시되어 있습니다

이 경우 n1<50이 성립하지 않으므로 else다음 구문이 실행되게 되는 것입니다


두번째 if에서는 &&연산을 진행하고 있는대요

n1==n2가 false이므로 SCE에 의해 n1>n2는 연산되지 않을것 이라고 생각 할수 있습니다

이 경우에도 마찬가지로 false가 나오게 되므로 else다음 구문이 실행될 것이라 예측할수 있습니다



실행 결과를 봐도 예상과 같은 결과가 나타나는 것을 확인할수 있습니다


그런대 위 소스를 보면 if~else구문에 중괄호 { }가 빠져 있는것을 보셨나요?

이렇게 실행할 구문이 1개 일땐 중괄호를 없애도 문제가 발생하지 않습니다



참고로 if~else구문은 java에서 낱말이 떨어져 있지만 하나의 구문으로 인식합니다



이렇게 if~else에 대해 살펴 보았는대요

저는 아주 간단한 예만 들어 설명한 것일뿐 if문은 아주 유용하게 사용됩니다

예를 들면 다중(중첩)if문도 가능하지요



이렇게 if~else에 대해 알아보았습니다

그런대 java에서는 if와 성격이 비슷한 연산자가 또 있습니다

바로 ? : 기호입니다

이것은 조건 연산자 인대요 피 연산자가 3개인 유일한 연산자 입니다


int number1=20, number2=30, whyis;

whyis=(number1>number2)?number1:number2;


자 여길 보시면 굵게 ?와 :을 표시해 두었습니다

이렇게 조건 연산자를 사용했는대요


원리를 말씀드리자면

?기호 왼쪽에 true가 있다면 :기호의 왼쪽 숫자가 반환되며

?기호 왼쪽에 false가 있다면 :기호의 오른쪽 숫자가 반환됩니다


그러므로 위 파란 박스에서는 number1>number2가 false이므로 number2의 값이 반환되겠지요?



이렇게 해서 if~else구문에 대한 설명이 마쳐졌습니다 ㅎㅎ

복습겸 이렇게 작성하니 확실히 이해가 잘되는 군요 ㅋ

만약 지금 이 글을 보고 계신다면 직접 소스 한번 짜보시는 연습해 보시길 강력 추천드립니다 ㅋㅋ

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
댓글
  • 러그 미르님! 안드로이드 앱에서요..
    만약 프리퍼런스인 "TextValue" 가 없을 시 AppInfo 란 액티비티를 실행하려고 합니다..ㅠ


    그래서 이렇게 짜보았는데요..
    "TextValue"가 없을 시에도 반응이 없네요;..ㅠㅠ

    SharedPreferences prefs = getSharedPreferences("TextValue", MODE_PRIVATE);

    if(prefs.getString("TextValue", "") == null){
    startActivity(new Intent(this, Appinfo.class));
    }

    뭐가 잘못된 걸까요?
    2014.02.06 20:59 신고
  • Favicon of http://itmir.tistory.com Mir(whdghks913) 두가지가 잘못됬어요

    먼저 String은 ==이 아니라 equals로 비교해야 하고
    null이 아니라 ""입니다
    (왜냐면 prefs.getString("TextValue", "" )에서 두번째 ""가 반환값 이잖아요 ㅋ)

    if("".equals(prefs.getString("TextValue", "" ))){
    startActivity(new Intent(this, Appinfo.class));
    }
    2014.02.07 11:27 신고
댓글쓰기 폼