
🤔 LinkedList 배열의 장단점 ✅ 장점 ✔ 배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다. ✅ 단점 ✔ 크기를 변경할 수 없다. 크기를 변경해야 할 경우 새로운 배열을 생성 후 데이터를 복사해야 함. 크기 변경을 피하기 위해 충분히 큰 배열을 생성하면, 메모리가 낭비됨. ✔ 비순차적인(중간에 데이터 넣는 것) 데이터의 추가, 삭제에 시간이 많이 걸림. 데이터를 추가하거나 삭제하기 위해 다른 데이터를 옮겨야 함. 그러나 순차적인 데이터 추가(끝에 추가)와 삭제(끝에서 삭제)는 빠르다. 🤔 LinkedList - 배열의 단점을 보완 ✔ 배열과 달리 LinkedList는 불연속적으로 존재하는 데이터를 연결(link) ✔ 데이터의 삭제 : 단 한 번의 참조..

🤔 컬렉션 프레임워크(collections framework) ✔ 컬렉션(collection) - 여러 객체(데이터)를 모아 놓은 것 ✔ 프레임웍(framework) - 표준화, 정형화된 체계적인 프로그래밍 방식 ✔ 컬렉션 프레임웍(collections framework) - 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식 - 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스 제공 - java.util 패키지에 포함. JDK 1.2부터 제공 ✔ 컬렉션 클래스(collection class) - 다수의 데이터를 저장할 수 있는 클래스(예, Vertor, ArayList, HashSet) 🤔 컬렉션 프레임워크의 핵심 인터페이스 List : 순서 o, 중복 o Set : 순서 x, 중복 x Ma..

