본문 바로가기
Study

20120712_Java스터디 2일차

by hyeongjin's_life 2012. 11. 20.

Java 스터디 2주차 과제

1. 다음 배열들의 선언과 초기화의 잘못된 것을 고르고 수정하시오.





2. 크기 100인 배열을 만들고 100부터 감소하며 1까지 값을 저장하시오.


3. MAX 배열의 최대값을 갖는 수를 구하는 방법을 for 문을 이용하여 찾으시오.

Int[] Max={5,7,1,2,8,3,9,10,12};


4. 다음 배열을 버블정렬 알고리즘을 이용하여 내림차순으로 배열하시오.


5. 2진수를 입력하고 16진수로 변환하여 출력하는 클래스를 작성하라.

import java.io.IOException;

import java.util.Scanner;

class First{

public static void main(String[] args) throws IOException

{

int i;

int[] binary = new int[8];

Scanner scan = new Scanner(System.in);

System.out.println("2진수를 자리씩 입력하세요.");

for(i=0;i<binary.length;i++)

{

System.out.println((i+1)+" 번째 자리 2진수 : ");

binary[i] = scan.nextInt();

}

System.out.print("입력한 변수 : ");

for(int j=0; j<binary.length;j++)

{

System.out.print(binary[j]);

if(j==3)

System.out.print("");

}System.out.println("");

int a = 0, b =0;

for(i=0;i<=3;i++)

{

a = (int) (a + (binary[i] * Math.pow(2, 3-i)));

System.out.println((i+1)+"번째 까지 a : "+a);

}

for(i=0;i<=3;i++)

{

b = (int) (b + (binary[i+4] * Math.pow(2, 3-i)));

System.out.println((i+5)+"번째 까지 b : "+b);

}

System.out.println(" 네자리 이진수 변환 ="+a+", " +

" 네자리 이진수 변환 = "+b);

System.out.print("16진수로 변환한 : ");

switch(a)

{

case 10:System.out.print("A");

break;

case 11: System.out.print("B");

break;

case 12: System.out.print("C");

break;

case 13: System.out.print("D");

break;

case 14: System.out.print("E");

break;

case 15: System.out.print("F");

break;

}

switch(b)

{

case 10:System.out.print("A");

break;

case 11: System.out.print("B");

break;

case 12: System.out.print("C");

break;

case 13: System.out.print("D");

break;

case 14: System.out.print("E");

break;

case 15: System.out.print("F");

break;

}

}

}

6. 각 빈칸에 알맞은 단어를 넣으시오.

클래스

객체

제품설계도

제품

TV설계도

TV

붕어빵 기계

붕어빵

7. 아래의 여러 변수들 중 멤버변수는 무엇인가. 그리고클래스 변수, 인스턴스 변수, 지역변수로 나누어 보아라


8. 다음 클래스멤버와 인스턴스멤버간의 참조와 호출 중 잘못된 부분을 지적하고 이유를 서술하시오.

????? 잘 모르겠음....

9. 다음 중 오버로딩의 잘못된 예를 고르고 이유를 서술하시오.

[보기1]

intadd(int a, int b) { return a+b; }

intadd(int x, int y) { return x+y; }

[보기2]

intadd(int a, int b) { return a+b; }

longadd(int a, int b) { return a+b; }

[보기3]

longadd(int a, long b) { return a+b; }

intadd(long a, int b) { return a+b;}

메서드오버로딩은 메소드의 이름이 같아야 하고 매개변수의 개수나 타입이 달라야 하며, 매개변수는 같고 리턴타입이다른 경우는 성립되지 않는다.

보기1, 2의 경우 입력하는 데이터의 타입이 같기 때문에 오버로딩이 성립하지 않지만(리턴타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.) 보기 3은 입력받는 데이터 타입이 다르기 때문에 오버로딩이 성립한다.

10. 밑의 클래스는 클래스변수(cv)와 인스턴스변수(iv)를 각각 하나씩 가지고 있다. ‘new 멤버변수의 초기화와시기();’ 와 같이 인스턴스를 생성했을 때 cv iv가 초기화되어 가는 과정을 단계별로 설명하여라.

public class 멤버변수초기화와시기

{

static int cv=1;

int iv=1;

static{cv=2;}

{iv=2;}

멤버변수의초기화와시기()

{

iv=3;

}

}

cv 0 1 2 cv 2 2 2 2

iv 0 1 2 3