일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- java Fish
- java 상속
- Java 메소드
- java 단축키
- SQLD 핵심포인트
- java 성별
- sqld revoke
- sqld trigger
- JAVA 연산자
- SQLD 옵티마이저
- sqld 자격증
- SQLD 특강
- java 함수
- JAVA 제어문
- sqld deny
- sqld remame
- SQLD 자격시험 개념정리
- java spider
- java 논리연산자
- Java Cat
- sqld 옵티마이져
- java
- java 구구단
- SQL
- PLSQL
- java string
- JAVA for문
- java 로또
- java Animal
- sqld grant
- Today
- Total
SQLD, ECLIPS, JAVA,PYTHON, NODE....
[Eclips] Java class 1 - 연산자 문제 본문
2023.12.7 연습문제 및 풀이
1.다음 연산의 결과를 적으시오.
class Exercise1 {
public static void main(String[] args) {
int x = 2;
int y = 5;
char c = 'A';
System.out.println(1 + x << 33); // (해석) int가 4byte이며, 1byte는 8bit이므로 32bit, (2진수) 1+32 << 33은 110(2진수)이므로 4+2=6(답)
System.out.println(y >= 5 || x < 0 && x > 2); // (해석) y > = 5가 true이며, OR연산자이기 때문에 뒤에 조건식은 무시된다. true(답)
System.out.println(y += 10 - x++); //(해석) 식을 풀어보면 y = y + (10 - x++)이 된다. x는 후위연산자이기 떄문에 일단 (10 - x++)이 연산이 된 후에 x에 +1이 된다. 즉, y = y + 8이므로 13(답)
System.out.println(x+=2); //(해석) 위의 출력문에서 x는 후위연산이 되어 x = 3이 되었으며, x += 2는 5가 정답.
System.out.println( !('A' <= c && c <='Z') ); //(해석) 안에 논리식은 대문자인지 확인 조건식. c의 값이 대문자('A)이므로 true, 논리부정 연산자가 있기 때문에 결과는 반대인 false.
System.out.println('C'-c); //(해석) 'C' 아스키코드 67, c('A') 아스키코드로 65, 67 - 65= 2(답)
System.out.println('5'-'0'); //(해석) 아스키코드가 0-9까지 a-z까지 A-Z까지 연속 되므로 0과 5의 차이는 5(답)
System.out.println(c+1); //(해석) 위의 설명으로 연속적이기 때문에 66('B')답. 단,정수형 리터럴은 더하므로 형변환 발생. 정수가 나옴(답).
System.out.println(++c); //(해석) 선행연산자 +1 연산이 가장 먼저 일어나기 때문에 'B'(66) 답.
System.out.println(c++); //(해석) 후위연산자로 +1 연산이 가장 나중에 일어나며 따라서 'B'(66)가 나온 후 c의 값에 +1이 연산됨. 67(답)
System.out.println(c); //(해석) 위에 후위연산자로 +1을 연산되어 'C'인 67(답).
}
}
2.아래의 코드는 사과를 담는데 필요한 바구니(버켓)의 수를 구하는 코드이다.
: 만일 사과의 수가 123개이고 하나의 바구니에는 10개의 사과를 담을 수 있다면, 13개의 바구니가 필요할 것이다. (1)에 알맞은 코드를 넣으시오.
class Exercise2 {
public static void main(String[] args) {
int numOfApples = 123; // 사과의 개수
int sizeOfBucket = 10; // 바구니의 크기(바구니에 담을 수 있는 사과의 개수)
int numOfBucket
= (numOfApples%sizeOfBucket)==0?(numOfApples/sizeOfBucket):(numOfApples/sizeOfBucket)+1);
(1) --> 빨간색 코딩
System.out.println("필요한 바구니의 수 :"+numOfBucket);
}
}
3.아래는 변수 num의 값에 따라 '양수','음수', 0을 출력하는 코드이다. 삼항 연산자를 사용해서 (1)에 알맞은 코드를 넣으시오.
class Exercise3 {
public static void main(String[] args) {
int num = 10;
System.out.println( (num == 0) ? '0' : ( (num > 0) ? "양수" : "음수") ); //삼항연산자는 (참 또는 거짓)? X : Y 형태
}
}
4.아래는 변수 num의 값 중에서 백의 자리 이하를 버리는 코드이다. 만일 변수 num의 값이 456이라면 400이되고 111이라면 100이 된다. (1)에 알맞은 코드를 넣으시오.
class Exercise4 {
public static void main(String[] args) {
int num = 456;
System.out.println( (num/100)*100 ); // 456을 100으로 나눈 값이 45이고 나머지 6은 버리므로 45*100=400.
}
}
5.아래는 변수 num의 값 중에서 일의 자리를 1로 바꾸는 코드이다. 만일 변수 num의 값이 333이라면 331이 되고, 777이라면 771이 된다. (1)에 알맞은 코드를 넣으시오.
class Exercise5 {
public static void main(String[] args) {
int num = 333;
System.out.println( (num/10)*10)+1 ); // 333나누기 10은 33.3이고 나머지는 버리면 30이 되고 10을 곱하면 330이고 +1이 되면 331이 나옴.
}
}
6.아래는 변수 num의 값보다 크면서도 가장 가까운 10의 배수에서 변수 num의 값을 뺀 나머지를 구하는 코드이다.
예를 들어, 24의 크면서도 가장 가까운 10의 배수는 30이다. 19의 경우 20이고, 81의 경우 90이 된다.
30에서 24를 뺀 나머지는 6이기 때문에 변수 num의 값이 24라면 6을 결과로 얻어야 한다. (1)에 알맞은 코드를 넣으시오. [Hint] 나머지 연산자를 사용하라.
class Exercise6 {
public static void main(String[] args) {
int num = 24;
System.out.println( 10-(num%10) ); // 24에서 가까운 10의 배수는 30이고, 30-24=6.
}
}
7.아래 코드의 문제점을 수정해서 실행결과와 같은 결과를 얻도록 하시오.
class Exercise7 {
public static void main(String[] args) {
byte a = 10;
byte b = 20;
byte c = a + b; (byte)(a+b); // byte를 선언해서 합계를 담아야 됨
char ch = 'A';
ch = ch + 2; (char) (ch+2)); // ch+2를 char에 담아야 됨
float f = 3 / 2;
long l = 3000 * 3000 * 3000;
float f2 = 0.1f;
double d = 0.1;
boolean result = d==f2;
System.out.println("c="+c);
System.out.println("ch="+ch);
System.out.println("f="+f);
System.out.println("l="+l);
System.out.println("result="+result);
}
}
답: C=30
ch=C
f=1.0
l=1230196224
result=false
8.다음은 문자형 변수 ch가 영문자(대문자 또는 소문자)이거나 숫자일 때만 변수 b의 값이 true가 되도록 하는 코드이다. (1)에 알맞은 코드를 넣으시오.
class Exercise8 {
public static void main(String[] args) {
char ch = 'z';
boolean b = ( chs>'a' && chs<='z') || (chs>'A' || chs<'z') || (chs>'0' && chs<'z'); // 소문자, 대문자, 0을 구별해서 참/거짓 구분하면, true값이 나옴
System.out.println(b);
}
}
9.다음은 대문자를 소문자로 변경하는 코드인데, 문자 ch에 저장된 문자가 대문자인 경우에만 소문자로 변경한다. 문자코드는 소문자가 대문자보다 32만큼 더 크다.
예를들어 'A'의 코드는 65이고 'a'의 코드는 97이다. (1)~(2)에 알맞은 코드를 넣으시오.
class Exercise9 {
public static void main(String[] args) {
char ch = 'A';
char lowerCase = ( ch > 'A' && ch < 'Z' ) ? ( (char) (ch+32) ) ) : ch; // 대문자를 참/거짓 확인 후, 아스키코드인 32보다 char로 'A'에 +32한 값을 담으면 됨.
System.out.println("upperCase:"+ch);
System.out.println("lowerCase:"+lowerCase);
}
}