티스토리 뷰

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

short num = 1;
short num = -num;

 

☞jvm은 32비트 메모리로 int(32바이트) 이하의 데이터 타입으로 연산을 진행하고 강제변환(?)을 하지 않으면 자동으로 int이하의 데이터 타입을 int로 변환하여 연산 후 다시 short로 변환하므로 그 과정에서 오류가 발생하는 것이다. (maybe) 


2. 전위 증가 연산자와 후위 증가 연산자의 차이는?


☞전위 증가 연산자와 후위 증가 연산자 모두, 데이터 값에 1을 더하거나 빼는 것이다. 
전위 증가 연산자는 (++num) 또는 (--num)으로 표현 되며 System.out.println(++num); 형태에서 전위 증가 연산자를 사용하면 데이터값에서 1이 더해진 상태로 산출이 된다.

int num1 = 2;  
System.out.println(++num1);

 

결과값: 3
후위 증가 연산자는 (num++)또는 (num--)으로 표현되며 System.out.println(num++); 시 num값이 도출된 뒤에 연산을 진행한다. 따라서 결과값에는 연산과정 이전의 값이 도출된다. 
연산값을 보고 싶다면  System.out.println(num);을 한 번 더 적으면 볼 수 있다.

int num1 = 2;
System.out.println(num++);
System.out.println(num);

 

결과값: 2  
        3 


3. 아래의 비트 연산자 4가지를 설명하시오.

& | ^ ~

 

☞해당 비트 연산자 4가지는 이진수 연산이라고도 부른다.
1) &은 AND로 읽히며 &&와는 다른 의미이다. 데이터값의 이진수 표현 상태에서 두 숫자 모두 1일 경우에만 1이 산출된다. 그 외에는 0으로 표시된다.
1 1 → 1
1 0 → 0
0 1 → 0
0 0 → 0

 

2) |은 OR로 읽히며 ||와는 다른 의미이다. 데이터 값의 이진수 표현 상태에서 두 숫자 중 하나라도 1을 내포하면 1이 도출된다. 오로지 데이터 값 모두 0일 경우에만 0으로 표시된다.
1 1 → 1
1 0 → 1
0 1 → 1
0 0 → 0

 

3) ^ 은 XOR라고 부르며 현장에서는 삿갓이라고 부른다. 두 이진수가 다를 경우 1이라고 표시되고 같을 경우 0으로 표시된다.
1 1 → 0
1 0 → 1
0 1 → 1
0 0 → 0

4) ~ 은 모든 비트를 반전시키는 것을 의미한다. 
1 → 0
0 → 1


4. 아래의 쉬프트 연산자에 대하여 설명하시오.

<<
>>

 

☞ 쉬프트 연산자는 뾰족한 방향으로 데이터 값이 연산되는 것을 의미한다.
<<일 경우 우측 숫자가 n이라고 가정할 경우 좌측 값의 n승으로 연산이 된다.
반대로 >>일 경우 n만큼 나눠진 결과이다. ◀◀



5. 아래의 출력값을 예측하시오.

class AssignSteResult {
	public static void main(String[] args) {
		int num1 = 10, num2 = 20, num3 = 30;
		num1 = num2 = num3;
		
		/*
	      = 연산자는 결합 방향이 오른쪽에서 왼쪽으로 진행된다.  
	      -> 따라서 위의 문장은 다음과 같다. 
	      num1 = (num2 = num3);        
	    */
	    
	    System.out.println(num1);
	    System.out.println(num2);
	    System.out.println(num3);
	
	}
}


☞ 세 값 모두 30



6.아래의 출력값을 예측하시오.

class AddNum {
	public static void main(String[] args) {
		int result = 3 + 6;
		System.out.println("3 + 6 = " + result);

	}
}

  ☞9예상. 3+6은 9이므로. 

 

result += 9;
System.out.println("3 + 6 + 9 = " + result);


☞18예상. result값이 9였는데 9에 9를 다시 더하므로. 

   

result += 12;
System.out.println("3 + 6 + 9 + 12 = " + result);


☞30 예상. result 값이 18이었늗네 그 값에 12를 더하므로.

 

 

 


8.  조건문의 3가지 종류를 나열하고 설명하시오.

 

1) if문: if 조건문은 해당값이 참(true)인지 거짓(false)인지 판단하고 참 값을 도출하는 것이다.

	if(n1<n2) {

		System.out.println("n1 > n2 is true");

	}

 

 

2) if ~ else문: if 조건문 이후 참이 아닌 값에 대해 구하고 싶을 때 else를 붙인다.

	if(true or false) {

		System.out.println(조건 true시 실행되는 영역);

	} else {
    
		System.out.println(조건 false시 실행되는 영역);
        
	}

 

 

