피연산자의 자료형이 다르면 형변환이 일어남
수정 불가한 값
연산자의 결합 방향이 ⬅오른쪽인지 ➡왼쪽인지 주의할 것!
if(a > b || a + b * c < c )
System.out.println("영차");
if(a > b || a + (b * c) < c )
System.out.println("영차");
위 코드와 같은 경우 a + b * c 가 연산자 우선순위에 대해 가독성이 떨어질 수 있다.
최우선 연산자 ()를 사용해 연산 순위가 높은 부분이 어디인지 표시하자!
String str = "JDK" + 6.0;
// result: JDK6.0
+ 연산에서 String과 double Type이 같이 들어왔다.
먼저 String Type "JDK" 가 나왔으므로 뒤의 double Type 6.0은 String으로 Casting 된다.
String str2 = "JDK" + 3 + 3.0;
// result: JDK33.0
앞의 "JDK" + 3 부분에서 3 이 String Type으로 Casting되고, 뒤의 3.0 도 String Type으로 캐스팅 된다.
String str3 = 3 + 3.0 + "JDK";
// result: 6.0JDK
앞의 3 + 3.0 은 int 와 double Type이다. 따라서 double Type으로 캐스팅 되고 + 연산이 진행된다.
뒤의 + "JDK" 에서는 String Type과 double Type과의 연산이므로 앞의 6.0 이 String Type으로 Casting된다.
int x = 1, y = 1;
int a = x++;
// result: 1
int b = ++y;
// result: 2
int a = x++; 의 경우 x를 a에 먼저 집어넣고 그 다음 x증가시킨다.
int b = ++y; 의 경우 y+1 연산 후 b에 값을 집어넣는다.

위 사이클을 거친다
int[] arr; // 이 방법으로 표현하는 것이 더 좋다
int arr[]; // 얘보단 위 방법으로 표현할 것
import java.util.Scanner;
public class Loop {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력하시오: ");
int input = sc.nextInt();
System.out.println();
for (int i = 1; i <= input; i++) {
for(int k = 0; k < input-i; k++) {
System.out.print(" ");
}
for (int j = 0; j < (i * 2) - 1; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
import java.util.Scanner;
public class GuessNumber {
public static void main(String[] args) {
// 9/21 숫자맞추기 게임 과제
int Number = (int)(Math.random() * 100) + 1;
Scanner sc = new Scanner(System.in);
int input = 0, count = 0;
while(true) {
System.out.print("정답을 추측하여 보시오: ");
input = sc.nextInt();
if(input > Number) {
System.out.println("HIGH");
count++;
} else if(input < Number) {
System.out.println("LOW");
count++;
} else {
count++;
System.out.println("축하합니다. 시도횟수: " + count);
break;
}
}
}
}
결과는 잘 출력된다.