Java Flow Control
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"; true와 false는 reserved word
System.out.println(foo.contains("world"));
System.out.println(foo.contains("egoing"));
}
}
contains() : 문자열 안에 입력값이 있으면 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) {
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(1);
System.out.println("b");
}
}
public class AuthApp {
public static void main(String[] args) {
System.out.println(args[0]);
String id = "egoing";
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는 boolean 형태로 값을 반환 시켜준다.
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) {
// 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?");
}
}
}
자바에서 문자나 객체를 비교할 때는 ==가 아닌 equals를 사용해야 한다.
primitive (원시 데이터) : 더이상 쪼갤 수 없는 데이터
-> boolean, int, double, short, long, float, char
non primitive : String, Array, Date, File
int p1 = 1
int p2 = 1
이런 데이터 타입은 원시적이고 같은 값이라면 한 곳에 저장된 데이터를 가져다가 쓴다.
그래서 ==를 사용한다.
원시데이터가 아니라 객체와 같은 데이터를 사용한다면 다른 곳에 저장이 되므로 ==대신에 equals를 사용한다.
== : 같은 곳에 저장되어 있는가
equals : 같은 내용으로 저장되어 있는가
String o3 = "java2" 와 같이 썼을때는 원시데이터와 마찬가지로 한곳에 저장되기 때문에 ==를 사용한다.
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);
}
}
while과 for는 비슷한 기능을 하지만, 코드가 많을 때 while은 각각의 조건 사이에 다른 코드가 껴들어갈수도있고 오염될 가능성이 있어 for를 사용하는것이 낫다.
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[2]);
System.out.println(users.length);
int[] scores = {10, 100, 100};
System.out.println(scores[1]);
}
}
public class LoopArray {
public static void main(String[] args) {
/*
* <li>egoing</li>
* <li>jinhuck</li>
* <li>youbin</li>
*/
String[] users = new String [4];
users[0] = "egoing";
users[1] = "jinhuck";
users[2] = "youbin";
for(int i=0; i<users.length; i++) {
System.out.println("<li>"+users[i]+"<li>");
}
}
}
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?");
}
}
}
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?");
}
}
}