본문 바로가기
Program Language

if 안에 boolean expression Optimization

by Leo 리오 2011. 9. 16.
반응형

if 안에 boolean expression이 있으면 모두 다 실행을 안한다.

예를들어
if( true() || false() )
 ;
이렇게있으면 true()가 true를 return 하기때문에
false()가 false든 true든 무조건 if문을 실행시키게된다.
따라서 false()라는 함수는 실행시키지 않는다.


ex)
static boolean a(boolean result, String function)
{
System.out.println(function);
return result;
}

 

public static void main(String[] args)
{
if( a(true, "1") && a(true,"2") )
;
}
결과:
1
public static void main(String[] args)
{
if( a(true, "1") || a(true,"2") )
;
}

결과:
1
 
public static void main(String[] args)
{
if( a(false, "1") && (a(true,"2") |||a(true,"3")))
;

결과:
1

public static void main(String[] args)
{
if( a(true, "1") && (a(true,"2")||a(true,"3")))
;

결과:
1
2

사용가능
String str;
if( str!=null && printf(str))
;
 이런식으로하면 str이 null이 아닐때만 print하게 된다.



거의 모든 컴파일러가 이런식의 최적화(Optimization)을 제공한다.
 
주의할점은 | 가아닌 || 를,
&가 아닌 &&를 사용해야한다. 
반응형

댓글