조건문(if)
if /if else / else 로 별다른 규칙은 없습니다. python의 elif와 같은 괴랄한 표기법도 없습니다.
public class BooleanApp {
public static void main(String[] args) {
int num = Integer.parseInt(args[0]);
if(num > 3) {
System.out.println("over 3");
} else if (num > 0) {
System.out.println("under 3, over 0");
} else {
System.out.println("under 0");
}
}
}
- 문자열과 문자열의 비교는 ==이 아닌 equals 메서드를 사용해야 합니다. (권장사항이 아닙니다. 동작 방식 자체가 다릅니다.)
public class Test {
public static void main(String[] args)
{
String s1 = new String("HELLO");
String s2 = new String("HELLO");
System.out.println(s1 == s2); // false
System.out.println(s1.equals(s2)); // true
}
이유는 다음과 같습니다. ==는 메모리 주소를 비교하고 equals는 값만 비교하는 군요.
- Both s1 and s2 refers to different objects.
- When we use == operator for s1 and s2 comparison then the result is false as both have different addresses in memory.
- Using equals, the result is true because its only comparing the values given in s1 and s2.
데이터 타입이 javascript와는 다릅니다. js의 경우 non-primitive를 object 하나만 있다고 여겨도 무방했지만 JAVA의 경우에는 다릅니다. 우선 String이 non-Primitive라는 사실이 가장 다른 점 중 하나입니다.
Primitive 데이터 타입 =>
boolean, int, double, short, long, float, cha
non Primitive 데이터 타입 => 메모리
String, Array, Date, File ...
그런데 문자열에는 편의성 때문에 다른 non-primitive과 다른 취급을 받습니다.
String이 non-primitive 타입이라고 하더라도 new String 생성자를 통해 생성한 것과 직접 값을 할당한 것은 다릅니다.
직접 값을 할당하면 Primitive 타입처럼 작동합니다.
public class StringApp {
public static void main(String[] args) {
String a = "asdf";
String b = "asdf";
String c = new String("asdf");
System.out.println(a == b); // true
System.out.println(a == c); // false
}
}
조건문 switch
import java.util.Scanner;
public class SwitchOneEx {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String buildingSecurityGrade = scanner.next();
System.out.println("building access authorization evalutaintg initialize");
switch (buildingSecurityGrade) {
case "A":
System.out.println("above B should access");
break;
case "B":
System.out.println("above C should access");
break;
default:
System.out.println("no authorization. you can't access it. it's bug");
break;
}
}
}
반복문(while / do while)
javascript랑 똑같아서 뭐.. 따로 언급할 사항은 없습니다.
while문
public class LoopApp {
public static void main(String[] args) {
int i = 0;
while(i < 5) {
System.out.println(i);
i++;
}
}
}
break나 continue도 사용 가능합니다.
public class WhileTest {
public static void main(String[] args) {
int i = 0;
while(i < 5) {
if (i == 3) {
i++;
continue;
}
i++;
System.out.println(i);
}
}
}
do while문도 있습니다. 가끔 사용하곤합니다.
public class WhileTest {
public static void main(String[] args) {
int i = 0;
do {
System.out.println(i); // 1번 실행하고 끝.
} while (i > 5);
}
}
반복문(for)
public class LoopApp {
public static void main(String[] args) {
for(int j = 0; j < 5; j++) {
System.out.println(j+"번 째:"+j);
}
}
}
배열을 섞어서 활용해봅시다.
public class ArrayApp {
public static void main(String[] args) {
String[] user = {"a", "b", "c"};
int[] scores = {10, 45, 100};
for (int i = 0; i < user.length ; i++) {
System.out.println("<li>"+user[i]+"</li>");
}
}
}
위와 같은 일반적인 for이 아니라 iterator를 곧바로 순서대로 뱉는 for문도 존재합니다.
for (dateType i : Iterator) 꼴로 사용합니다. 단점은 인덱스를 이용할 수 없다는 점.
public class ForCondition {
public static void main(String[] args) {
int[] arr = {15, 23, 3, 2, 6};
for (int i : arr) {
System.out.println(i);
}
}
}
당연히 continue와 break문 사용도 당연히 가능하다.
public class ForCondition {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
for (int i = 0; i < arr.length; i++) {
if (i == 3) {
System.out.println("stop");
break;
}
if (i == 2) {
continue;
}
System.out.println(i);
}
}
}
List 컬렉션을 사용해도 똑같다.
public class ForCondition {
public static void main(String[] args) {
int[] arr = {15, 23, 3, 2, 6};
List<Integer> intList = new ArrayList<Integer>();
for (int i = 0; i < arr.length; i++) {
intList.add(arr[i]);
}
for (int j : intList) {
System.out.println(j);
}
}
}
'Programming Language > ☕ Java' 카테고리의 다른 글
클래스 (0) | 2021.04.13 |
---|---|
연산자 (0) | 2020.11.26 |
변수 타입, 상수(final), 리터럴, 출력 지시자, 타입 캐스팅 (0) | 2020.11.15 |
IDE없이 직접 컴파일하고 실행해보기 (0) | 2020.09.12 |
openJDK 설치, JVM, JIT 컴파일 방식, hello world (0) | 2020.09.11 |