본문으로 바로가기

조건문(if)

 

if /if else / else 로 별다른 규칙은 없습니다. python의 elif와 같은 괴랄한 표기법도 없습니다.

public class BooleanApp {
    public static void main(String[] args) {
        int num = Integer.parseInt(args[0]);
        if(num > 3) {
            System.out.println("over 3");
        } else if (num > 0) {
            System.out.println("under 3, over 0");
        } else {
            System.out.println("under 0");
        }
    }
}

 

  • 문자열과 문자열의 비교는 ==이 아닌 equals 메서드를 사용해야 합니다. (권장사항이 아닙니다. 동작 방식 자체가 다릅니다.)
public class Test { 
    public static void main(String[] args) 
    { 
        String s1 = new String("HELLO"); 
        String s2 = new String("HELLO"); 
        
        System.out.println(s1 == s2);  // false
        System.out.println(s1.equals(s2)); // true 
    } 

 

이유는 다음과 같습니다. ==는 메모리 주소를 비교하고 equals는 값만 비교하는 군요.

 

  • Both s1 and s2 refers to different objects.
  • When we use == operator for s1 and s2 comparison then the result is false as both have different addresses in memory.
  • Using equals, the result is true because its only comparing the values given in s1 and s2.

 

데이터 타입이 javascript와는 다릅니다. js의 경우 non-primitive를 object 하나만 있다고 여겨도 무방했지만 JAVA의 경우에는 다릅니다. 우선 String이 non-Primitive라는 사실이 가장 다른 점 중 하나입니다. 

 

Primitive 데이터 타입 => 

boolean, int, double, short, long, float, cha

 

non Primitive 데이터 타입 => 메모리

String, Array, Date, File ...

 

그런데 문자열에는 편의성 때문에 다른 non-primitive과 다른 취급을 받습니다.

String이 non-primitive 타입이라고 하더라도 new String 생성자를 통해 생성한 것과 직접 값을 할당한 것은 다릅니다. 

직접 값을 할당하면 Primitive 타입처럼 작동합니다.

public class StringApp {
    public static void main(String[] args) {
        String a = "asdf";
        String b = "asdf";
        String c = new String("asdf");

        System.out.println(a == b); // true
        System.out.println(a == c); // false
    }
}

 

 

조건문 switch

import java.util.Scanner;

public class SwitchOneEx {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String buildingSecurityGrade = scanner.next();
		
		System.out.println("building access authorization evalutaintg initialize");
		
		switch (buildingSecurityGrade) {
		case "A":
			System.out.println("above B should access");
			break;
		case "B":
			System.out.println("above C should access");
			break;
		default:
			System.out.println("no authorization. you can't access it. it's bug");
			break;
		}
	}
}

 

 

반복문(while / do while)

javascript랑 똑같아서 뭐.. 따로 언급할 사항은 없습니다.

 

while문

public class LoopApp {
    public static void main(String[] args) {
        int i = 0;
        while(i < 5) {
            System.out.println(i);
            i++;
        }
    }
}

 

break나 continue도 사용 가능합니다.

public class WhileTest {
	public static void main(String[] args) {
		int i = 0;
		while(i < 5) {
			if (i == 3) {
				i++;
				continue;
			}
			i++;
			System.out.println(i);
		}
	}
}

 

do while문도 있습니다. 가끔 사용하곤합니다. 

public class WhileTest {
	public static void main(String[] args) {
		int i = 0;
		do {
			System.out.println(i); // 1번 실행하고 끝.
		} while (i > 5);
		
	}
}

 

 

반복문(for)

public class LoopApp {
    public static void main(String[] args) {
        for(int j = 0; j < 5; j++) {
            System.out.println(j+"번 째:"+j);
        }
    }
}

 

배열을 섞어서 활용해봅시다.

public class ArrayApp {
    public static void main(String[] args) {
        String[] user = {"a", "b", "c"};
        int[] scores = {10, 45, 100};

        for (int i = 0; i < user.length ; i++) {
            System.out.println("<li>"+user[i]+"</li>");
        }
    }
}

 

위와 같은 일반적인 for이 아니라 iterator를 곧바로 순서대로 뱉는 for문도 존재합니다.

for (dateType i : Iterator) 꼴로 사용합니다. 단점은 인덱스를 이용할 수 없다는 점.

public class ForCondition {
	public static void main(String[] args) {
		int[] arr = {15, 23, 3, 2, 6};
		
		for (int i : arr) {
			System.out.println(i);
		}
	}
}

 

당연히 continue와 break문 사용도 당연히 가능하다.

public class ForCondition {
	public static void main(String[] args) {
		int[] arr = {1, 2, 3, 4, 5};
		
		
		for (int i = 0; i < arr.length; i++) {
			if (i == 3) {
				System.out.println("stop");
				break;
			}
			if (i == 2) {
				continue;
			}
			System.out.println(i);
		}
		
	}
}

 

List 컬렉션을 사용해도 똑같다.

public class ForCondition {
	public static void main(String[] args) {
		int[] arr = {15, 23, 3, 2, 6};

		List<Integer> intList = new ArrayList<Integer>();
		for (int i = 0; i < arr.length; i++) {
			intList.add(arr[i]);
		}
		
		for (int j : intList) {
			System.out.println(j);
		}
	}
}

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체