>> 자바 테스트 <<
※ 주의 : 프로그램 실행 결과가 오류가 발생할 경우 컴파일 오류인지, 런 타임 오류인지를 기술할 것
이름 :
1. 자바의 기본 자료 형(primitive Type) 8가지와 각 자료형의 byte 수를 쓰시오.
boolean(1byte) : true값과 false값만 출력
byte(1byte)
char(2byte) : 유니코드 문자 한글자당 2byte
short(2byte)
int(4byte) : 정수형
long(8byte) : 정수형
float(4byte) : 실수형
double(8byte) : 실수형
2. 다음중 식별자(Identifier)로 사용 할 수 있는 것을 모두 고르시오.
name, #name, _tel, 주소, float, $age, ~age
name : O 첫글자 유니코드자바레터(알파벳,_,$)
#name : X 특수문자 불가능
_tel : O 언더바 가능
주소 : O 각국 언어 가능
float : O 실수형태의 기본자료형
$age : O 첫글자 유니코드자바레터(알파벳,_,$)
~age : X 특수문자 불가능
3. 다음 프로그램은 하나의 문자를 입력 받아 ASCII 코드를 출력 하는 프로그램이다.
잘못된 부분을 수정하시오.
public class Test {
public static void main(String[] args) throws java.io.IOException {
char ch;
System.out.print("한문자 ? ");
ch = System.in.read();
System.out.println("%c : %d\n", ch, ch);
}
}
public class Test {
public static void main(String[] args) throws java.io.IOException {
int ch; // 정수형태로 입력받으므로 int형 변수 선언
System.out.print("한문자 ? ");
ch = System.in.read(); // 한문자를 입력받아 아스키코드(정수)로 입력받으므로..
System.out.printf("%c : %d\n", ch, ch);
// %c, %d 같은 서식문자를 출력하기 위해 printf로 변경
}
}
4. 다음 프로그램의 실행 결과는 ?
public class Test {
public static void main(String[] args) {
byte a=10, b=5, c;
c=a+b;
System.out.println(c);
}
}
byte형으로 정수 선언시 overflow(값이 넘침)를 미리 감지하여
컴파일 error
아래와 같이 int형으로 변수 선언시 정상 출력되어 값은 15 가 출력됨
public class Test {
public static void main(String[] args) {
int a=10, b=5, c;
c=a+b;
System.out.println(c);
}
}
5. 다음 코드의 출력 결과는 ?
int []x= {1, 2, 3, 4, 5};
int y[] =x;
System.out.println(y[2]);
결과는 3이다.
배열은 첫번째 인자가 0부터 시작되므로 y[2]는 3번째 값을 가르킨다.
6. 다음 실행 결과는 ?
String str="420";
str+=42;
System.out.println(str);
"420"은 Stirng으로 문자열으로 입력되었고
str+=42는 str에 저장된 값에 정수 42를 더한 것이므로 둘은 그냥 이어져 붙을 뿐
연산이 이루어 지지 않는다. 결과는 42042 이다.
7. 다음 실행 결과는 ?
public class Test {
public static void main(String[] args) {
for (int i=0; i<=10; i++){
if( i>6) break;
}
System.out.println(i);
}
}
컴파일 에러 : for문 안에서 선언된 변수는 외부에서 사용 불가하다.
i값이 6보다 클 때 for문을 빠져나와 i값은 사용할 수 없는 변수가 된다.
8. 다음 실행 결과는 ?
int a=0, s=0;
while(a++ <= 9) {
s+=a;
}
System.out.println("a:"+a+", s:"+s);
결과는 a:11, s:55 이다.
a++ <= 9 일때 관계연산자보다 증감연산자가 우선순위가 높아
a가 반복문에 의해 1씩 증가되어 돌아올 때 a가 9일때 비교하고 참이므로
10이 되어 내려가서 그 값을 s에 누적하고 다시 올라와서 증가되어 11이 되고
비교하면 거짓이므로 while반복문을 빠져나와 a는 11을 출력하게 되고
b는 1부터 a가 10일 때까지의 값을 합하여 누적하고 a가 11일 땐 이미 a가
반복문을 빠져나간 뒤 이므로 55가 된다.
9. 다음의 실행 결과는 ?
System.out.printf("%.2f\n", 123.236);
답은 : 123.24
%.2f 실수형태의 서식문자 이며 소수점 둘째짜리까지만 표시하고 그 뒷자리는
반올림
10. 다음은 이름, 국어, 영어 점수를 입력 받아 총점을 구하는 프로그램입니다.
[ ]를 채우세요.
import java.io.*;
public class BufferedReaderTest {
public static void main(String[] args) throws IOException {
String name;
int kor, eng, tot;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("이름 ? ");
name = br.readLine(); // 엔터치기 전까지 한줄 입력받기
System.out.print("국어 ? ");
kor = Integer.parseInt(br.readLine()); // parseInt:문자열을 정수형태로 변환
System.out.print("영어 ? ");
eng = Integer.parseInt(br.readLine());
tot = kor + eng;
System.out.printf("이름: %s, 총점: %d\n", name, tot);
}
}
11. 다음의 실행 결과는 ?
int a = 12 & 6;
System.out.println(a);
12는 2진수로 1100 이고 6은 0110 이다.
논리곱은 값이 서로 참(1)일 때만 참..
1100
0110 → 0100 으로 결과는 4
12. 다음의 실행 결과는 ?
int a = 12 ^ 6;
System.out.println(a);
XOR : ^ 는 각 항의 값이 0과 1일 때 (즉 서로 다른 값일 때 참)
1100
0110 → 1010 으로 결과는 10
13. 다음의 실행 결과는 ?
int a = 32 >> 3;
System.out.println(a);
>> 는 오른쪽으로 이동하고 남은 자리는 부호로 채우므로
32 = 2진수로 100000 이고 오른쪽으로 3칸 이동하고 양수 이므로
부호는 0이고 000100 이 된다. 이것을 10진수로 바꾸면 4 다.
14. 1~100까지의 3의 배수의 합를 구하는 프로그램입니다. [ ]를 채우세요.
int s=0, n=0; // 변수 선언 및 초기화
for(n=0; n<100; n+=3) { // 1~100까지 n은 3씩 증가하고
s+=n; // 그 증가값을 s에 누적
}
System.out.println("결과 : " + s);
15. 1~100까지의 홀수의 합를 구하는 프로그램을 작성 하시오.
public class Test {
public static void main(String[] args) {
int s=0, n=0;
for(n=1; n<100; n+=2) { // 1에서 2씩 증가하므로 1,3,5,7...
s+=n; // 그 증가값을 s에 누적
}
System.out.println("결과 : " + s);
}
}
16. 다음 실행 결과는 ?
int x =5;
boolean b1 = true;
boolean b2 = false;
if((x==4) && !b2) // false의 값이므로
System.out.print("1 "); //1은 출력하지 않고 if문을 빠져나와
System.out.print("2 "); // 2를 출력하고
if ((b2 = true) && b1) // b2값을 무조건 참이 되도록 만들고 b1값도 참이므로
System.out.print("3 "); // 3을 출력한다.
답은 2 3
17. 다음 실행 결과는 ?
int x = 0;
int y = 10;
do { // 무조건 한번은 반복하므로
y--; // y값은 9가 되고 (후위 감소)
++x; // x값은 1이 되고 (전위 증가)
}while(x < 5); // x가 5보다 작을 때까지 반복이니 총 4회 반복하고 5회때 반복문을 빠져나온다.
System.out.print(x + "," + y); // y값은 4회 반복으로 5가 되고 x값은 전위 증가로 5가 되고
// 5가 된 값이 5보다 작다는 말은 거짓이므로 반복문을 빠져나와
x=5, y=5 가 되어 결과는 5,5
18. 다음 실행 결과는 ?
int x=12;
while (x < 10) { // 조건이 false 이므로 반복문을 빠져나와
x--;
}
System.out.print(x); // 초기값인 12를 출력한다.
답은 12
19. 다음의 출력 결과를 출력 하는 프로그램을 작성하시오.
*
***
*****
*******
public class Test{
public static void main(String[] args){
int i,j;
for(i=1; i<=4; i++){ // 4행 출력
for(j=1; j<=4-i; j++){ // 공백 출력 3,2,1,0
System.out.print(" "); // 공백 한칸
}
for(j=1; j<=i*2-1; j++){ // j<=i 일때 오른쪽이 직선, *이 삼각형 모양으로 되기 위해
// 1, 3, 5, 7, 9.. 식으로 가려면 i값은 1,2,3,4,5.. 식이므로 1,3,5,7,9..가 되기 위한
// 조건식을 찾으라는 말, 1*2-1=1, 2*2-1=3....
System.out.print("*");
}
System.out.println();
}
}
}
20. 콘솔창에서 Test.java 파일을 컴파일하고 실행하는 방법은 ?
컴파일 : cmd> javac Test.java
실행 : cmd> java Test
설명은 아마도, 필요 없을듯?!
------------------------------------------------------------------------------
* 객체 지향이란??
현실 세계는 객체(존재하는 모든 것)들의 집합이며 그 모든 것은 상태와 행동의
객체로 표현된다.
그 객체들을 인간이 이해하는 방식으로 프로그래밍화 시켜 시스템에 적용시키고자
하는 것을 객체 지향이라 한다.
객체(object)/클래스(class)/메시지(message)를 기본모형으로 하며
하나의 대상에 대해 일반적인 구성, 상태, 동작 등에 대해 기술하는 작업을 추상화
하는 그 대상을 객체라고 하고 객체라는 개념은 그 객체의 성질이나 특징을 나타내는
데이터로 이루어진 부분과 동작, 행동을 나타내는 부분으로 기술되어 진 것이다.
클래스란??
객체라는 개념을 일반화 시킨 것.
비슷한 부류의 객체를 분류한 것
그런 객체 부류의 추상화된 관념
클래스를 왜 쓰나?
재사용성이 가장 큰 이유?
클래스는 어떻게 작성하는가?
1. 추상화
상태
행동
2. 클래스 작성
3. 객체 생성 및 호출
......도통 무슨 말인지 이해가 가지 않지만 일단 정리해두고 추후 수정..;;