본문 바로가기

Study/JAVA10

[JAVA] 13주차_컬렉션 프레임워크 (Queue, Set 컬렉션, Map 컬렉션, Iterator 인터페이스와 입출력 스트림)_자바 스터디 1차시 Queue, Set 컬렉션 컬렉션 프레임워크의 구조 - 컬렉션 프레임워크는 인터페이스와 클래스로 구성 - 인터페이스는 컬렉션에서 수행할 수 있는 각종 연산을 제네릭 타입으로 정의해 유사한 클래스에 일관성 있게 접근하게 한다 - 클래스는 컬렉션 프레임워크 인터페이스를 구현한 클래스 Queue 컬렉션 (Queue 인터페이스) - 선입선출(FIFO) 방식을 지원 - 항상 순차적! /* Queue 인터페이스의 활용 코드 */ import java.util.LinkedList; //큐를 할당할 때엔 연결 리스트 선언 해서도 사용 가능 import java.util.NoSuchElementException; import java.util.Queue; public class QueueDemo { public .. 2022. 5. 28.
[JAVA] 12주차_예외 처리와 제네릭 프로그래밍 (제네릭 프로그래밍, List 컬렉션, Stack, ArrayList, LinkedList)_자바 스터디 1차시 제네릭 프로그래밍 제네릭의 개념과 필요성 - 자바는 다양한 종류의 객체를 관리하는 컬렉션이라는 자료구조를 제공 - 초기에는 모든 객체를 담을 수 있는 Object 타입의 컬렉션 사용 - Object 타입은 실행하기 전에는 클래스에 어떤 객체를 담았는지 알 수 없다는 문제점이 나타남! - 제네릭은 일반화라고 보면 됨 /* Object 타입의 컬렉션을 사용한 예시 */ //Beer 클래스 public class Beer { } //Boricha 클래스 public class Boricha { } //어떤 음료수든 담을 수 있는 Cup 클래스 public class Cup { private Object beverage; //모든 종류의 객체를 Cup 객체에 담을 수 있도록 Object 타입 사용 pub.. 2022. 5. 21.
[JAVA] 11주차_기본 패키지(StringTokenizer 클래스, java.text 패키지, 예외 처리)_자바 스터디 1차시 StringTokenizer 클래스, java.text 패키지 StringTokenizer 클래스 - 문자열을 토큰으로 분리하는 데 사용 - 토큰(분리한 문자열)은 공백이나 줄 바꿈 등 구분자를 사용해 문자열을 분리 - 기본 구분자는 공백, 탭, 줄 바꿈, 복귀, 용지 먹임 문자 /* StringTokenizer 클래스의 활용 */ import java.util.StringTokenizer; //StringTokenizer 사용을 위해서는 import 선언 필수! public class StringTokenizerDemo { public static void main(String[] args) { String s = "of the people, by the people, for the people.. 2022. 5. 14.
[JAVA] 10주차_인터페이스 구현과 타입 변환, 기본 패키지, Wrapper 클래스, java.util 패키지 (자바 스터디) 9주차 2차시 인터페이스 구현과 타입 변환 인터페이스 타입 (타입 = 형) - 인터페이스도 클래스처럼 하나의 타입이므로 변수를 인터페이스 타입으로 선언 가능 - 인터페이스의 구현 클래스는 그 인터페이스의 자식 타입 - 인터페이스 타입 변수가 구현 객체를 참조한다면 강제 타입 변환 가능 타입 변환과 다형성 interface Movable { //인터페이스 Movable void move(int x); //추상 메서드 (구현부가 없으니까!) } class Car implements Movable { //인터페이스 Movable을 구현한 Car 클래스 (Car는 구현 객체) private int pos = 0; //필드 public void move(int x) { //추상 메서드 구현 pos += x; } .. 2022. 5. 7.
[JAVA] 9주차_추상 클래스와 인터페이스, 인터페이스의 상속, 인터페이스 구현과 타입 변환 1차시 추상 클래스와 인터페이스 추상 메서드: - 메서드 본체를 완성하지 못한 메서드. 무엇을 할지는 선언할 수 있지만, 어떻게 할지는 정의할 수 없다. - 완성하지 못한 = 추상화 했다 - 굳이 구현부를 만들지 않고 상속받은 곳에서 구현하도록 한다. 추상 클래스: - 보통 하나 이상의 추상 메서드를 포함하지만 없을 수도 있다. - 주로 상속 계층에서 자식 멤버의 이름을 통일하기 위하여 사용 - 추상 클래스는 객체 생성 불가능! /* 추상 클래스와 메서드 선언 방법 */ abstract class 클래스이름 { //추상 클래스 선언 //필드 //생성자 //메서드 } absract 반환타입 메서드이름() ; //추상 메서드 선언 //추상 메서드에는 {}, 즉 메서드 구현부가 없다. /* 추상 메서드를 포함.. 2022. 5. 1.
[JAVA] 7주차_추상 클래스와 인터페이스 (접근지정자, final과 객체의 타입 변환) 1차시 접근지정자 접근 지정자의 접근 범위 접근지정자의 종류: public protected default(없음) private 1. public (공개) - 동일 패키지의 클래스, 자식 클래스 접근 가능 - 다른 패키지의 클래스, 자식 클래스 접근 가능 - 그냥 public은 공개된 접근 지정자라서 다 접근 가능 2. protected (상속 관계에서 사용) - 상속 관계라면 패키지가 다르더라도 접근 가능 - 동일 패키지의 클래스, 자식 클래스 접근 가능 - 다른 클래스의 자식 클래스 접근 가능 (상속된 거니까!) - 다른 패키지의 클래스 접근 불가능 3. default (없음) (접근지정자 생략!) - 같은 패키지에선 접근 가능 - 동일 패키지의 클래스, 동일 패키지의 자식 클래서 접근 가능 - 다른.. 2022. 4. 14.
[JAVA] 6주차_상속 (메서드 오버라이딩, 패키지와 부모 생성자, Triangle 클래스와 Member 클래스) 1차시 메서드 오버라이딩 메서드 오버라이딩 : 상속을 통해 부모 클래스로부터 물려받은 메서드를 자식 클래스에 맞도록 수정하는 것 메서드 오버라이딩 규칙 1. 부모 클래스의 메서드와 동일한 시그니처를 사용, 반환 타입까지 동일해야 한다. - 메서드 오버로딩과 헷갈리지 않기!! 메서드 오버로딩에서는 반환 타입이 중요하지 않다. - 메서드 오버라이딩이 메서드 오버로딩보다 규칙이 더 강력하다. 2. 부모 클래스의 메서드보다 접근 범위를 더 좁게 수정할 수 있다. - 하지만 대체적으로 접근 범위를 동일하게 한다. 3. 추가적인 예외가 발생할 수 있음을 나타낼 수 없다. 메서드 오버라이딩 불가 - 상속 관계가 불가능해서 메서드 오버라이딩도 불가능하다! 1. private 메서드: 부모 클래스 전용이므로 자식 클래스.. 2022. 4. 8.
[JAVA] 5주차_동적배열과 상속 (동적배열과 객체배열, 상속, Rectangle 클래스, OddEven 클래스) 1차시 동적배열과 객체배열 동적 배열 - 크기를 미리 지정하는 배열은 정적 배열 - 처리할 데이터의 개수가 고정된 경우가 아니라면 정적 배열은 자원을 낭비하거나 프로그램을 다시 컴파일 - 자바는 크기가 유동적, 가변적, 동적인 배열을 지원하기 위해 ArrayList 클래스 제공 - 동적 배열은 배열이 요소에 따라 확장, 축소한다. ArrayList 객체 생성 -> ArrayList 참조변수 = new ArrayList(); 참조타입이 기초 타입이라면 Integer, Long, Short, Float, Double 등을 사용 ArrayList 원소 접근 참조변수.add(데이터) 참조변수. remove(인덱스번호) 참조변수.get(인덱스 번호) 참조변수.size() /* ArrayList를 이용한 데이터의 .. 2022. 4. 3.
[JAVA] 4주차_정적멤버, 문자열, 배열 (this와 정적멤버, 문자열, 배열) 1차시 this와 정적멤버 this: 생성한 객체(= 인스턴스) 자신 class Square_1 { private double side; //side는 클래스 안에 선언된 멤버 필드 //설정자 public void setRadius(double s) { //매개변수 s는 멤버 필드 side를 의미하지만 변수 이름은 다름 side = s; //설정자 역할 -> 전달된 값의 정보 s가 side라는 필드 정보에 초기화 } } class Square_2 { private double side; //side는 멤버 필드 //설정자 public void setRadius(double side) { //멤버 필드와 같은 이름으로 매개변수 설정 this.side = side; //this.side는 멤버필드, side.. 2022. 3. 25.
[JAVA] 3주차_자바 문법과 객체 지향 (제어문과 메서드, 객체지향프로그래밍 개요, 접근자와 설정자) 1차시 제어문과 메서드 제어문: 제어문은 실행문의 수행 순서를 변경 (if문, while문, for문) /* if-else 문을 이용한 홀짝 조사 */ import java.util.Scanner; //Scanner 클래스의 경로 이름을 컴파일러에 알림 public class IfElseDemo { public static void main(String[] args) { Scanner in = new Scanner(System.in); //Scanner 객체 색성 (1) System.out.print("숫자를 입력하세요 : "); //(2) int number = in.nextInt(); //데이터 입력 받기 //(3) if (number % 2 == 0) System.out.println("짝수!");.. 2022. 3. 20.