난이도 : 중급 다음 Java 프로그램의 결과를 예측합니다. 프로그램 1 : Java public class Calculator { int num = 100; public void calc(int num) { this.num = num * 10; } public void printNum() { System.out.println(num); } public static void main(String[] args) { Calculator obj = new Calculator(); obj.calc(2); obj.printNum(); } } 옵션: 가) 20 나) 100 다) 1000 라) 2 답 : 가) 20 설명 : 여기서 클래스 인스턴스 변수 이름(num)은 다음과 같습니다. 계산() 메소드 지역변수명(num). 따라서 클래스 인스턴스 변수를 참조하려면 계산() 방법 이것 키워드가 사용됩니다. 그래서 성명서에서 this.num = 숫자 * 10 에 값이 2인 메소드의 지역 변수를 나타내고 this.num 초기값이 100인 클래스 인스턴스 변수를 나타냅니다. 이제 인쇄번호() 클래스 인스턴스 변수와 이름이 같은 로컬 변수가 없으므로 직접 사용할 수 있습니다. 에 인스턴스 변수를 참조하려면 this.num 사용할 수 있습니다. 프로그램 2 : Java public class MyStuff { String name; MyStuff(String n) { name = n; } public static void main(String[] args) { MyStuff m1 = new MyStuff('guitar'); MyStuff m2 = new MyStuff('tv'); System.out.println(m2.equals(m1)); } @Override public boolean equals(Object obj) { MyStuff m = (MyStuff) obj; if (m.name != null) { return true; } return false; } } 옵션: A) 출력은 true이고 MyStuff는 Object.equals() 계약을 이행합니다. B) 출력은 false이고 MyStuff는 Object.equals() 계약을 이행합니다. C) 출력은 true이고 MyStuff는 Object.equals() 계약을 이행하지 않습니다. D) 출력은 false이고 MyStuff는 Object.equals() 계약을 이행하지 않습니다. 답변 : C) 출력은 true이고 MyStuff는 Object.equals() 계약을 이행하지 않습니다. 설명 : 처럼 같음(객체 obj) Object 클래스의 메소드는 동등 관계를 기반으로 두 객체를 비교합니다. 하지만 여기서는 객체가 null인지 아닌지 확인하는 것뿐입니다. 따라서 조건을 충족하지 않습니다. 객체.같음() 계약. 처럼 m1 null이 아닙니다. true가 인쇄됩니다. 프로그램 3: Java class Alpha { public String type = 'a '; public Alpha() { System.out.print('alpha '); } } public class Beta extends Alpha { public Beta() { System.out.print('beta '); } void go() { type = 'b '; System.out.print(this.type + super.type); } public static void main(String[] args) { new Beta().go(); } } 옵션: A) 알파 베타 b b B) 알파 베타 a b C) 베타 알파 b b D) 베타 알파 a b 답변 : A) 알파 베타 b b 설명 : 성명서 새로운 베타().go() 두 단계로 실행됩니다. 첫 번째 단계에서 베타 클래스 생성자가 호출됩니다. 에 인스턴스 멤버가 없습니다. 베타 수업. 그래서 지금 베타 클래스 생성자가 실행됩니다. 처럼 베타 수업이 연장됩니다 알파 수업 그래서 전화가 간다 알파 기본적으로 첫 번째 명령문인 클래스 생성자(컴파일러에 의해 입력됨)는 다음과 같습니다. 감독자() 에서 베타 클래스 생성자. 이제 하나의 인스턴스 변수( 유형 )는 다음에 존재합니다 알파 클래스를 사용하면 메모리를 얻을 수 있고 이제 알파 클래스 생성자가 실행된 후 return을 호출하여 베타 클래스 생성자 다음 문. 그래서 알파 베타 인쇄됩니다. 두 번째 단계 가다() 이 객체에 대해 메소드가 호출됩니다. 변수가 하나뿐이므로( 유형 ) 값이 다음과 같은 개체에서 에이 . 따라서 다음과 같이 변경됩니다. 비 두 번 인쇄되었습니다. 그만큼 슈퍼 키워드 여기는 아무 소용이 없습니다. 프로그램 4: Java public class Test { public static void main(String[] args) { StringBuilder s1 = new StringBuilder('Java'); String s2 = 'Love'; s1.append(s2); s1.substring(4); int foundAt = s1.indexOf(s2); System.out.println(foundAt); } } 옵션: 가) -1 나) 3 다) 4 라) 가 StringIndexOutOfBoundsException 런타임에 발생합니다. 답변 : 다) 4 설명 : 추가(문자열 문자열) 방법 str을 다음과 연결합니다. s1 . 그만큼 하위 문자열(int 인덱스) 메소드는 주어진 인덱스부터 끝까지 문자열을 반환합니다. 하지만 반환된 문자열을 저장할 문자열 변수가 없으므로 문자열은 삭제됩니다. 이제 indexOf(문자열 s2) 메소드는 첫 번째 발생 인덱스를 반환합니다. s2 . 따라서 4는 s1='JavaLove'로 인쇄됩니다. 프로그램 5: Java class Writer { public static void write() { System.out.println('Writing...'); } } class Author extends Writer { public static void write() { System.out.println('Writing book'); } } public class Programmer extends Author { public static void write() { System.out.println('Writing code'); } public static void main(String[] args) { Author a = new Programmer(); a.write(); } } 옵션: A) 집필 중... B) 책 집필 C) 코드 작성 D) 컴파일 실패 답변 : 나) 집필서 설명 : 정적 메서드는 재정의될 수 없으므로 어떤 클래스 개체가 생성되는지는 중요하지 않습니다. 처럼 에이 는 작가 참조 유형이므로 항상 작가 클래스 메소드가 호출됩니다. 제거하면 쓰다() 방법 작가 그럼 수업 작가 클래스 메소드는 다음과 같이 호출됩니다. 작가 수업이 연장됩니다 작가 수업.