You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 자바 객체 지향 연습 문제 on Google, you do not find the information you need! Here are the best content compiled and compiled by the Chewathai27.com/to team, along with other related topics such as: 자바 객체 지향 연습 문제 자바 객체지향 예제, 자바 연습문제 사이트, 자바의 정석 연습문제, c++ 객체지향 프로그래밍 예제
연습문제 D – 객체지향 프로그래밍 | CloudStudying
- Article author: cloudstudying.kr
- Reviews from users: 43704 Ratings
- Top rated: 5.0
- Lowest rated: 1
- Summary of article content: Articles about 연습문제 D – 객체지향 프로그래밍 | CloudStudying 이론 요약. 클라우드스터딩-자바-클래스와-객체-요약. 객체 지향 프로그래밍. OOP라고 한다. 프로그램을 객체의 … …
- Most searched keywords: Whether you are looking for 연습문제 D – 객체지향 프로그래밍 | CloudStudying 이론 요약. 클라우드스터딩-자바-클래스와-객체-요약. 객체 지향 프로그래밍. OOP라고 한다. 프로그램을 객체의 …
- Table of Contents:
[Java의 정석_연습문제 풀이] Chapter6 객체지향 프로그래밍1
- Article author: developer-ek.tistory.com
- Reviews from users: 29163 Ratings
- Top rated: 4.3
- Lowest rated: 1
- Summary of article content: Articles about [Java의 정석_연습문제 풀이] Chapter6 객체지향 프로그래밍1 [6-1] 다음과 같은 멤버변수를 갖는 SutdaCard클래스를 정의하시오. 타입 변수명 설명 int num 카드의 숫자. (1~10사이의 정수) boolean isKwang … …
- Most searched keywords: Whether you are looking for [Java의 정석_연습문제 풀이] Chapter6 객체지향 프로그래밍1 [6-1] 다음과 같은 멤버변수를 갖는 SutdaCard클래스를 정의하시오. 타입 변수명 설명 int num 카드의 숫자. (1~10사이의 정수) boolean isKwang … [6-1] 다음과 같은 멤버변수를 갖는 SutdaCard클래스를 정의하시오. 타입 변수명 설명 int num 카드의 숫자. (1~10사이의 정수) boolean isKwang 광(光)이면 true, 아니면 false 답: public class S..
- Table of Contents:
Continuous Challenge
[Java의 정석_연습문제 풀이] Chapter6 객체지향 프로그래밍1 본문티스토리툴바
04장 연습문제 – 점프 투 자바
- Article author: wikidocs.net
- Reviews from users: 8740 Ratings
- Top rated: 4.7
- Lowest rated: 1
- Summary of article content: Articles about 04장 연습문제 – 점프 투 자바 04장 연습문제. (연습문제 풀이 : https://wikocs.net/157712#04) … 이전글 : 04-05 for each 문; 다음글 : 05장 객체지향 프로그래밍. …
- Most searched keywords: Whether you are looking for 04장 연습문제 – 점프 투 자바 04장 연습문제. (연습문제 풀이 : https://wikocs.net/157712#04) … 이전글 : 04-05 for each 문; 다음글 : 05장 객체지향 프로그래밍. 온라인 책을 제작 공유하는 플랫폼 서비스
- Table of Contents:
Q1
Q2
Q3
Q4
Q5
coderbear’s log
- Article author: coderbear.tistory.com
- Reviews from users: 35862 Ratings
- Top rated: 4.1
- Lowest rated: 1
- Summary of article content: Articles about coderbear’s log [문제] 자바의 정석 Chapter 6 객체지향 프로그래밍 1 연습문제 및 해답정리 · # Chapter 6 : 객체지향 프로그래밍 1 · Q1. 다음과 같은 멤버변수를 갖는 SutdaCard클래스를 … …
- Most searched keywords: Whether you are looking for coderbear’s log [문제] 자바의 정석 Chapter 6 객체지향 프로그래밍 1 연습문제 및 해답정리 · # Chapter 6 : 객체지향 프로그래밍 1 · Q1. 다음과 같은 멤버변수를 갖는 SutdaCard클래스를 … # Chapter 6 : 객체지향 프로그래밍 1 Q1. 다음과 같은 멤버변수를 갖는 SutdaCard클래스를 정의하시오. 타입 변수명 설명 int num 카드의 숫자 (1~10 사이의 정수) boolean isKwang 광(光)이면 true 아니면..main
- Table of Contents:
JAVA 객체지향 프로그래밍 Ⅰ 연습문제
- Article author: velog.io
- Reviews from users: 44811 Ratings
- Top rated: 3.2
- Lowest rated: 1
- Summary of article content: Articles about JAVA 객체지향 프로그래밍 Ⅰ 연습문제 JAVA 객체지향 프로그래밍 Ⅰ 연습문제. amuse_on_01·2020년 12월 2일. 0. Java자바. 0. 초급자바. 목록 보기. 22/31. TV 컨트롤 프로그램을 만들어보시오 …
- Most searched keywords: Whether you are looking for JAVA 객체지향 프로그래밍 Ⅰ 연습문제 JAVA 객체지향 프로그래밍 Ⅰ 연습문제. amuse_on_01·2020년 12월 2일. 0. Java자바. 0. 초급자바. 목록 보기. 22/31. TV 컨트롤 프로그램을 만들어보시오 TV 컨트롤 프로그램을 만들어보시오
- Table of Contents:
[Java] 객체 간 협력, 교통수단 예제문제 / 2021.07.26
- Article author: cow-kite24.tistory.com
- Reviews from users: 7428 Ratings
- Top rated: 4.9
- Lowest rated: 1
- Summary of article content: Articles about [Java] 객체 간 협력, 교통수단 예제문제 / 2021.07.26 이 예제에서는 학생이 버스, 지하철, 택시를 타고 가는 것을 객체 지향 프로그래밍해보겠다. (1) 학생 클래스 구현하기 학생 클래스는 “이름”, “가진 돈” … …
- Most searched keywords: Whether you are looking for [Java] 객체 간 협력, 교통수단 예제문제 / 2021.07.26 이 예제에서는 학생이 버스, 지하철, 택시를 타고 가는 것을 객체 지향 프로그래밍해보겠다. (1) 학생 클래스 구현하기 학생 클래스는 “이름”, “가진 돈” … * 참고자료 : Do it! 자바 프로그래밍 입문 객체 지향 프로그램은 객체를 정의하고 객체 간 협력으로 만든다. 객체의 협력이 어떻게 이루어지는지 알아보자. <예제> 학생이 학교에 가기 위해 수행하는 여러 과정을..
- Table of Contents:
태그
‘자바자바 개념’ Related Articles
[쉽게 배우는 자바 프로그래밍] 4장 연습 문제(객체 지향) – JAVA[자바]
- Article author: tooo1.tistory.com
- Reviews from users: 45917 Ratings
- Top rated: 4.8
- Lowest rated: 1
- Summary of article content: Articles about [쉽게 배우는 자바 프로그래밍] 4장 연습 문제(객체 지향) – JAVA[자바] 대학생이 공부하다가 작성한 글입니다※ ※정답이 아닐 수도 있습니다※ ⊙ 문제 1 다음 중 틀린 것은? 필드는 초기화하지 않아도 된다. …
- Most searched keywords: Whether you are looking for [쉽게 배우는 자바 프로그래밍] 4장 연습 문제(객체 지향) – JAVA[자바] 대학생이 공부하다가 작성한 글입니다※ ※정답이 아닐 수도 있습니다※ ⊙ 문제 1 다음 중 틀린 것은? 필드는 초기화하지 않아도 된다. ※대학생이 공부하다가 작성한 글입니다※ ※정답이 아닐 수도 있습니다※ ⊙ 문제 1 다음 중 틀린 것은? 필드는 초기화하지 않아도 된다. 클래스에 생성자가 없어도 된다. 생성자는 일반적으로 필드를 초기화한..
- Table of Contents:
객체지향 프로그래밍 연습 문제
- Article author: tnrn211.tistory.com
- Reviews from users: 34497 Ratings
- Top rated: 4.5
- Lowest rated: 1
- Summary of article content: Articles about 객체지향 프로그래밍 연습 문제 객체지향 프로그래밍 연습 문제 · 문제 1 · 블로그 정보 · 코드를 통해 본 빵형의 실전자바의 다른 글 · 이 블로그 인기글. …
- Most searched keywords: Whether you are looking for 객체지향 프로그래밍 연습 문제 객체지향 프로그래밍 연습 문제 · 문제 1 · 블로그 정보 · 코드를 통해 본 빵형의 실전자바의 다른 글 · 이 블로그 인기글. 공대생 it 님의 블로그입니다.
- Table of Contents:
[Java] 객체지향(2) 연습 정리
- Article author: chaengstory.tistory.com
- Reviews from users: 10951 Ratings
- Top rated: 4.1
- Lowest rated: 1
- Summary of article content: Articles about [Java] 객체지향(2) 연습 정리 회원이 대여한 비디오 출력 예제(캡슐화). Veo.java public Veo { //veo 관련 멤버변수 private String num; private String title; … …
- Most searched keywords: Whether you are looking for [Java] 객체지향(2) 연습 정리 회원이 대여한 비디오 출력 예제(캡슐화). Veo.java public Veo { //veo 관련 멤버변수 private String num; private String title; … 회원이 대여한 비디오 출력 예제(캡슐화) Video.java public class Video { //video 관련 멤버변수 private String num; private String title; private String actor; //디폴트 생성자 public Video() {} public..
- Table of Contents:
태그
‘Java’ Related Articles
티스토리툴바
자바의 정석 7장 (19일차) – 7장 연습문제 (객체지향 2)
- Article author: timmer.tistory.com
- Reviews from users: 37305 Ratings
- Top rated: 4.7
- Lowest rated: 1
- Summary of article content: Articles about 자바의 정석 7장 (19일차) – 7장 연습문제 (객체지향 2) 섯다카드 클래스 자체를 array로 지정하여 선언; 지정한 후 if로 조건문을 선언하여 숫자 조건 추가; 숫자를 배정할 때 객체를 선언하여 그 멤버변수 … …
- Most searched keywords: Whether you are looking for 자바의 정석 7장 (19일차) – 7장 연습문제 (객체지향 2) 섯다카드 클래스 자체를 array로 지정하여 선언; 지정한 후 if로 조건문을 선언하여 숫자 조건 추가; 숫자를 배정할 때 객체를 선언하여 그 멤버변수 … 섯다 카드 한벌 생성 섯다카드 클래스 자체를 array로 지정하여 선언 지정한 후 if로 조건문을 선언하여 숫자 조건 추가 숫자를 배정할 때 객체를 선언하여 그 멤버변수에 숫자를 배정 위의 메인클래스에서 for문..시작일
2022 01 10 ~
System.CurrentTimeMillis() - Table of Contents:
자바의 정석 7장 (19일차) – 7장 연습문제 (객체지향 2)
티스토리툴바
See more articles in the same category here: Chewathai27.com/to/blog.
연습문제 D – 객체지향 프로그래밍
연습문제 D – 객체지향 프로그래밍
# 연습문제 D – 객체지향 프로그래밍 ## 09 클래스와 객체 — ### 이론 요약 ![클라우드스터딩-자바-클래스와-객체-요약](https://i.imgur.com/zi6B90d.png) #### 객체 지향 프로그래밍 – OOP라고 한다. 프로그램을 객체의 조립으로 만드는 방식이다. – OOP는 프로그램의 관리/재사용/확장에 좋다. #### 클래스 vs 객체 – 클래스는 객체를 만들기 위한 설계도이다. – 객체의 또 다른 표현으로는 인스턴스(instance)가 있다. – 때문에 클래스로 객체를 만드는 것을 “인스턴스화”라고 한다. #### 클래스 설계 및 구현 – 클래스는 필드(상태)와 메소드(동작)로 구성된다. – 클래스를 도식화한 것을 “클래스 다이어그램”이라 한다. – 클래스 다이어그램 보고 코드를 작성할 줄 알아야 한다. ### 실습 리뷰 정사각형 객체의 넓이를 구하는 예. “` public class SquareTest { public static void main(String[] args) { /* 1. 객체 생성 */ Square s = new Square(); /* 2. 필드 초기화(값 변경) */ s.length = 4; /* 3. 결과 출력 */ System.out.printf(“한 변의 길이가 %d인 정사각형의 넓이: %d”, s.length, s.area()); } } /* 4. 정사각형 클래스 구현 */ class Square { int length; // 길이 // 넓이 반환 int area() { return length * length; } } “` ## 10 생성자 — ### 이론 요약 ![클라우드스터딩-자바-생성자-요약](https://i.imgur.com/pMmmkPn.png) #### 생성자 – 생성자는 객체를 만드는 특별한 메소드다. – 생성자는 역할은, 객체 생성과 필드 초기화이다. #### 생성자 특징 – 생성자는, 호출과 정의로 나뉜다. – 생성자명은, 클래스명과 같아야 한다. – 리턴 타입은 표기하지 않는다. (void 아님) ### 실습 리뷰 마린과 메딕 객체의 상호 작용 “` public class Starcraft { public static void main(String[] args) { // 객체 생성 Marine marine = new Marine(“마린”, 80); Medic medic = new Medic(“메딕”, 60); // 마린 스팀팩 버프~ marine.stimpack(); // 메딕의 치료 -> 마린 medic.heal(marine); } } // 마린 클래스 class Marine { // 필드 String name; int hp; // 생성자 public Marine(String name, int hp) { this.name = name; this.hp = hp; } // 메소드 public void stimpack() { System.out.printf(“[%s]의 스팀팩! HP: %d -> “, name, hp); hp -= 10; System.out.printf(“%d
“,hp); } } // 메딕 클래스 class Medic { // 필드 String name; int hp; // 생성자 public Medic(String name, int hp) { this.name = name; this.hp = hp; } // 메소드 public void heal(Marine target) { System.out.printf(“[%s]의 치유! %s HP(%d -> “, name, target.name, target.hp); target.hp += 10; System.out.printf(“%d)
“, target.hp); } } “` ## 11 레퍼런스 변수와 static — ### 이론 요약 ![클라우드스터딩-자바-레퍼런스와-static-요약](https://i.imgur.com/8SjXUXO.png) #### 레퍼런스 변수 – 레퍼런스 변수란, 객체를 가리키는 변수다. – 기본형 변수는 값을 직접 저장하나, 레퍼런스 변수는 객체의 위치를 가리킨다. #### static 키워드 – static 키워드는 필드와 메소드에 적용될 수 있다. #### 클래스 변수 – 클래스 변수란, 클래스 영역에 존재한다. – 인스턴스 변수란, 객체 내부에 존재한다. #### 인스턴스 변수 – 클래스 메소드란, 주체 객체가 없이 수행되는 메소드다. – 인스턴스 메소드란, 주체 객체가 실행하는 메소드다. ### 실습 리뷰 두 점 사이의 거리 “` public class PointTest { public static void main(String[] args) { // 객체 생성 Point p1 = new Point(0, 0); Point p2 = new Point(3, 4); // 거리 계산 double dist = Point.distance(p1, p2); // 결과 출력 System.out.printf(“두 점 A%s, B%s 사이의 거리: %.2f”, p1.toStr(), p2.toStr(), dist); } } class Point { int x; int y; Point (int _x, int _y) { x = _x; y = _y; } String toStr() { return String.format(“(%d, %d)”, x, y); } static double distance(Point p, Point q) { double dX = p.x – q.x; // x좌표의 변화량 double dY = p.y – q.y; // y좌표의 변화량 return Math.sqrt((dX * dX) + (dY * dY)); } } “` ## 확인하기 —
연습문제 풀이] Chapter6 객체지향 프로그래밍1
[6-1] 다음과 같은 멤버변수를 갖는 SutdaCard클래스를 정의하시오.카드의 숫자. (1~10사이의 정수)
답:
[6-2] 문제 6-1에서 정의한 SutdaCard클래스에 두 개의 생성자와 info()를 추가해서 실행결과와 같은 결과를 얻도록 하시오.답 :
(1) int num; boolean isKwang;
public SutdaCard(){ this(1, true); //SutdaCard(1,true)를 호출한다. }
public SutdaCard(int num, boolean isKwang){ this.num = num; this.isKwang = isKwang; }
public String info(){ return num + (isKwang ? “K” : “”); }
[6-3] 다음과 같은 멤버변수를 갖는 Sutdent클래스를 정의하시오.타입 변수명 설명 String name 학생이름 int ban 반 int no 번호 int kor 국어점수 int eng 영어점수 int math 수학점수
답:
public class Exercise6_3 { String name; int ban; int no; int kor; int eng; int math; }
[6-4] 문제 6-3에서 정의한 Student클래스에 다음과 같이 정의된 두 개의 메서드 getTotal()과 getAverage()를 추가하시오.1. 메서드명 : getTotal 기능 : 국어(kor), 영어(eng), 수학(math)의 점수를 모두 더해서 반환한다. 반환타입 : int 매개변수 : 없음
2. 메서드명 : getAverage 기능 : 총점(국어점수+영어점수+수학점수)을 과목수로 나눈 평균을 구한다. 소수점 둘째자리에서 반올림할 것. 반환타입 : float 매개변수 : 없음
class Exercise6_4 { public static void main(String args[]) { Student s = new Student(); s.name = “홍길동”; s.ban = 1; s.no = 1; s.kor = 100; s.eng = 60; s.math = 76; System.out.println(“이름 :”+s.name); System.out.println(“총점 :”+s.getTotal()); System.out.println(“평균 :”+s.getAverage()); } } class Student { /* (1) 알맞은 코드를 넣어 완성하시오. */ } [실행결과] 이름 : 홍길동 총점 : 236 평균 : 78.7
답 : (1) String name; int ban; int no; int kor; int eng; int math;
public int getTotal() { return kor + eng + math; }
public float getAverage(){ return Math.round(getTotal() / 3f * 100)/100f; }
[6-5] 다음과 같은 실행결과를 얻도록 Student클래스에 생성자와 info()를 추가하시오.class Exercise6_5 { public static void main(String args[]) { Student s = new Student(“홍길동”,1,1,100,60,76); System.out.println(s.info()); } } class Student { /* 알맞은 코드를 넣어 완성하시오 (1) . */ } [실행결과] 홍길동,1,1,100,60,76,236,78.8
답 :
public Student(String name, int ban, int no, int kor, int eng, int math) { super(); this.name = name; this.ban = ban; this.no = no; this.kor = kor; this.eng = eng; this.math = math; }
public String info() { return name + “,” + ban + “,” + no + “,” + kor + “,” + eng + “,” + math+ “,” + getTotal() + “,” + getAverage(); }
[6-6] 두 점의 거리를 계산하는 getDistance()를 완성하시오. ([Hint] 제곱근 계산은 Math.sqrt(double a)를 사용하면 된다.)class Exercise6_6 { // 두 점 (x,y)와 (x1,y1)간의 거리를 구한다. static double getDistance(int x, int y, int x1, int y1) { /* (1)알맞은 코드를 넣어 완성하시오 . */ } public static void main(String args[]) { System.out.println(getDistance(1, 1, 2, 2)); } } [실행결과] 1.4142135623730951
답 :
(1) return Math.sqrt((x-x1)*(x-x1) + (y-y1)*(y-y1));
[6-7] 문제6-6에서 작성한 클래스메서드 getDistance()를 MyPoint클래스의 인스턴스메서드로 정의하시오.class MyPoint { int x; int y; MyPoint(int x, int y) { this.x = x; this.y = y; } /* * (1) 인스턴스메서드 getDistance를 작성하시오. */ } class Exercise6_7 { public static void main(String args[]) { MyPoint p = new MyPoint(1, 1); // p와 (2,2)의 거리를 구한다. System.out.println(p.getDistance(2, 2)); } } [실행결과] 1.4142135623730951
답 :
(1) public double getDistance(int x1, int y1) { return Math.sqrt((x-x1)*(x-x1) + (y-y1)*(y-y1)); }
static 메서드 vs. 인스턴스 메서드 (6-6문제) static 메서드의 경우에는 메서드 내에서 인스턴스 변수를 사용하지 않았다. 대신 매개변수(지역변수)로 작업에 필요한 값을 제공받아야했다. 그래서, 인스턴스와 관계가 없으므로(인스턴스변수를 사용하지 않았으니까) static메서드로 선언할 수 있는 것이다. (6-7문제) 그러나, 인스턴스 메서드는 인스턴스 변수 x, y를 사용해서 작업하므로 매개변수로 x1과 y1만을 제공받으면 된다. 인스턴스와 관계가 있으므로(인스턴스 변수를 사용했으니까) static을 붙일 수 없다.
[6-8] 다음의 코드에 정의된 변수들을 종류별로 구분해서 적으시오.class PlayingCard { int kind; int num;
static int width; static int height;
PlayingCard(int k, int n) { kind = k; num = n; }
public static void main(String args[]) { PlayingCard card = new PlayingCard(1,1); } }
답:
– 클래스변수 (static변수) : width, height
– 인스턴스변수 : kind, num
– 지역변수 : k, n, card, args
변수가 선언된 위치를 보면 변수의 종류를 알 수 있다. 클래스 블럭 내에 선언된 변수는 인스턴스 변수이고, static이 붙은 것은 static변수(클래스 변수)이다. 그리고 나머지는 모두 지역변수이다.
[6-9] 다음은 컴퓨터 게임의 병사(marine)를 클래스로 정의한 것이다. 이 클래스의 멤버 중에 static을 붙여야 하는 것은 어떤 것들이고 그 이유는 무엇인가? (단, 모든 병사의 공격력과 방어력은 같아야 한다.)class Marine { int x=0, y=0; //Marine의 위치좌표 (x,y) int hp = 60; //현재 체력 int weapon = 6; //공격력 int armor = 0; //방어력 void weaponUp() { weapon++; } void armorUp() { armor++; } void move(int x, int y) { this.x = x; this.y = y; } }
답 : weapon, armor ; 모든 병사의 공격력과 방어력이 같아야 하기 때문에 공유가 가능하도록 static을 붙여야 한다.
+ weaponUp(), armorUp() – static변수에 대한 작업을 하는 메서드이므로
[6-10] 다음 중 생성자에 대한 설명으로 옳지 않은 것은? (모두 고르시오)a. 모든 생성자의 이름은 클래스의 이름과 동일해야한다.
b. 생성자는 객체를 생성하기 위한 것이다.
→ 생성자가 객체를 생성할 때 사용되기는 하지만, 객체를 초기화할 목적으로 사용되는 것이다.
객체를 생성하는 것은 new연산자이다.
c. 클래스에는 생성자가 반드시 하나 이상 있어야 한다.
d. 생성자가 없는 클래스는 컴파일러가 기본 생성자를 추가한다.
e. 생성자는 오버로딩 할 수 없다.
답: b, e
[6-11] 다음 중 this에 대한 설명으로 맞지 않은 것은? (모두 고르시오)a. 객체 자신을 가리키는 참조변수이다.
b. 클래스 내에서라면 어디서든 사용할 수 있다.
→ 인스턴스메서드에서만 사용가능. 클래스 멤버(static이 붙은 변수나 메서드)에는 사용할 수 없다.
c. 지역변수와 인스턴스변수를 구별할 때 사용한다.
d. 클래스 메서드 내에서는 사용할 수 없다.
답: b
[6-12] 다음 중 오버로딩이 성립하기 위한 조건이 아닌 것은? (모두 고르시오)a. 메서드의 이름이 같아야 한다.
b. 매개변수의 개수나 타입이 달라야 한다.
c. 리턴타입이 달라야 한다.
→ 리턴타입은 오버로딩에 영향을 주지 못한다.
d. 매개변수의 이름이 달라야 한다.
답: c, d
오버로딩의 조건
1. 메서드 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. 3. 매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다.
[6-13] 다음 중 아래의 add메서드를 올바르게 오버로딩 한 것은? (모두 고르시오)long add(int a, int b) { return a+b; }
a. long add(int x, int y) { return x+y; }
b. long add(long a, long b) { return a+b; }
c. int add(byte a, byte b) { return a+b; }
d. int add(long a, int b) { return (int)(a+b); }
답: b, c, d
[6-14] 다음 중 초기화에 대한 설명으로 옳지 않은 것은? (모두 고르시오)a. 멤버변수는 자동 초기화되므로 초기화하지 않고도 값을 참고할 수 있다.
b. 지역변수는 사용하기 전에 반드시 초기화해야 한다.
c. 초기화 블럭보다 생성자가 먼저 수행된다.
→ 초기화 블럭이 먼저 수행된다.
d. 명시적 초기화를 제일 우선적으로 고려해야 한다.
e. 클래스변수보다 인스턴스변수가 먼저 초기화된다.
→ 클래스변수가 먼저 초기화된다.
답 : c, e
클래스 변수는 클래스가 처음 메모리에 로딩될 때, 자동 초기화되므로 인스턴스 변수보다 먼저 초기화된다. 그리고 생성자는 초기화 블럭이 수행된 다음에 수행된다.
[6-15] 다음 중 인스턴스변수의 초기화 순서가 올바른 것은?a. 기본값-명시적초기화-초기화블럭-생성자
b. 기본값-명시적초기화-생성자-초기화블럭
c. 기본값-초기화블럭-명시적초기화-생성자
d. 기본값-초기화블럭-생성자-명시적초기화
답 : a
변수의 초기화 순서 클래스변수의 초기화시점 : 클래스가 처음 로딩될 때 단 한번 초기화된다. 인스턴스변수의 초기화시점 : 인스턴스가 생성될 때마다 각 인스턴스별로 초기화가 이루어진다.
클래스변수의 초기화순서 : 기본값 -> 명시적초기화 -> 클래스 초기화 블럭 인스턴스변수의 초기화순서 : 기본값 -> 명시적초기화 -> 인스턴스 초기화 블럭 -> 생성자
[6-16] 다음 중 지역변수에 대한 설명으로 옳지 않은 것은? (모두 고르시오)a. 자동 초기화되므로 별도의 초기화가 필요없다.
→ 지역변수는 자동 초기화 되지 않기 때문에 사용하기 전에 반드시 적절한 값으로 초기화를 해주어야한다.
b. 지역변수가 선언된 메서드가 종료되면 지역변수도 함께 소멸된다.
c. 메서드의 매개변수로 선언된 변수도 지역변수이다.
d. 클래스변수나 인스턴스변수보다 메모리 부담이 적다.
→ 지역변수는 자신이 선언된 블럭이나 메서드가 종료되면 소멸되므로 메모리 부담이 적다.
e. 힙(heap)영역에 생성되며 가비지 컬렉터에 의해 소멸된다.
→ 힙영역에는 인스턴스(인스턴스변수)가 생성되는 영역이며, 지역변수는 호출스택(call stack)에 생성된다.
답 : a, e
[6-17] 호출스택이 다음과 같은 상황일 때 옳지 않은 설명은? (모두 고르시오)a. 제일 먼저 호출스택에 저장된 것은 main메서드이다.
b. println메서드를 제외한 나머지 메서드들은 모두 종료된 상태이다.
→ 호출스택의 제일 위에 있는 메서드가 현재 수행중인 메서드이며, 호출스택 안의 나머지 메서드들은 대기상태이다.
c. method2메서드를 호출한 것은 main메서드이다.
d. println메서드가 종료되면 method1메서드가 수행을 재개한다.
e. main-method2-method1-println의 순서로 호출되었다.
f. 현재 실행중인 메서드는 println뿐이다.
답: b
[6-18] 다음의 코드를 컴파일하면 에러가 발생한다. 컴파일 에러가 발생하는 라인과 그 이유를 설명하시오.class MemberCall { int iv = 10; static int cv = 20;
int iv2 = cv; static int cv2 = iv; // 라인 A
static void staticMethod1() { System.out.println(cv); System.out.println(iv); // 라인 B }
void instanceMethod1() { System.out.println(cv); System.out.println(iv); //라인 C } static void staticMethod2() { staticMethod1(); instanceMethod1(); //라인 D } void instanceMethod2() { staticMethod1(); //라인 E instanceMethod1(); } }
답 : 라인 A, 라인 B, 라인 D
라인A – static 변수의 초기화에 인스턴스변수를 사용할 수 없다.
꼭 사용해야한다면, 객체를 생성해야한다.
라인B – static메서드에서는 인스턴스변수를 사용할 수 없다.
라인D – static메서드에서는 인스턴스메서드를 사용할 수 없다.
[6-19] 다음 코드의 실행 결과를 예측하여 적으시오.class Exercise6_19 { public static void change(String str) { str += “456”; }
public static void main(String[] args) { String str = “ABC123”; System.out.println(str); change(str); System.out.println(“After change:” + str); } }
답 :
ABC123 After change: ABC123
해설 : str은 change메서드의 지역변수이므로 change메서드가 종료되면 str역시 메모리에서 제거된다.
[6-20] 다음과 같이 정의된 메서드를 작성하고 테스트하시오. ([주의] Math.random()을 사용하는 경우 실행결과와 다를 수 있음.)메서드명 : shuffle 기능 : 주어진 배열에 담긴 값의 위치를 바꾸는 작업을 반복하여 뒤섞이게 한다. 처리한 배열을 반환한다. 반환타입 : int[] 매개변수 : int[] arr – 정수값이 담긴 배열
class Exercise6_20 { /* * (1) shuffle 메서드를 작성하시오. * */ public static void main(String[] args) { int[] original = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; System.out.println(java.util.Arrays.toString(original));
int[] result = shuffle(original); System.out.println(java.util.Arrays.toString(result)); } }
답:
public static int[] shuffle(int[] arr) {
for (int i = 0; i < arr.length; i++) { int j = (int)Math.random() % arr.length; int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } return arr; } [6-21] Tv클래스를 주어진 로직대로 완성하시오. 완성한 후에 실행해서 주어진 실행결과와 일치하는지 확인하라. ([참고] 코드를 단순히 하기 위해서 유효성검사는 로직에서 제외했다.) class MyTv { boolean isPowerOn; int channel; int volume; final int MAX_VOLUME = 100; final int MIN_VOLUME = 0; final int MAX_CHANNEL = 100; final int MIN_CHANNEL = 1; void turnOnOff() { // (1) isPowerOn의 값이 true면 false로, false면 true로 바꾼다. } void volumeUp() { // (2) volume의 값이 MAX_VOLUME보다 작을 때만 값을 1 증가시킨다. } void volumeDown() { // (3) volume의 값이 MIN_VOLUME보다 클 때만 값을 1 감소시킨다. } void channelUp() { // (4) channel의 값을 1 증가시킨다. // 만일 channel이 MAX_CHANNEL이면 , channel의 MIN_CHANNEL 값을 로 바꾼다. } void channelDown() { // (5) channel의 값을 1 감소시킨다 . // 만일 channel이 MIN_CHANNEL이면, channel의 값을 MAX_CHANNEL 로 바꾼다. } } class Exercise6_21 { public static void main(String args[]) { MyTv t = new MyTv(); t.channel = 100; t.volume = 0; System.out.println("CH:" + t.channel + ", VOL:" + t.volume); t.channelDown(); t.volumeDown(); System.out.println("CH:" + t.channel + ", VOL:" + t.volume); t.volume = 100; t.channelUp(); t.volumeUp(); System.out.println("CH:" + t.channel + ", VOL:" + t.volume); } } [실행결과] CH: 100, VOL: 0 CH: 99, VOL: 0 CH: 100, VOL: 100 답 : (1) isPowerOn = !isPowerOn; (2) if(volume < MAX_VOLUME) volume++; (3) if(volume > MIN_VOLUME) volume–; (4) if(channel == MAX_CHANNEL) channel = MIN_CHANNEL; else channel++; (5) if(channel == MIN_CHANNEL) channel = MAX_CHANNEL; else channel–;
[6-22] 다음과 같이 정의된 메서드를 작성하고 테스트하시오.메서드명 : isNumber 기능 : 주어진 문자열이 모두 숫자로만 이루어져있는지 확인한다. 모두 숫자로만 이루어져있으면 true를 반환하고, 그렇지 않으면 false를 반환한다. 만일 주어진 문자열이 null이거나 빈문자열 “”이라면 false를 반환한다. 반환타입 : boolean 매개변수 : String str – 검사할 문자열
([Hint] String클래스의 charAt(int i)메서드를 사용하면 문자열의 i번째 위치한 문자를 얻을 수 있다.)
class Exercise6_22 { /* (1) isNumber 메서드를 작성하시오. */ public static void main(String[] args) { String str = “123”; System.out.println(str + ” 는 숫자입니까? ” + isNumber(str)); str = “1234o”; System.out.println(str + ” 는 숫자입니까? ” + isNumber(str)); } }
[실행결과] 123는 숫자입니까? true 1234o는 숫자입니까? false답 :
public static boolean isNumber(String str){ boolean ret = true; for(int i =0;i < str.length(); i++){ if(str.charAt(i)>=’0′ && str.charAt(i)<='9') continue; else { ret = false; break; } } return ret; } [6-23] 다음과 같이 정의된 메서드를 작성하고 테스트하시오. 메서드명 : max 기능 : 주어진 int형 배열의 값 중에서 제일 큰 값을 반환한다. 만일 주어진 배열이 null이거나 크기가 0인 경우, -999999를 반환한다. 반환타입 : int 매개변수 : int[] arr - 최대값을 구할 배열 class Exercise6_23 { /* (1) max 메서드를 작성하시오 . */ public static void main(String[] args) { int[] data = {3,2,9,4,7}; System.out.println(java.util.Arrays.toString(data)); System.out.println("최대값 :"+max(data)); 최대값 System.out.println(" :"+max(null)); System.out.println("최대값 :"+max(new int[]{})); // 크기가 0인 배열 } } } [실행결과] [3, 2, 9, 4, 7] 최대값: 9 최대값: -999999 최대값: -999999 답 : public static int max(int[] arr){ if(arr == null || arr.length == 0){ return -999999; } int maxVal = arr[0]; for(int i = 1; i < arr.length; i++){ maxVal = (maxVal >= arr[i]) ? maxVal : arr[i]; } return maxVal; }
[6-24] 다음과 같이 정의된 메서드를 작성하고 테스트하시오.
04장 연습문제
(연습문제 풀이 : https://wikidocs.net/157712#04)
Q1
다음 코드의 출력 결과는 무엇일까? (눈으로 해석하고 풀어보자.)
public class Sample { public static void main(String[] args) { String a = “write once, run anywhere”; if (a.contains(“wife”)) { System.out.println(“wife”); } else if (a.contains(“once”) && !a.contains(“run”)) { System.out.println(“once”); } else if (!a.contains(“everywhere”)) { System.out.println(“everywhere”); } else if (a.contains(“anywhere”)) { System.out.println(“anywhere”); } else { System.out.println(“none”); } } }
Q2
while문을 사용해 1부터 1000까지의 자연수 중 3의 배수의 합을 구해 보자.
Q3
while문 또는 for 문을 사용하여 다음과 같이 별( * )을 표시하는 프로그램을 작성해 보자.
* ** *** **** *****
Q4
for문을 사용해 1부터 100까지의 숫자를 출력해 보자.
Q5
A 학급에 총 10명의 학생이 있다. 이 학생들의 중간고사 점수는 다음과 같다.
int[] marks = {70, 60, 55, 75, 95, 90, 80, 80, 85, 100};
for each 문을 사용하여 A 학급의 평균 점수를 구해 보자.
So you have finished reading the 자바 객체 지향 연습 문제 topic article, if you find this article useful, please share it. Thank you very much. See more: 자바 객체지향 예제, 자바 연습문제 사이트, 자바의 정석 연습문제, c++ 객체지향 프로그래밍 예제