자바 문법 문제 2


1.
/*
 * 1. - 주관식 - 기초문법 - 연산자와 키워드 - 중
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는?
 * 
 * -답안
 *  SU MO TU WE TH FR SA
 *              01 02 03
 *  04 05 06 07 08 09 10
 *  11 12 13 14 15 16 17
 *  18 19 20 21 22 23 24
 *  25 26 27 28 29 30 31
 */

package java2_total;

public class GrammerEx1 {
    public static void main(String[] args) {
        final int SUN = 1;
        final int MON = 2;
        final int TUE = 3;
        final int WED = 4;
        final int THU = 5;
        final int FRI = 6;
        final int SAT = 7;

        int start = 1;
        int end = 31;
        int startWeek = THU;
        System.out.println(" SU MO TU WE TH FR SA");
        for (int i = 1; i < startWeek; i++) {
            System.out.print("   "); // "공백3칸"
        }
        for (int i = start, n = startWeek; i <= end; i++, n++) {
            System.out.print((i < 10) ? " 0" + i : " " + i); // (i < 10)?
                                                                // "공백두칸"+i :
                                                                // "공백한칸"+i
            if (n % 7 == 0)
                System.out.println();
        }
    }

}


2.

/*
 * 2. - 주관식 - 기초문법 - 조건문/반복문 - 상
 * 다음은 행렬 곱셈을 구현한 코드이다.
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는?
 * 
 * -생각
 *  {54,0,}
 *  {0,0,}
 *  몰라
 *  
 * -결과
 *  {54,30,}
 *  {165,70,}
 */

package java2_total;

public class GrammerEx2 {
    public static void main(String[] args) {
        int x[][] = { { 3, 2, 3 }, { 5, 9, 8 } };
        int y[][] = { { 4, 7 }, { 9, 3 }, { 8, 1 } };

        int z[][] = Matrix.multiply(x, y);
        Matrix.print(z);
    }
}

class Matrix {
    public static int[][] multiply(int[][] m1, int[][] m2) {
        int m1Rows = m1.length;
        int m1Cols = m1[0].length;
        int m2Rows = m2.length;
        int m2Cols = m2[0].length;

        if (m1Cols != m2Rows) {
            throw new IllegalArgumentException();
        }

        int[][] result = new int[m1Rows][m2Cols];

        for (int i = 0; i < m1Rows; i++) {
            for (int j = 0; j < m2Cols; j++) {
                for (int k = 0; k < m1Cols; k++) {
                    result[i][j] += m1[i][k] * m2[k][j];
                }
            }
        }
        return result;
    }

    public static void print(int[][] a) {
        int rows = a.length;
        int cols = a[0].length;
        for (int i = 0; i < rows; i++) {
            System.out.print("{");
            for (int j = 0; j < cols; j++) {
                System.out.print(a[i][j] + ",");
            }
            System.out.println("}");
        }
    }

}


3.

Colored By Color Scripter

/*
 * 3. - 주관식 - 배열과 컬렉션 - 배열과 컬렉션 - 중
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는?
 * 
 * -생각
 *  set입력 1,2,9,7,4,6,0
 *  정렬 0,1,2,4,6,7,9
 *  
 *  결과 0,1,2,4,6,7,9
 *  
 * -결과
 *  0124679
 */

package java2_total;

import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

public class CollectionEx3 {
    public static void main(String[] args) {
        String[] arr = { "1""2""9""7""4""6""1""7""0" };
        Set set = new HashSet();
        for (String s : arr) {
            set.add(s);
        }

        List list = new LinkedList(set);
        Collections.sort(list);

        Iterator it = list.iterator();

        while (it.hasNext()) {
            System.out.print(it.next());
        }
    }
}


4.

/*
 * 4. - 주관식 - OOP특징 - 객체의 생성과 사용 - 상
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는? 컴파일시 에러가 발생한다면 라인번호와 그 원인과 해결책을 설명하시오.
 * 
 * -결과
 * 10
 * 10
 */

package java2_total;

public class OopEx4 {
    public static void main(String[] args) {
        Test t1 = Test.getInstance();
        Test t2 = Test.getInstance();
        t1.setX(5);
        t2.setX(10);
        System.out.println(t1.getX());
        System.out.println(t2.getX());
    }
}

