자바 문법 문제 2
웹 & 안드로이드/JAVA & JSP2013. 12. 9. 14:28
/*
* 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();
}
}
* 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("}");
}
}
* 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.
/*
* 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());
}
}
}
* 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;
}
* 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");
}
* 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하다");
}
}
* 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));
}
* 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 |
댓글()