[K-디지털 트레이닝] 학습정리 19일차 (2024-07-12)

smoo·2024년 7월 12일

JAVA_STUDY

목록 보기
4/25

1. 아래가 true로 출력되는 원리는?

우측 int형 7이 double형 7.0으로 자동 형변환 되면서 좌측 더블형 7.0과 값이 같아지기 때문이다.


2. 아래 결과를 예측하고, 원리를 적어 보시오. (결합 방향의 이해)

모두 30 으로 출력이 될 것이다.
우측의 값을 좌측으로 값을 대입하기 때문.


3. 아래의 연산자를 설명하시오.

① %

나눗셈 후 나머지 값
7 % 3 = 나머지 : 1 , 10 % 4 = 나머지 : 2

② 복합 대입 연산자

  • 대입 연산자를 응용하여 연산과 대입을 한 번에 해주는 연산자
  • 코드의 반복적인 작업을 최소화하여 효율적이다.
  • +=, *=, /=, %= 등 대입 연산자 앞에 산술 연산자를 붙여 사용한다.

4. 리터럴이란 무엇인가요?

  • 리터럴은 데이터(값) 그 자체를 뜻한다.
  • 즉, 변수에 넣는 변하지 않는 데이터를 의미하는 것.
    ex1) int num1 = 5 + 7;
    ex2) double num2 = 3.3 + 4.5;
    • 정수는 무조건 int형으로 인식하기로 약속되어 있음
    • 따라서 5와 7은 '정수형 리터럴' 이다.
    • 그리고 3.3과 4.5는 '실수형 리터럴’ 이다.

5. 아래의 내용이 에러가 나는 이유와 수정 방법은?

System.out.println(3147483647 + 3147483648); // 에러남

정수는 무조건 int형으로 인식하기로 약속되어 있는데 int 데이터 허용 범위의 값을 넘었기때문에 데이터 허용 범위가 더 넓은 long 데이터로 선언해주면 해결 된다.

🟠에러 수정 방법🟠
System.out.println(3147483647L + 3147483648L);


6. 자동 형변환과 명시적 형변환에 대하여 설명하시오.

① 자동 형변환

  • 연산을 수행할 시 프로그램이 스스로 데이터 타입을 바꾸어서 연산결과를 저장
  • 기본적으로 데이터가 손실되지 않도록 변환

규칙1. 자료형의 크기가 큰 방향으로 형 변환이 일어난다.
규칙2. 자료형의 크기에 상관없이 정수 자료형보다 실수 자료형이 우선한다.

② 명시적 형변환

형 변환이 필요한 상황에 데이터 타입을 입력함으로써, 연산 결과의 데이터 타입을 강제로 바꾸어주는 것을 의미

  • ex1)
double pi = 3.1415;
int wholeNumber = (int)pi;
  • ex2)
long num1 = 3000000007L;
int num2 = (int)num1;
  • ex3)
short num1 = 1;
short num2 = 2;
short num3 = (short)(num1 + num2);

7. 아래의 에러가 나는 이유를 설명하고 수정하시오.

int b = 4;

double c = a/b;
System.out.println(c);

결과 0.0

에러 이유
나눗셈의 몫이 정수값이 아닌 실수로 표현되어야하기 때문에 실수형 데이터형으로 선언해야한다. ( 정수의 데이터 표현 방식과 실수의 데이터 표현 방식 연산의 값으 다르게 나오기 때문 )

  • 수정 방안 1
double a = 3;
double b = 4;

double c = a/b;
System.out.println(c);
  • 수정 방안 2
double a = 3;
int b = 4;

double c = a/b;
System.out.println(c);
  • 수정 방안 3
int a = 3;
int b = 4;

double c = (double)a/b;
System.out.println(c);
  • 수정 방안 4
int a = 3;
int b = 4;

double c = a/(double)b;
System.out.println(c);
  • 수정 방안 5
int a = 3;
int b = 4;

double c = (double)a/(double)b;
System.out.println(c);

8.이스케이프 시퀀스의 종류를 나열하고 기능을 설명하시오.

화면상의 어떠한 상황 또는 상태를 표현하기 위해 약속된 문자

'\b' : 백스페이스키 기능 문자
'\t' : 탭키 기능 문자
'\\' : 백플래시 문자
'\'' : 작은 따옴표 문자
'\"' : 큰 따옴표 문자
'\n' : 개 행(줄바꿈) 문자


9. 아래의 출력 결과를 확인하고, 130이 나오는 이유를 설명하시오.

System.out.println('A'); // char 형으로 인식, 메모리에 올라갈 때 65 값이 들어감

System.out.println('A'+'A'); // char 형으로 65 메모리에 올리고, int형으로 자동 형변환

결과

A
130

A 문자는 유니코드로 65로 약속되어 있기에 int 값인 65로 자동 형변환되고 + 연산자 역할 때문에 덧셈 연산이 되어 130이 출력이 된다.


10. 결합 방향과 우선순위에 대하여 설명하시오.

2 + 3 * 2 / 3 - 2

① 연산자의 우선 순위
위의 수식은 곱셈, 나눗셈을 먼저 계산해야한다.

② 결합 방향
계산은 왼쪽에 있는 곱셈 후 나눗셈 순으로 진행이 된다.

  • 예시 이미지

11. " 1초과 100미만인가?"를 코딩하면?

public class LogicalOp {

	public static void main(String[] args) {

		int num1=20;

		boolean result ;

		result = (num1>1)&&(num1<100);

		System.out.println("1초가 100미만인가?"+result);

	}

}

12. &&연산자와 ||연산자의 차이는?

&&연산자 : 모든 값이 true (참) 으로 같아야 true(참)

||연산자 : 하나의 값만 true (참) 이어도 true(참)


13. "2의 배수 또는 3의 배수?"를 코딩으로 표현하시오.

public class LogicalOp {

	public static void main(String[] args) {

		int num1=33;

		boolean result ;

		result = ((num1 % 2) == 0) || ((num1 % 3) == 0);

		System.out.println("2의 배수 또는 3의 배수?"+result);

	}

}

14. 아래를 코딩하시오.

int로 국어,영어,수학,총점을 선언 및 값 할당
double로 avg 선언후에 평균을 넣음

출력은 아래와 같음
총점 255
평균 186.3423

profile
코딩 스터디 정리

0개의 댓글