3) if ~ else if ~ else 문: if 조건문 이후 참이 아닌 값에 대해 다시 참 거짓을 판별하고 싶을 때 else if를 추가하고 가장 마지막으로 참거짓이 판단되는 구문은 else로 적는다. else if절은 중간에 얼마든지 추가 가능.

	if(true or false) {
    
    	System.out.println(조건 true시 실행되는 영역);
        
	}else if {
    
		System.out.println(조건 false시 실행되는 영역);
        
	}else {
    
		System.out.println(조건 false시 실행되는 영역);
        
	}



 


9. 아래의 프로그램을 짜시오.

국어:80 수학:80 영어:60 
총점과 평균을 출력하고, 
평균에 따른 수우미양가를 출력 하시오.

 

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
public class GradeTest {
    public static void main(String[] args) {
        int kor = 80;
        int math = 80;
        int eng = 60;
 
        int total = kor + math + eng;
        System.out.println("총점: " + total);
 
        double avg = total / 3.0;
        System.out.println("평균: " + avg);
 
        if (avg >= 90) {
            System.out.println("수");
        } else if (avg >= 80) {
            System.out.println("우");
        } else if (avg >= 70) {
            System.out.println("미");
        } else if (avg >= 60) {
            System.out.println("양");
        } else {
            System.out.println("가");
        }
        
 
    }
}
cs



 


10. int 변수 3개 선언 

임의 값 집어 넣음

그중 3개의 값중 최대값을 출력 
90 100 60

출력:
최대값은 100 입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class programming2 {
    public static void main(String[] args) {
 
        int num1 = 60;
        int num2 = 90;
        int num3 = 100;
 
        if ((num1 > num2) && (num1 > num3)) {
            System.out.println("최대값은 " + num1 + "입니다");
        } else if ((num2 > num1) && (num2 > num3)) {
            System.out.println("최대값은 " + num2 + "입니다");
        } else {
            System.out.println("최대값은 " + num3 + "입니다");
        }
        
        
        
    }
}
cs



위에 if문 간단하게 줄여보기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class programming2 {
    public static void main(String[] args) {
 
        int r1 = 60;
        int r2 = 90;
        int r3 = 100;
 
        if (r1 > r2) {
            System.out.println("최대값은 60이다");
        } else if (r2 > r3) {
            System.out.println("최대값은 90이다");
        } else {
            System.out.println("최대값은 100이다");
        }
 
    }
}
cs




삼항연산자 이용

A = B ? C : D ;

B 조건, C는 true일때, D는 false일때

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class programming2 {
    public static void main(String[] args) {
 
        int w1 = 60;
        int w2 = 90;
        int w3 = 100;
        int Max;
 
        Max = ((w3 > w2) && (w3 > w1)) ? w3 : w2;
        System.out.println(Max);
 
    }
}
    
 
cs

 

 


☞☞//과제 10번 해설. 세 수 중 큰 수 찾기
int a = 60;
int b = 90;
int c = 100;

int max; //최대값 설정

if (a>b) {
if(a>c) {      //if 문 안에 if 있는건 그다지 좋지 않음
max=a;
}else {
max = c;
}
}else {
if(b>c) {
max=b;
}else {
max=c;
}
}
System.out.println(max);
System.out.println("=============");

//방법 2. 내가 한 방법. 아주 잘했다네? 히히
if((a>b)&&(a>c)) {
max = a;
}else if((b>a)&&b>c) {
max=b;
}else {
max=c;
}
System.out.println(max);
System.out.println("=============");

//방법 3. 좀 더 줄여보기. 선생님 방법.
max = a; //a를 max값으로 지정해놓고 b와 비교
if(b>max) {
max=b;
}
if (c>max) {
max = c;
}
System.out.println(max);
System.out.println("=============");

//삼항연산자 이용
//a와 b를 일단 비교를 해. a가 더 크면 참
max = (a>b) ? (a>c?a:c) : (b>c? b:c); 
System.out.println(max);



 


11. 아래의 프로그램을 짜시오.

int 변수 선언 후 임의로 값을 넣음.
해당 값이 짝수 이면 "짝수 입니다" 출력
해당 값이 홀수 이면 "홀수 입니다" 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
public class programming2 {
    public static void main(String[] args) {
 
        int num = 38476285;
        if (num % 2 == 0) {
            System.out.println("짝수 입니다");
        } else {
            System.out.println("홀수 입니다");
        }
 
        
    }
}
cs

 

 

 

댓글