본문 바로가기

분류 전체보기201

[chapter 9] 확인 문제 1. 중첩 멤버 클래스에 대한 설명으로 틀린 것은 무엇입니까? 4번. 정적 멤버 클래스는 바깥 클래스의 객체가 없어도 사용할 수 있기 때문에, 객체가 반드시 있어야 사용할 수 있는 바깥 클래스의 필드를 정적 멤버 클래스 내부에서 사용할 수 없다. 2. 로컬 클래스에 대한 설명으로 틀린 것은 무엇입니까? 3번. 로컬 클래스는 static 키워드를 붙일 수 없다. 3. 익명 객체에 대한 설명으로 틀린 것은 무엇입니까? 3번. 익명 객체는 생성자를 선언할 수 없다. 4. 다음과 같이 Car 클래스 내부에 Tire와 Engine 클래스가 멤버로 선언되어 있습니다. CarExample 클래스에서 Tire와 Engine 객체를 생성하는 코드를 작성해보세요. public class Car { class Tire{} .. 2023. 2. 6.
[중첩 인터페이스] 익명 객체(익명 자식 객체, 익명 구현 객체) 9.6 중첩 인터페이스 중첩 인터페이스는 클래스의 멤버로 선언된 인터페이스를 말한다. 인터페이스를 클래스 내부에 선언하는 이유는 해당 클래스와 긴밀한 관계를 맺는 구현 객체를 만들기 위해서이다. 인터페이스도 접근 제한자와 static과 관련하여 중첩 클래스와 동일하다. 중첩 인터페이스는 안드로이드와 같은 UI 프로그램에서 이벤트를 처리할 목적으로 많이 활용된다. 예를 들어 버튼을 클릭했을 때 이벤트를 처리할 객체는 중첩 인터페이스를 구현해서 만든다. package ch09.sec06.exam03; public class Button { // 정적 중첩 인터페이스 public static interface ClickListener { // 추상 메소드 void onClick(); } // 필드 privat.. 2023. 2. 5.
[중첩 클래스] 9.1 중첩 클래스 중첩 클래스란 클래스 내부에 선언한 클래스를 말한다. 객체 지향 프로그램에서는 클래스 간에 서로 긴밀한 관계를 맺고 상호작용한다. 클래스가 여러 클래스와 관계를 맺는 경우에는 독립적으로 선언하는 것이 좋으나, 특정 클래스만 관계를 맺을 경우에는 중첩 클래스로 선언하는 것이 유지보수에 도움이 되는 경우가 많다. 장점 1. 클래스의 멤버를 쉽게 사용할 수 있다. 2. 외부에는 중첩 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다. 3. 유지보수에 유용할 경우가 있다. 중첩 클래스는 선언하는 위치에 따라 두 가지로 분류된다. 클래스 멤버로서 선언되는 중첩 클래스를 멤버 클래스라고 하고, 메소드 내부에서 선언되는 중첩 클래스를 로컬 클래스라고 한다. 중첩 클래스도 하나의 클래스이기 때.. 2023. 2. 5.
[데이터 타입] List, Tuple, Set, Dictionary, 문자열 List 순서 존재 index 존재 mutable(변경 가능) 인덱스 지정하여 값 변경 가능 list_ = [1, 2, 3, 4, 5] list_[0] = 7 print(list_) # 출력 [7, 2, 3, 4, 5] Tuple 순서 존재 immutable(변경 불가능) Tuple 활용 # a와 b의 값을 교환하세요. a,b = 100, 200 # usally temp = a a = b b = temp print("a =", a, "b =", b) # 출력 a = 200 b = 100 # tuple a,b = b,a print("a =", a, "b =", b) # 출력 a = 200 b = 100 Dictionary 순서 없음 키와 값으로 구성 중복 불가 * List의 in과 Dic의 in은 기능면에.. 2023. 2. 1.
[백준] 3052번 나머지 💡 문제 https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 💡 정답 array = [] value = [] cnt = 0 for _ in range(10): array.append(int(input())) for i in range(10): va = array[i] % 42 value.append(va) value = set(value) print(len(value)) #숏코딩 value = {int(input())%42 for _ in range(10)} print(len(value)) 💡 풀이 문제에서 서로 다른.. 2023. 2. 1.
[Generator] Generator란? iterator를 생성해주는 함수 특징 iterable한 순서가 지정됨 순서의 다음 값은 필요에 따라 계산된다.(느슨하게 평가됨) 함수의 내부 로컬 변수를 통해 내부상태가 유지된다. 무한한 순서가 있는 객체를 모델링할 수 있다.(데이터 스트림) 자연스러운 스트림 처리를 위 파이프라인으로 구성할 수 있다. (JAVA에서 파일 스트림 처리시에 특정 바이트단위로 반복하는 것을 말하는 것 같다.) Generator 사용해보기 >>> def test_generator(): ... yield 1 ... yield 2 ... yield 3 ... >>> gen = test_generator() >>> type(gen) >>> next(gen) 1 >>> next(gen) 2 >>> next(ge.. 2023. 2. 1.
[chapter5] 확인 문제 1. 참조 타입에 대한 설명으로 틀린 것은 무엇입니까? 4번 참조 타입은 null 값으로 초기화할 수 있다. 2. 자바에서 메모리 사용에 대한 설명으로 틀린 것은 무엇입니까? 3번 참조되지 않은 객체는 프로그램에서 직접 소멸 코드를 작성하는 것이 좋다. -> 직접 작성 안함(garbage collector) 3. String 타입에 대한 설명으로 틀린 것은 무엇입니까? 2번 문자열 비교는 equals()이고 ==는 객체의 번지를 비교하는 것이다. 4. 배열을 생성하는 방법으로 틀린 것은 무엇입니까? 2번 변수를 생성하는 시점과 배열 값을 생성하는 시점이 다르면 안됨. 올바른 선언은 예를 들어 int[ ] array = new int[ ] {1,2,3}이다. 5.배열의 기본 초기값에 대한 설명으로 틀린 것.. 2023. 1. 30.
[인터페이스] 8.1 인터페이스 역할 인터페이스의 사전적 의미 : 두 장치를 연결하는 접속기 인터페이스 사용 이유 : 만약 인터페이스가 없이 객체 A가 객체 B를 직접 사용한다면 객체 A의 소스 코드를 객체 B에서 C로 변경하는 작업이 추가로 필요할 것이다. 객체 A가 인터페이스의 메소드를 호출하면 실제로 실행되는 것은 인터페이스 뒤편의 객체 B 또는 객체 C의 메소드이다. 만약 객체 B의 메소드 실행 결과와 객체 C의 메소드 실행 결과가 다르다면, 객체 A는 객체 교체로 인해 다른 결과를 얻게 된다. 이 특징으로 인해 인터페이스는 다형성 구현에 주된 기술로 이용된다. 상속을 이용해서 다형성을 구현할 수도 있지만, 인터페이스를 이용해서 다형성을 구현하는 경우가 더 많다. 8.2 인터페이스와 구현 클래스 선언 인터페이스.. 2023. 1. 30.
[상속] 7.1 상속 개념 부모 클래스의 필드와 메소드를 자식 클래스에게 물려주는 행위를 말한다. 장점 1. 코드를 재사용하여 중복 코드를 줄여 개발 시간을 단축시킨다. 2. 클래스의 수정 최소화 public class A { int field1; void method1() {} } public class B extends A { String field2; void method2() {} } 7.2 클래스 상속 다른 언어와는 달리 자바는 다중 상속을 허용하지 않는다. 즉, 여러 개의 부모 클래스를 상속할 수 없다. 단 하나의 부모 클래스만이 와야 한다. 7.3 부모 생성자 호출 자식 객체를 생성하면 부모 객체가 먼저 생성된 다음에 자식 객체가 생성된다. 다음 코드는 SmartPhone 객체만 생성되는 것처럼 보이.. 2023. 1. 28.
[백준] 8958번 OX퀴즈 💡 문제 https://www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net 💡 정답 n = int(input()) for _ in range(n): s = input() result = 0 final = 0 for i in s: if i == "O" : result += 1 #1번 final += result #2번 else: result = 0 print(final) 💡 풀이 s를 n번 입력하기 위해 for문 안에 넣어주고, result와 .. 2023. 1. 28.
[클래스] 인스턴스 멤버, 정적 멤버, final, package, Getter Setter, 싱글톤 패턴 6.9 인스턴스 멤버 필드와 메소드는 선언 방법에 따라 인스턴스 멤버와 정적 멤버로 분류할 수 있다. 구분 설명 인스턴스 멤버 객체에 소속된 멤버 (객체를 생성해야만 사용할 수 있는 멤버) 정적 멤버 클래스에 고정된 멤버 (객체 없이도 사용할 수 있는 멤버) 인스턴스 멤버 선언 및 사용 public class Car { //인스턴스 필드 선언 int gas; //인스턴스 메소드 선언 void seetSpeed(int speed) { } } gas 필드와 setSpeed() 메소드는 인스턴스 멤버이기 때문에 외부 클래스에서 사용하기 위해서는 Car 객체를 먼저 생성하고 참조 변수로 접근해서 사용해야 한다. gas필드는 객체마다 따로 존재하며, setSpeed() 메소드는 각 객체마다 존재하지 않고 메소드 .. 2023. 1. 27.
[클래스] 6.3 클래스 선언 클래스 이름을 정했다면 "클래스이름.java"로 소스 파일을 생성해야 한다. 소스 파일 이름도 대소문자를 구분하므로 반드시 클래스 이름과 대소문자가 같도록 해야 한다. 소스 파일을 생성했다면 소스 파일을 열고 다음과 같이 클래스를 선언해준다. public class 클래스이름{ } 일반적으로 소스 파일당 하나의 클래스를 선언한다. 하지만, 두 개 이상의 클래스 선언도 가능한다. public class Car{ } class Tire{ } 두 개 이상의 클래스가 선언된 소스 파일을 컴파일하면 바이트 코드 파일은 클래스를 선언한 개수만큼 생긴다. 소스 파일은 클래스 선언을 담고 있는 저장 단위일 뿐, 클래스 자체가 아니다. 상기 코드를 컴파일하면 Car.class와 Tire.class가 .. 2023. 1. 26.