logo

Java 프로그램의 출력 | 세트 7

난이도 : 중급 다음 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) 컴파일 실패 답변 : 나) 집필서 설명 : 정적 메서드는 재정의될 수 없으므로 어떤 클래스 개체가 생성되는지는 중요하지 않습니다. 처럼 에이작가 참조 유형이므로 항상 작가 클래스 메소드가 호출됩니다. 제거하면 쓰다() 방법 작가 그럼 수업 작가 클래스 메소드는 다음과 같이 호출됩니다. 작가 수업이 연장됩니다 작가 수업.