class Test {
    private static Test t;
    private int x;

    private Test() {
    }

    public static Test getInstance() {
        if (t == null) {
            t = new Test();
        }
        return t;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

}


5.

/*
 * 5. - 주관식 - OOP특징 - Abstraction - 상
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는? 컴파일시 에러가 발생한다면 라인번호와 그 원인과 해결책을 설명하시오.
 * 
 * -생각
 *  first
 *  second
 *  third
 * 
 * -결과
 *  first
 *  second
 *  third
 */

package java2_total;

public class OopEx5 {
    public static void main(String[] args) {
        Template t = new Test1();
        t.play();
    }
}

abstract class Template {
    void play() {
        first();
        second();
        third();
    }

    abstract void first();

    abstract void second();

    final void third() {
        System.out.println("third");
    }
}

class Test1 extends Template {
    @Override
    void first() {
        System.out.println("first");
    }

    @Override
    void second() {
        System.out.println("second");
    }

}


6.

/*
 * 6. - 주관식 - OOP특징 - 다형성/인터페이스/동적바인딩 - 중
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는? 컴파일시 에러가 발생한다면 라인번호와 그 원인과 해결책을 설명하시오.
 * 
 * -생각
 *  r.test(s);
 *  test()의 매개변수는 Testable. Ship은 Testable를 구현하지 않았으므로 받지 못한다.
 * 
 * -결과
 * r.test(s); //error
 * 
 */


package java2_total;

public class OopEx6 {
    public static void main(String[] args) {
        Car c = new Car();
        Ship s = new Ship();
        Robot r = new Robot();
        r.test(c);
        r.test(s);
        r.test(r);
    }
}

class Elect {
    int value;
}

interface Testable {
}

class Car extends Elect implements Testable {
}

class Ship extends Elect {
}

class Robot extends Elect implements Testable {
    void test(Testable t) {
        if (t instanceof Elect) {
            System.out.println("test하다");
        }
    }

}


7.

/*
 * 7. - 주관식 - Java API - String class, StringBuffer, Wrapper - 중
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는?
 * 
 * -생각
 *  true
 *  true
 *  true
 *  false
 *  false
 * 
 *  찍음..
 * 
 * -결과
 *  true
 *  true
 *  false
 *  true
 *  false
 * 
 * -결과에 대한 생각
 * Integer, String같은 매퍼타입 변수는 equals메소드를 오버라이딩 하여 참조하고 잇는 메모리의 값을 비교.
 * StringBuffer의 equals는 Object의 메소드 그대로 이므로 참조변수의 해쉬값을 비교.
 * 
 * Date역시 equals메소드를 오버라이딩 하였다.
 * d2.equals(d3)경우는 값이 같이 때문에 true
 * d1.equals(d4)는 new Date()한 시간이 서로 다르기 때문에 false.  
 */

package java2_total;

import java.util.Date;
import java.util.GregorianCalendar;

public class ApiEx7 {
    public static void main(String[] args) {
        Integer i1 = new Integer(1);
        Integer i2 = new Integer(1);

        String s1 = new String("one");
        String s2 = new String("one");

        StringBuffer sf1 = new StringBuffer("one");
        StringBuffer sf2 = new StringBuffer("one");

        Date d1 = new Date();
        Date d2 = new GregorianCalendar(2011, 7, 15).getTime();
        Date d3 = new GregorianCalendar(2011, 7, 15).getTime();
        Date d4 = new Date();

        System.out.println(i1.equals(i2));
        System.out.println(s1.equals(s2));
        System.out.println(sf1.equals(sf2));
        System.out.println(d2.equals(d3));
        System.out.println(d1.equals(d4));
    }

}


'웹 & 안드로이드 > JAVA & JSP' 카테고리의 다른 글

대충 만들어본 로그 클래스  (0) 2014.05.15
프로그래밍의 디자인 패턴.  (0) 2013.12.12
자바 문법 문제 1  (0) 2013.12.04
OR 연산자의 연산.  (0) 2013.12.03
[JSP] 안보이는 주석  (1) 2013.11.19

댓글()