220921 Today I Learned

Kaan Haan·2022년 9월 21일

1. 형변환

피연산자의 자료형이 다르면 형변환이 일어남

  • 컴퓨터는 데이터 타입을 맞춰줘야 함
  • 묵시적 형 변환(자동)
  • 명시적 형 변환(강제)
    : 조심해서 사용할 것

2. 상수: final

수정 불가한 값

  • 상수명은 전부 대문자로

* float는 지수, 가수 형태로 표현되기 때문에 long보다 표현범위가 크다.

* 사칙연산 시 리터럴은 기본으로 int 형이다.

3. 연산자

1. 연산자의 결합 방향을 주의해야 한다.

연산자의 결합 방향이 ⬅오른쪽인지 ➡왼쪽인지 주의할 것!

2. 최우선 연산자 ()를 사용하자.

if(a > b || a + b * c < c )
	System.out.println("영차");

if(a > b || a + (b * c) < c )
	System.out.println("영차");

위 코드와 같은 경우 a + b * c 가 연산자 우선순위에 대해 가독성이 떨어질 수 있다.

최우선 연산자 ()를 사용해 연산 순위가 높은 부분이 어디인지 표시하자!

3. 연산에서 Data Type이 다르다면 자동으로 Casting 된다.

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된다.

4. 전위연산 / 후위연산

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에 값을 집어넣는다.

4. 반복문

for문:

위 사이클을 거친다

* OR 문이 AND 보다 조건을 적게 보기 때문에 효율적

5. 배열

int[] arr;	// 이 방법으로 표현하는 것이 더 좋다

int arr[];	// 얘보단 위 방법으로 표현할 것


# 오늘의 과제

1. 별 탑쌓기

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

}

2. 숫자 추측 게임

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

결과는 잘 출력된다.

0개의 댓글