20년 1회 4번 출력 결과
class Main {
static int[] arr() {
int a[]=new int[4];
int b = a.length;
for(int i =0; i<b;i++)
a[i]=i;
return a;
}
public static void main(String args[]) {
int a[]=arr();
for(int i =0; i< a.length; i++)
System.out.print(a[i]+" ");
}
}
정답: 1 2 3 4
20년 2회 5번 (가)에 들어갈 알맞은 답을 쓰시오
class Parent{
void show(){System.out.println("parent");}
}
class Child extends Parent{
void show() {System.out.println("child");}
}
class Main {
public static void main(String args[]) {
Parent pa=(가) Child();
pa.show();
}
}
정답: new
20년 2회 19번 출력 결과
class A{
private int a;
public A(int a){
this.a = a;
}
public void display(){
System.out.println("a=" + a);
}
}
class B extends A {
public B(int a){
super(a);
super.display();
}
}
public class Main {
public static void main(String[] args){
B obj = new B(10);
}
}
정답:a=10
20년 3회 2번 출력 결과
public class Main{
public static void main(String[] args){
int i=0, c=0;
while (i<10){
i++;
c*=i;
}
System.out.println(c);
}
}
정답:0
풀이: 0을 곱하니까 c는 0
20년 3회 15번 출력 결과
abstract class Vehicle{
String name;
abstract public String getName(String val);
public String getName(){
return "Vehicle name:" + name;
}
}
class Car extends Vehicle{
private String name;
public Car(String val){
name=super.name=val;
}
public String getName(String val){
return "Car name : " + val;
}
public String getName(byte val[]){
return "Car name : " + val;
}
}
public class Main {
public static void main(String[] args){
Vehicle obj = new Car("Spark");
System.out.print(obj.getName());
}
}
정답: Vehicle name : Spark
풀이:1.Vehicle obj = new Car("Spark");
- Car 클래스 호출 (Vehicle을 확장하고 있는 클래스)
2.Car extend Vehicle
- public Car(String val){ getName(val); }
- Car 클래스 안에 Car 메소드에 val(=Spark)값이 들어감
- setName은 부모 클래스인 Vehicle 클래스에 있는 메소드인데 extends Vehicle 때문에 Car 클래스에서 부모 클래스의 메소드를 그대로 쓸 수 있음
3. Vehicle
3-1. public void getName(String val){ name = val; }
- 2번에서 setName(val) 호출할 때 Vehicle의 setName 수행되면서 Vehicle 에서만 쓸 수 있는 private String 객체인 name 값에 val(=Spark)가 담겨짐
- private String name (name = Spark)
여기까지가 Vehicle obj = new Car("Spark"); 실행했을 때의 결과임
4. System.out.println(obj.getName());
- obj는 Car 클래스이다
- Car 클래스 내에는 getName() 이라는, ()를 매개변수로 받는 메소드는 없고, 부모 클래스에 해당 메소드가 존재하므로, “부모 클래스(Vehicle)”에 있는 getName()이 실행된다.
4-1. public String getName(){ return "vehicle name:" + name; }
- name : 위에 3-1에서 private String name에 Spark가 들어가 있다
==> 반환값은 “vehicle name:” + name(=Spark);가 된다5. 결과
- System.out.print(obj.getName());
- vehicle name:Spark
** 추가로, 부모 클래스 Vehicle에 abstract public String getName(String val); 이 있는데,
- 부모 클래스는 추상 클래스이다.
- 추상 클래스를 상속받는 자식 클래스는 부모 추상 클래스에 있는 추상 메소드를 반드시 구현해야 한다.
20년 3회 17번 출력 결과
public class Main {
public static void main(String[] args){
int i=0, sum=0;
while (i<10){
i++;
if(i%2 ==1)
continue;
sum += i;
}
System.out.println(sum);
}
}
정답:30
풀이: 2+4+6+8+10
i=9일 때 i++ 하고 sum에 10을 더함
20년 4회 7번 다음은 변수 n에 저장된 10진수를 2진수로 변환하여 출력하는 java프로그램이다. 프로그램을 분석하여 ( 1번 )( 2번 )빈칸에 알맞은 답을 쓰시오
class Main {
public static void main (String[] args) {
int[]a = new int[8];
int i=0; int n=10;
while ( 1번 ) {
a[i++] = ( 2번 );
n /= 2;
}
for(i=7; i>=0; i--){
System.out.print(a[i]);
}
}
정답:(1) n/2 > 0 (2) n%2
풀이:
20년 4회 8번 가, 나의 답을 쓰시오.
public class Main {
public static void main(String[] args) {
int ary[][] = new int[가][나];
for(int i = 0; i <3; i++){
for(int j=0; j < 5; j++){
ary[i][j] = j*3+(i+1);
System.out.print(ary[i][j]+"");
}
System.out.println();
}
}
}
정답: (가) 3(나) 5
풀이:
20년 4회 19번 출력 결과
class Parent{
public int compute(int num){
if(num <=1) return num;
return compute(num-1) + compute(num-2);
}
}
class Child extends parent {
public int compute(int num){
if(num<=1) return num;
return compute(num-1) + compute(num-3);
}
}
class Main{
public static void main (String[] args){
Parent obj = new Child();
System.out.print(obj.compute(4));
}
}
정답: 1
풀이: compute(4-3)+compute(4-1)= 1+ compute(2)+ compute(0) = 1+ 1+ (-1) + 0
21년 1회 7번 출력 결과
public class Main{
public static void main(String[] args){
int arr[][] = new int[][]{{45,50,75},{89}};
System.out.println(arr[0].length);
System.out.println(arr[1].length);
System.out.println(arr[0][0]);
System.out.println(arr[0][1]);
System.out.println(arr[1][0]);
}
}
정답:
2
1
45
50
89
풀이 : arr[0].length : 0번째 행의 길이, arr[1]: 1번째 행의 길이
21년 1회 17번 출력 결과
public class Main {
public static void main(String[] args){
int i, j;
for(j=0, i=0; i<=5; i++){
j+=i;
System.out.print(i);
if(i==5){
System.out.print("=");
System.out.print(j);
} else{
System.out.print("+");
}
}
}
}
정답: 0+1+2+3+4+5=15
21년 2회 17번 (가)에 알맞은 예약어를 쓰시오
public class Main {
public static void main(String[] args){
System.out.print(Main.check(1));
}
(가) String check (int num) {
return (num >= 0) ? "positive" : "negative";
}
}
정답:static
풀이:
public static 으로 써도 상관없으나 접근제한자는 생략해도 무방 상관없음 없을경우 defaultstatic 변수 및 메소드 특징
- 인스턴스(객체를 생성하지 않고도 사용할 수 있다.
- 클래스가 메모리에 로드될때, 스태틱 메모리 영역에 생성된다.
- static 메소드 안에서는 static 멤버들만 사용할 수 있고, 인스턴스 멤버는 사용할 수 없다.
21년 2회 19번 출력 결과
public class ovr1 {
public static void main(String[] args){
ovr1 a1 = new ovr1();
ovr2 a2 = new ovr2();
System.out.println(a1.sun(3,2) + a2.sun(3,2));
}
int sun(int x, int y){
return x + y;
}
}
class ovr2 extends ovr1 {
int sun(int x, int y){
return x - y + super.sun(x,y);
}
}
정답: 11
풀이:
문제오류public static void main(String[] args) {
ovr a1 = new ovr1();
ovr a2 = new ovr2();
System.out.println(a1.sun(3,2) + a2.sun(3,2));
}
public class ovr1 extend ovr {
int sun(int x, int y) { return x + y; }
}
public class ovr2 extends ovr1 {
int sun(int x, int y) { return x - y + super.sun(x,y);// 부모클래스의 sun 메소드 호출 }
}
5+1+5
21년 3회 1번 출력 결과
class Connection {
private static Connection _inst = null;
private int count = 0;
public static Connection get() {
if(_inst == null) {
_inst = new Connection();
return _inst;
}
return _inst;
}
public void count() { count ++; }
public int getCount() { return count; }
}
public class Main {
public static void main(String[] args) {
Connection conn1 = Connection.get();
conn1.count();
Connection conn2 = Connection.get();
conn2.count();
Connection conn3 = Connection.get();
conn3.count();
System.out.print(conn1.getCount());
}
}
정답: 3
풀이: 싱글턴 패턴: 객체의 인스턴스가 오직 한개만 생성되는 패턴
Connection conn1 = Connection.get(); //인스턴스(객체) 생성
conn1.count(); //count++
Connection conn2 = Connection.get(); 인스턴스 null이 아니므로 생성x
conn2.count(); //count++
Connection conn3 = Connection.get(); // 인스턴스 null이 아니므로 생성x
conn3.count(); //count++
21년 3회 11번 출력 결과
public class Main{
public static void main(String[] args) {
int a = 3, b = 4, c = 3, d = 5;
if((a == 2 | a == c) & !(c > d) & (1 == b ^ c != d)) {
a = b + c;
if(7 == b ^ c != a) {
System.out.println(a);
} else {
System.out.println(b);
}
} else {
a = c + d;
if(7 == c ^ d != a) {
System.out.println(a);
} else {
System.out.println(d);
}
}
}
}
정답: 7
풀이:
연산12312자 우선순위
not 연산자(!) > 사칙연산(+,*,/.-) > 관계 연산자(==, >=, !=) > 비트 연산자(&, ^, |) > 논리 연산자(&&, ||)
비트연산자
|(OR연산자) 피연산자 중 한 쪽의 값이 1(true)이면, 1을 결과로 얻는다. 그 외에는 0(false)을 얻는다.
&(AND연산자) 피연산자 양 쪽의 값이 모두 1이어야만 1을 결과로 얻는다. 그 외에는 0을 얻는다.
^(XOR연산자) 피연산자의 값이 서로 다를 때만 1을 결과로 얻는다. 같을 때는 0을 얻는다.
'Daily > TIL' 카테고리의 다른 글
| 20240331 정처기 java 기출 공부 (0) | 2024.03.31 |
|---|---|
| 20240330 정처기 java 22년도 기출 공부 (0) | 2024.03.30 |
| 20240317 정처기 SQL 기출 공부 (0) | 2024.03.17 |
| 20240304 정처기 c언어 기출 공부 (0) | 2024.03.04 |
| 20240303 정처기 공부 c언어 기출 (0) | 2024.03.03 |