Java#2

John Jun·2023년 3월 13일
0

Java Flow Control(제어문)

조건에 따라서 실행되는 순서를 제어하는 명령문

Boolean data type

true or false 로 표현되는 데이터
""가 없는 true(reserved word)는 boolean data이기 때문에 변수이름으로 사용 불가

public class BooleanApp {
 
    public static void main(String[] args) {
         
        System.out.println("One");
        System.out.println(1);
         
        System.out.println(true);
        System.out.println(false);
         
        String foo = "Hello world";
        // String true = "Hello world"; reserved word
         
        System.out.println(foo.contains("world"));
        System.out.println(foo.contains("egoing"));
        
        //contains 메소든는 ()안의 내용이 포함되었는지 여부에 따라 true or false의 boolean 			data 값을 반환한다.
 
    }
 
}

Comparison operator

비교연산자

=.>, <, =<, >=

두 값을 비교하여 true or false 의 값을 반환하는 비교 연산자

public class ComparisonOperatorApp {
 
    public static void main(String[] args) {
         
        System.out.println(1 > 1); // false
        System.out.println(1 == 1); // true
        System.out.println(1 < 1);
        System.out.println(1 >= 1);
         
    }
 
}

Conditional Statement

If(){} :()안에는 true or false의 Boolean data만이 올 수 있다.
*()안의 값이 true 라면 {}안의 수식이(내용이) 실행된다. 조건문 안에는 또다른 조건문이 올 수 있다.

public class IfApp {
 
    public static void main(String[] args) {
 
        System.out.println("a");
        if(false) {
            System.out.println(1);
        } else if(true) {
            System.out.println(2);
        } else {
            System.out.println(3);
        }
        System.out.println("b");
 
    }
 
}

활용 ex)

public class AuthApp {
 
    public static void main(String[] args) {
         
        String id = "John";
        String inputId = args[0];
         
        System.out.println("Hi. "+ inputId);
         
        //if(inputId == id) { // 동작하지 않음
        
        if(inputId.equals(id)) {
            System.out.println("Master!");
        } else {
            System.out.println("Who are you?");
        }
 
    }
 
}


public class AuthApp {
 
    public static void main(String[] args) {
         
        String id = "John";
        String inputId = args[0];
        
        String pass = "1111";
        String inputPass = args[1];
         
        System.out.println("Hi, user!");
         
        //if(inputId == id) {
//        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?");
//        }
// 
//    } 는 논리 연산자 &&를 사용하여 간략화 할 수 있다.
        if(inputId.endsWith(id) && inputPass.equals(pass)) {
        	System.out.println("Master!");} else {
        		System.out.println("Who are you?");}
        	}
}

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

데이터의 종류는
Primitive/Non Primitive 로 나눌 수 있고 자바가 취급하는 방법이 다르다.

원시 데이터 타입(primitive) 7가지
--> boolean, int, double, short, long, float, char

원시 데이터 타입이 아닌 것: String,. Array, Date, File, ...

기본적으로 원시 데이터 타입들은 같은 데이터라면 heap 안에서 같은 메모리 공간을 가리키게 된다.

int p1 = 1 ---> 같은 매모리 공간을 가리킴 (p1 == p2 는 true)
int p2 = 1

이렇게 되면 == 연사자를 사용하면 p1과 p2는 같다고 인식하게 됨.
p1 == p2 ---> true

*하지만 String은 특혜를 받고있어서,
primitive가 아님에도 같은 데이터면 같은 메모리 공간을 가리킨다. (원시 데이터 타입처럼 동작한다)

String o3 = "java2" ---> 같은 메모리 공간을 가리킴 (o3 == o4 는 true)
String o4 = "java2"

그래도 쉽게말하면, 원시 데이터 타입은 == 사용해야함.
원시 데이터 타입은 equals메소드를 가지고있지 않아 오류가 난다. 사용 X
원시 데이터 타입이 아닌 객체들에겐 equals를 사용하는게 편하다.

같은 데이터를 heap 안에서 다른 메모리 공간에 할당할때 new 연산자를 사용

String ex1 = new String ("java") ---> 각각의 메모리 공간을 할당받음 (ex1 == ex2 는 false)
String ex2 = new String ("java")

Looping statement

while(Boolean Data Type) {}

()안의 불리언 데이터가 true일때 {}안의 내용을 반복 실행

for(초기값, Boolean Data, 초기값을 변화시키는 반복되는 코드) {} ()안의 초기값을 먼저 실행하고 {}안의 내용을 실행, ()안의 3번째 코드를 실행하여 2번째 불리언 데이터값을 산출, true가 false가 될때까지 반복

ex)

public class LoopApp {
 
    public static void main(String[] args) {
         
        System.out.println(1);
        System.out.println("=== while ===");
        int i = 0;
        //..
        while(i < 3) {
            System.out.println(2);
            System.out.println(3);
//          i = i + 1;
            //..
            i++;
        }
        System.out.println("=== for ===");
        for(int j=0; j < 3; j++) {
            System.out.println(2);
            System.out.println(3);
        }
         
        System.out.println(4);
 
    }
 
}

Array 배열

반복문과 늘상 함께 쓰이는 데이터 보관 방법

데이터타입[] 변수이름 = new 데이터타입[데이터 수];
변수이름[0] = 내용;
변수이름[1] = 내용;
변수이름[2] = 내용;
.
.
.

System.out.println(변수이름[index]);
System.out.println(변수이름.length); : Element: Array안의 데이터 수(몇칸짜리 배열인지)

혹은

데이터타임[] 변수이름 = {데이터}

두가지 방법으로 Array를 만들 수 있다.

public class ArrayApp {
 
    public static void main(String[] args) {
         
        // egoing, jinhuck, youbin 
//      String users = "egoing, jinhuck, youbin";
        String[] users = new String[3];
        users[0] = "egoing";
        users[1] = "jinhuck";
        users[2] = "youbin";
         
        System.out.println(users[1]);
        System.out.println(users.length);
         
        int[] scores = {10, 100, 100}; // 원소, element
        System.out.println(scores[1]);
        System.out.println(scores.length);
 
    }
 
}
//반복문과 함께 사용시 의미가 있다.

public class LoopArray {
 
    public static void main(String[] args) {
        /*
         *  <li>egoing</li>
         *  <li>jinhuck</li>
         *  <li>youbin</li>
         */
         
        String[] users = new String[3];
        users[0] = "egoing";
        users[1] = "jinhuck";
        users[2] = "youbin";
         
        for(int i=0; i<users.length; i++) {
            System.out.println(users[i]+",");
        }
         
    }
 
}
profile
I'm a musician who wants to be a developer.

0개의 댓글