Java 생활코딩 - 제어문 강의 내용 정리

lhb00·1일 전
0

1. 수업소개

이런 내용을 공부할 것이다.

2. Boolean Datatype


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"));
	}

}

C랑 C#을 하고 온 입장에선 그저 편-안

3. 비교연산자


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);
	}

}

마찬가지로 편-안

4.1 조건문 형식


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);
			}
		} */
		
		if(false) {
			System.out.println(1);
		} else if(true){
			System.out.println(2);
		} else {
			System.out.println(3);
		}
		System.out.println("b");
	}

}

마찬가지로 별 새로운 내용은 없다.

4.2 ~ 4.3 조건문 응용


public class AuthApp {

	public static void main(String[] args) {
		
		String id = "egoing";
		String inputId = args[0];
		
		String pass = "1111";
		
		String inputPass = args[1];
		
		System.out.println("Hi.");
		
		/* if(inputId == id) {
			System.out.println("Master!");
		} */
//		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.equals(id) && inputPass.equals(pass)) {
			System.out.println("Master!");
		}
		else {
			System.out.println("Who are you?");
		}

	}

}

중간에 ==을 썼음에도 false 처리가 되는 부분이 있었다. 그래서 equals를 우선 사용하였는데, 왜 그런 것인지는 바로 다음에 나와 있다.

  • 주석을 저런식으로 사용하시려면 드래그 -> command + 슬래시 (윈도우는 Ctrl + 슬래시) 하시면 됩니다.

5. == vs equals

왼쪽은 원시데이터 타입(쉽게 말해 더 이상 쪼개지지 않는 타입)이고, 오른쪽은 비원시데이터 타입이다.

원시데이터 타입은 데이터를 이런식으로 저장하는데 반해, 비 원시 데이터는 인스턴스 방식으로 저장 시에는 같은 문자열을 저장하더라도 저렇게 다른 위치에 저장되기 때문에 false를 반환했던 것이다. equals 연산은 자체적인 계산을 통해 내용이 같은지 아닌지를 비교하여 bool 값을 반환해주므로, 원시데이터에는 ==, 비원시데이터에는 equals 연산을 사용해주면 된다.(애초에 원시데이터는 equals를 지원하지도 않는다.)

6. 논리 연산자


public class LogicalOperatorApp {

	public static void main(String[] args) {
		
		System.out.println(1 == 1);
		
		// AND
		System.out.println(true && true); // true
		System.out.println(true && false); // false
		System.out.println(false && true); // false
		System.out.println(false && false); // false
		
		// OR
		System.out.println(true || true); // true
		System.out.println(true || false); // false
		System.out.println(false || true); // false
		System.out.println(false || false); // false
		
		// not
		System.out.println(!true); // false
		System.out.println(!false); // true
	}

}

public class AuthApp2 {

	public static void main(String[] args) {
		
		String id = "egoing";
		String inputId = args[0];
		
		String pass = "1111";
		String pass2 = "2222";
		
		String inputPass = args[1];
		
		System.out.println("Hi.");
		
		boolean isRightPass = (inputPass.equals(pass) || inputPass.equals(pass2));
		
		if(inputId.equals(id) && isRightPass) {
			System.out.println("Master!");
		}
		else {
			System.out.println("Who are you?");
		}

	}

}

이번에도 딱히 새로운 내용은 없다.

7.1 반복문


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);

	}

}

마찬가지로 새로운 내용은 없음.

7.2 배열


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};
		System.out.println(scores[1]);
		System.out.println(scores.length);
	}

}

역시나 새로운 내용은 없었다. (사실 배열 알고 있으면 스킵하라고 하시긴 했는데, 혹시나 새로운 내용이 있을까 해서 들어봤다.)

7.3 반복문 + 배열


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]+",");
		}
	}

}

별 중요한 내용은 아닌데, HTML 우욱...🤮

8.1 종합응용 1


public class AuthApp3 {

	public static void main(String[] args) {
		
		String[] users = {"egoing", "jinhuck", "youbin"};
		String inputId = args[0];
		
		boolean isLogined = false;
		for(int i=0;i<users.length;i++) {
			String currentId = users[i];
			if(currentId.equals(inputId)) {
				isLogined = true;
				break;
			}
		}
		System.out.println("Hi,");
		if(isLogined) {
			System.out.println("Master");
		}
		else {
			System.out.println("Who are you?");
		}

	}

}

역시 새로운 내용은 없었다.

8.2 종합응용 2와 수업을 마치며


public class AuthApp3 {

	public static void main(String[] args) {
		
		// String[] users = {"egoing", "jinhuck", "youbin"};
		String[][] users = {
				{"egoing", "1111"},
				{"jinhuck", "2222"},
				{"youbin", "3333"}
		};
		String inputId = args[0];
		String inputPass = args[1];
		
		boolean isLogined = false;
		for(int i=0;i<users.length;i++) {
			String[] current = users[i];
			if(
					current[0].equals(inputId) &&
					current[1].equals(inputPass)
			) {
				isLogined = true;
				break;
			}
		}
		System.out.println("Hi,");
		if(isLogined) {
			System.out.println("Master");
		}
		else {
			System.out.println("Who are you?");
		}

	}

}

배열안의 배열도 다른 언어에서 했던 내용이라... ㅇㅇ

다음은 메소드일듯 하다.

profile
미래가 걱정되는, 개발자가 되고 싶은 대학생

0개의 댓글