본문 바로가기
Programming/JAVA

생활코딩 JAVA - 제어문

by DONGKU 2020. 6. 21.

출처: 생활코딩 JAVA 제어문

JAVA - 제어문 - 생활코딩

수업소개 이 수업은 자바를 이용해서 지능적인 프로그램을 만드는 핵심기술인 제어문을 배우는 수업입니다. 이 수업을 통해서 단지 시간의 순서에 따라서 실행되는 프로그램이 아니라, 조건에

opentutorials.org

](https://opentutorials.org/course/3975)

JAVA - 제어문 - 생활코딩

수업소개 이 수업은 자바를 이용해서 지능적인 프로그램을 만드는 핵심기술인 제어문을 배우는 수업입니다. 이 수업을 통해서 단지 시간의 순서에 따라서 실행되는 프로그램이 아니라, 조건에

opentutorials.org

](https://opentutorials.org/course/3975)


boolean data type

참과 거짓을 표현하는 데이터 타입인 boolean을 공부하는 시간입니다. boolean 자체로는 큰 효용이 없지만, 뒤에서 반복문, 조건문과 만나면 폭발적인 효과를 내는 위대한 개념입니다.

eclipse 내에서 method 확인 꼼꼼히 해보자

public class BooleanApp {

    public static void main(String[] args) {

        System.out.println("One"); // 문자열은 유한
        System.out.println(1); // 숫자는 무한

        // Boolean  reserved word: 1과 0
        System.out.println(true);
        System.out.println(false);

        String foo = "Hello world";
        // String true = "Hello World"; // true, false는 변수의 이름으로 사용할 수 없다. because of reserved word(예약어)

        System.out.println(foo.contains("world")); 
        // foo.contains javadoc의 내용 : 입력 문자가 변수에 포함되있는지 확인하여 0 or 1 (Boolean) 리턴
    }

}

비교 연산자

왼쪽에 있는 값과 오른쪽에 있는 값을 비교해서 그 결과과 무엇이냐에 따라서 TRUE FALSE 둘 중에 하나의 값을 만들어내는 연산자

"1"+"1"="11" // 문자열1 + 문자열1 = 문자열 11


문자의 비교 : ==과 equals의 차이점

자바에서 문자나 객체를 비교할 때는 ==가 아닌 equals를 사용해야 합니다. 그 이유와 equals의 의미를 살펴봅시다.

primitive (더 이상 쪼갤 수 없는 원시 데이터 타입) -> 동등비교시 == 사용
vs
non primitive -> equals 사용

==(동등연산자)는 '메모리 상에서 같은 주소(위치)를 가리키고 있냐'라는 물음이기 때문에 원시데이터타입의 경우 값이 동일하면 true가 반환된다.

equals() 메소드는 '값 내용물이 같은가'라는 물음이기 때문에 비원시데이터 타입에서 사용된다.
(String 같은 경우는 자주 쓰이기 때문에 동등연산자 ==를 사용해줄수도 있으나, 오류가 날 수도 있으므로 그냥 equals를 쓰는게 속편하다.)

public class AuthApp {

    public static void main(String[] args) {

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

        String id = "egoing";
        String inputId = args[0];

        String pass = "1111";
        String inputPass = args[1];

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

//        // if(inputId == id) {  
//  객체는 동등비교 ==이 아닌 equals 사용
//        if(inputId.equals(id)) {    
//            if(inputPass.equals(pass)) {
//        System.out.println("Master!");
//            }
//        } else {
//            System.out.println("Wrong password!");
//        } else {
//            System.out.println("Who are you?");
//        }

        // 논리 연산자를 이용해 simple 하게 구성
        if(inputId.equals(id) && inputPass.equals(pass)) {
        System.out.println("Master!");
        } else {
            System.out.println("Who are you?");
        }

    }
}

반복문

for, while

while문은 원시적..굉장히 자유도가 높다..반복과 관련된 요소들이 멀리 떨어져있어 중간에 값이 변할 오류의 요소가 있음
for문은 반복횟수가 정해진 경우 사용, ,반복과 관련된 요소들이 응집되 있어 의도를 알기 쉬움

배열과 반복문은 조우하여 폭발적인 효과를 발휘함

    String[] users = new String[3];
        users[0] = "egoing";
        users[1] = "jinhuck";
        users[2] = "youbin";

        for(int i=0; i<users.length; i++) {
// 배열명.length , 배열의 요소의 개수가 변할 때마다 바꿔주지 않아도 자동으로 적용
            System.out.println(users[i]+",");
        }
        //String[] users = {"egoing", "jinhuck", "youbin"};
        String[][] users = {
                {"egoing", "1111"},
                {"jinhuck", "2222"},
                {"youbin", "3333"}
        };

        String inputId = args[0];
        String inputPW = args[1];

        boolean isLogined = false;  // flag 변수

        for(int i=0 ; i<users.length ; i++) { 
            String[] current = users[i];   // current = {"ID", "PW"} 이므로 String [] 선언
            if( current[0].equals(inputId) && current[1].equals(inputPW) ) {  
            // current[0]은  current = {"ID", "PW"} 에서 첫번째 요소인 ID
           // current[1]은  current = {"ID", "PW"} 에서 두 번째 요소인 PW
                isLogined = true;
                break;
            }
        }

댓글