오늘은 예외 되던지기와 연결된 예외에 대해 학습하자 🤔 예외 되던지기(exception re-throwing) ✔ 예외를 처리한 후에 다시 예외를 발생시키는 것 ✔ 호출한 메서드와 호출된 메서드 양족 모두에서 예외처리하는 것 백문이 불여일견!! 코드를 통해 확인하자. public class 예외되던지기 { public static void main(String[] args) { try { method(); }catch(Exception e) { // 4. (main 메서드에서 예외 처리됨.) 출력 System.out.println("main 메서드에서 예외 처리됨."); } } static void method() throws Exception { try { throw new Exception(); //..

🤔 프로그램 오류란? ✔ 컴파일 에러(compile-time error) : 컴파일 할 때 발생하는 에러 ✔ 런타임 에러(runtime error) : 실행할 때 발생하는 에러 (프로그램 종료) ✔ 논리적 에러(logical error) : 작성 의도와 다르게 동작 (프로그램 종료 x) 🤔 예외처리의 정의와 목적 ✔ 정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것 ✔ 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것 🤔 try-catch문에서의 흐름 ✅ try 블럭 내에서 예외가 발생한 경우 1. 발생한 예외와 일치하는 catch블럭이 있는지 확인 2. 일치하는 catch블럭을 찾게 되면, 그 catch블럭 내의 문장들을 수행하고 전체 try-catch문..

오늘은 자바에서 아주 중요하고 많이 쓰이는 익명클래스에 대해 알아보자. 🤔 익명클래스(anonymous class)란? ✔ 이름이 없는 일회용 클래스 ✔ 정의와 생성을 동시에! 원래 객체는 다음과 같이 선언하고 생성한다. 근데 익명 클래스는 '이름' 이 없으므로 다음과 같이 선언한다. 본인 이름이 없기 때문에 조상클래스이름 혹은 구현인터페이스의 이름을 사용한다. 예제를 살펴보자. import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; class Tes { public static void main(String[] args) { Button b = new Button("Start"); b.addAc..

지난 포스팅에서 '객체지향 프로그래밍'파트의 시리즈가 완강되어서 강의가 끝난줄 알았는데 추가 강의가 있어서 공부한 내용을 바탕으로 포스팅한다. 바로 들어가보자. 😊 🤔 내부 클래스의 제어자와 접근성이란? ✔ 내부 클래스의 제어자는 변수에 사용 가능한 제어자와 동일 class P { class InstanceInner { /* 인스턴스 내부 클래스 */ int iv = 100; // static int cv = 100; // 에러!! static 변수를 선언할 수 없다. final static int CONST = 100; // final static은 상수이므로 허용 } static class StaticInner { /* static 내부 클래스 : static 내부 클래스에서는 외부 클래스의 인스턴스..

🤔 인터페이스를 이용한 다형성이란? ✔ 인터페이스 타입 매개변수는 인터페이스 구현한 클래스의 객체만 가능 ⭐⭐⭐ ✔ 인터페이스를 메서드의 리턴타입으로 지정할 수 있다. abstract class Unit { int x, y; abstract void move(int x, int y); void stop() { System.out.println("멈춥니다."); } } interface Fightable { void move(int x, int y); // public abstract 생략됨 void attack(Fightable f); // public abstract 생략됨 } class Fighter extends Unit implements Fightable { public void move(int..

🤔 추상 클래스(abstaract class)란? ✔ 미완성 설계도. 미완성 메서드를 갖고 있는 클래스 ✔ 다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가 ✔ 미완성 메서드. 구현부(몸통, {})이 없는 메서드 /* 주석을 통해 어떤 기능을 수행할 목적으로 작성하였는지 설명 */ 다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가 Player p = new player(); // 에러. 추상 클래스의 인스턴스 생성 불가 그럼 인스턴스 생성 불가한 클래스를 만드는 이유가 뭘까? 👉 다른 클래스 작성에 도움을 주기 위해서!! abstract class Player { // 추상클래스(미완성 클래스) abstract void play(int pos); // 추상메서드(몸통{}이 없는 ..

오늘은 객체지향의 꽃인 다형성에 대해 학습해보자. 🤔 다형성(polymorphism)이란? ✔ 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 ✔ 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다. 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 Tv t = new SmartTv(); // 타입 불일치 위와 같이 Tv (조상 타입 참조 변수) 리모콘으로 SmartTV(자손 타입 객체)를 다루는 것을 다형성이라고 한다. 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다. Tv t = new SmartTv(); // 허용 SmartTv s = new Tv(); // 허용 안 됨. // 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다. SmartTv 리모컨 버튼 6(Tv버튼..

🤔 제어자(modifier)란? ✔ 클랫와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미 부여 🤔 static이란? 🤔 final이란? 🤔 abstract 란? 추상의, 미완성의 ✅ 추상메서드란? ✔ 몸통이 없는 메서드 ✔ 미완성 메서드 ✔ 선언부만 있고, 구현부는 없다. ✔ abstract 키워드가 붙는다. ✅ 추상클래스란? ✔ 추상 메서드를 갖고 있는 클래스 추상클래스의 인스턴스 생성불가 ❌ abstract class AbstractTest { // 추상클래스 (추상메서드를 포함한 클래스) abstract void move(); // 추상 메서드(구현부가 없는 메서드) } AbstractTest a = new AbstractTest(); // 에러!! 추상 클래스의 인스턴스 생성불가 추상클래스는..

🤔 참조변수 super란? ✔ 객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자) 내에서만 존재 ✔ 조상의 멤버를 자신의 멤버와 구별할 때 사용 🤔 this와 super의 차이점? this : 지역변수(local variable)와 인스턴스 변수(instance variable)의 구분에 사용 super : 조상의 멤버와 자신의 멤버 구분에 사용 다음의 예제를 보자. class T2 { public static void main(String[] args) { Child c = new Child(); c.method(); } } class Parent { int x = 10; /** super.x */ } class Child extends Parent { int x = 20; // this.x vo..

그간 필자는 객체지향이 정확히 무엇인지도 모르고 생성자, 오버로딩, 오버라이딩은 왜 배우는지도 모르고 주입식으로 학습했다. 객체지향 : 객체 단위로 프로그래밍 하는것, 코드의 중복 줄일 수 있음. 오버로딩 : 생성자 여러 개 생성하는 데 매개변수 다른 것 오버라이딩 : 상속받은 생성자 재정의 하는 것 등 이론식으로 공부했다. 그러다 다음의 예제를 만나고 모든 것이 한번에 이해가 되었다. 이전 필자의 포스팅에서 소개한 내용인데 필자의 시야가 확 트이는? 예제였기에 다시 한 번 포스팅 한다. (이전 포스팅 참고) 바로 들어가보자. 다음의 코드를 보자. (코드를 잘 짜는 것이 얼마나 코드를 단축시킬 수 있는지 알게 되는 코드이다.) 필자는 처음에 강의를 듣고 소름이 돋았다. 👍 class MyPoint3 ex..

🤔 상속(Inheritance)란? ✔ 기존의 클래스로 새로운 클래스를 작성하는 것.(코드의 재사용) 두 클래스를 부모와 자식으로 관계를 맺어주는 것 ✔ ⭐ 자손은 조상의 모든 멤버를 상속받는다. (생성자, 초기화블럭 제외) 따라서 ✔ 자손의 멤버 개수는 조상보다 적을 수 없다.(같거나 많다.) 왜냐 모든 멤버를 상속받으니까!! ✔ 자손의 변경은 조상에 영향을 미치지 않는다. 🤔 포함(composite) 관계란? ✔ 포함(composite)이란? 클래스의 멤버로 참조변수를 선언하는 것 작은 단위의 클래스를 만들고, 이 들을 조합해서 클래스를 만든다. class Poitn { int x; int y; } class Circle { int x; // 원점의 x좌표 int y; // 원점의 y좌표 int r;..

🤔 생성자 this()란? 생성자에서 다른 생성자를 호출할 때 사용한다. 다른 생성자 호출 시 첫 줄에서만 사용가능! 다음의 예시를 살펴보자. Car(String color) { door = 5; Car(color, "auto", 4); // 에러, 다른 생성자 호출 시 반드시 첫 줄에서만 사용가능!! // 또한 같은 클래스 안의 생성자를 호출할 때 Car(color, "auto", 4); 로 호출하면 안되고 // this 사용해야함. } // 올바른 사용법 Car(String color) { this(color, "auto", 4); } 🤔 참조변수 this란? 인스턴스 자신을 가리키는 참조변수 인스턴스 메서드(생성자 포함)에서 사용가능 지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용 this..

🤔 메서드란? 문장들을 묶어 놓은 것 값(입력)을 받아서 처리하고, 결과를 반환(출력) 메서드 = 선언부 + 구현부 🤔 메서드의 장점? 코드의 중복을 줄일 수 있다. 코드의 관리가 쉽다. 코드를 재사용할 수 있다. 코드가 간결해서 이해하기 쉬워진다. int add(int a, int b) { // 선언부 int result = a + b; // 구현부 return result; // 호출한 메서드로 결과 반환 // 구현부 } ✅ 메서드는 클래스 영역에만 정의 가능하다 🤔 Return이란? 실행 중인 메서드를 종료하고 호출한 곳으로 되돌아가는 것 반환타입이 void가 아닌 경우, 반드시 return 필요 🤔 호출 스택이란? 스택(stack) : 밑이 막힌 상자. 위에 차곡차곡 쌓임. 호출 스택 : 메서드 ..
- Total
- Today
- Yesterday
- 해커랭크 자바
- 해커랭크 자바 챌린지
- 정보처리산업기사 공부법
- ORM
- 정보처리산업기사
- 자바
- 22 정보처리산업기사
- hackerrank challenges
- LinkedList
- challenges
- 백준
- 디버깅
- 소스코드
- 코드
- 챌린지
- 22 정보처리 산업기사
- 해커랭크 챌린지
- 나동빈
- queue
- BAEKJOON
- 해커랭크
- 정보처리 산업기사
- 강의
- Java
- 자바의 정석
- 그리디
- hackerrank
- stack
- 이코테
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |