[Java] 제어문

당당·2023년 4월 19일
0

Java

목록 보기
11/20

📔설명

Boolean 데이터 타입

truefalse같은 것은 예약어로, 변수명으로 사용할 수 없다.

public class BooleanApp {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		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("hyejin"));
	}

}


비교연산자

왼쪽 값과 오른쪽 값을 비교해서 true 또는 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);
	}

}

💬조건문

public class IfApp {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		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");
	}

}

if, else if, else에 대해서 배워보았다.

이제 조건문을 응용해보자.

public class AuthApp {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(args[0]);
		
		String id="hyejin";
		String inputId=args[0];
		
		System.out.println("hi");
		
//		if(inputId==id) {
		if(inputId.equals(id)) {
			System.out.println("Master!");
		}
		else {
			System.out.println("Who are you?");
		}
	}

}

==는 객체의 주소를 비교하고,
.equals()는 객체의 값을 비교하는 것이다.
아래에 더 자세히 작성해두었다!

args[0]의 객체 주소와 일반 객체처럼 스택 영역에 생성된 string은 주소가 다르다.

이제는 비밀번호도 받아보자.

args[1] 을 위해 인자값 수정을 한다.

public class AuthApp {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(args[0]);
		
		String id="hyejin";
		String inputId=args[0];
		
		String pw="1111";
		String inputPw=args[1];
		
		System.out.println("hi");
		
//		if(inputId==id) {
//		if(inputId.equals(id)) {
//			if(inputPw.equals(pw)) {
//				System.out.println("Master!");
//			}
//			else {
//				System.out.println("Wrong password!");
//			}
//		}
//		else {
//			System.out.println("Who are you?");
//		}
		
		if(inputId.equals(id) && inputPw.equals(pw)) {
			System.out.println("Master!");
		}
		else {
			System.out.println("Who are you?");
		}
	}

}

&&를 (and)를 이용해 조건문을 단순하게 바꿨다

모든 프로그램은 input을 받아 output을 출력하는 것이다!


💫반복문

public class LoopApp {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(1);
		System.out.println(2);
		System.out.println(3);
		System.out.println(4);
	}

}

해당 소스 코드의 2와 3을 반복시켜보자.

public class LoopApp {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(1);
		
		int i=0;
		System.out.println("=== while ===");
		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);
	}

}

while문 보다는 for문이 역시 더 편하다..

public class ArrayApp {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		String users="hyejin, dang, dangdang";
		String[] users=new String[3];
		users[0]="hyejin";
		users[1]="dang";
		users[2]="dangdang";
		
		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);
	}

}

여기서, scores[1]의 1은 인덱스, 그 값인 dang은 원소(element)라고 한다.

public class LoopArray {

	public static void main(String[] args) {
		
		/*
		 * 	<li>hyejin</li>
		 * 	<li>dang</li>
		 * <li>dangdang</li>
		 */
		
		
		String[] users=new String[3];
		users[0]="hyejin";
		users[1]="dang";
		users[2]="dangdang";
		
		for(int i=0;i<users.length;i++) {
//			System.out.println("<li>"+users[i]+"</li>");
			if(i!=users.length-1) {
				System.out.println(users[i]+",");
			}
			else {
				System.out.println(users[i]+".");
			}
			
		}
	}

}

배열이랑 반복문을 사용하면 폭발적인 효과를 가져올 수 있다.

public class AuthApp3 {

	public static void main(String[] args) {
		String[] users= {"hyejin","dang","dangdang"};
		String inputId=args[0];
		
		//if inputId in users
		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?");
		}
	}

}

arguments에 따라 다르게 출력되는 프로그램이 완성이 됐다~

이제 2차원 배열을 사용해보자.

public class AuthApp3 {

	public static void main(String[] args) {
//		String[] users= {"hyejin","dang","dangdang"};
		String[][] users= {
				{"hyejin","1111"},
				{"dang","2222"},
				{"dangdang","3333"}
		};
		String inputId=args[0];
		String inputPw=args[1];
		
		//if inputId in users
		boolean isLogined=false;
		for(int i=0;i<users.length;i++) {
			String[] current=users[i];
			
			if(current[0].equals(inputId) && current[1].equals(inputPw)) { //id pw check
				isLogined=true;
				break;
			}
		}
		
		System.out.println("Hi,");
		if(isLogined) {
			System.out.println("Master!!");
		}
		else {
			System.out.println("Who are you?");
		}
	}

}

이차원 배열도 사용했고, String[] current=users[i]에 넣는 건 잘 몰랐다!

다르게 넣어서 테스트해보자~!!


👀==과 .equals()의 차이

==equals의 차이에 대해서 자세히 알아보자.




primitive는 쪼갤 수 없는 원시 데이터.
boolean, int, double, short, long, float, char

non primitive는 원시 데이터 타입이 아닌 것들.
String, Array, Date, File ..




int p1=1
이면 p1이라는 이름이 값 1을 가리키는것
int p2=1
이면 p2도 p1이 가리킨 1을 똑같이 가리킨다.

==같은 곳을 가리키고 있냐는 것과 같다.


String o1=new String("java")
new 를 이용해서 만들면, o1은 "java"를 가리킨다.
String o2=new String("java")
를 하면, o2는 o1이 가리키는 java가 아닌 새로운 "java"를 가리킨다.

o1==o2를 하게 되면, 같은 곳에 위치하는 것이 아니기 때문에 false가 된다.



객체들은 .equals라는 메소드를 다 가지고 있다.
o1.equals(o2) 를 통해 내용을 비교할 수 있다.

하지만, 문자열String은 특혜를 받고 있다.

String o3="java2"
o3는 java2를 가리킨다.
String o4="java2"
o4는 o3가 가리키는 java2를 가리키게 된다.
o3==o4 가 true가 되게 된다.


🕦이후

다음번에는..
자바의 예외를 먼저 공부해보자!!

profile
MySQL DBA 신입 지원

0개의 댓글