일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SSAFY
- JPA
- JUnit
- SWEA
- 코딩테스트실력진단
- 완전탐색
- 코딩테스트
- 완탐
- 그리디
- Java
- 자바
- BFS
- 그래프
- 알고리즘기본개념
- 코드트리
- 트러블슈팅
- 알고리즘
- database
- 기본유형
- 코테
- 싸피
- Spring
- 백준
- DP
- 부분수열의합2
- Union Find
- 다시보기
- 유니온파인드
- 다익스트라
- DFS
- Today
- Total
목록전체 글 (159)
HwangHub
이제부터 본 수업이 시작되었다. 다음 주부터는 매주 월요일 평가시험도 이루어지기 때문에 한주 한주 열심히 학습을 지속해야 하는 채찍이 되어준다. 그리고 주제 별로 평가를 진행하는 관통 프로젝트의 페어도 구성되었다. 이제 진짜 시동이 걸리고 있는 느낌이 든다.자바 커리큘럼 시작자바는 내가 백엔드를 본격적으로 시작한 작년부터 열심히 공부했던 언어이다. 문법 외 자바의 구조나 철학에 대한 공부를 시작한 건 이번 겨울이 처음이었지만, 그래도 개발을 진행하면서 익숙해지기도 했었기에 나름 자신이 있었다. 자바를 알려주는 강사님께서는 썬 마이크로시스템즈(자바를 만든 회사)에서 자바를 강의했던 분이셔서 자바를 정말 잘 알고 계신 것이 정말 잘 느껴졌다. 자바를 만든 회사에서 자바를 강의하셨다니... 엄청 놀랐고, 평소..
참조 변수(오브젝트) 다형성은 많이 다뤄지지만, 사실 기본형 데이터들도 다형성을 가집니다. byte => short / char => int => long => float => double 우리는 이걸 형변환이라고 알고 있죠. 하나의 타입이 여러 타입을 품을 수 있는 성질이 다형성이며, 이는 객체 간의 상속 관계 뿐만 아니라, 이와 같은 기본형의 형 변환이라는 현상도 만들어 냈습니다. (근데 중요하진 않으니 이쯤하고 넘어가죠.) 오늘 다룰 내용은 객체지향 원칙 A P.I.E 중 다형성에 대한 내용입니다. 다형성, 눈으로 확인하기 우리 모두 잘 알다시피, 참조 변수에서의 다형성은 상속 관계에서 많이 다뤄집니다. 이는 클래스 간 상속이나 인터페이스와 클래스 간의 관계에서 이용됩니다. 아래 예시를 통해 더 자..
스프링에서는 singleton 디자인 패턴을 기본적으로 사용하고 있다. 이게 도대체 뭐길래 스프링 프레임워크에서 기본 룰로 채택하고 있고, 어떤 장점이 있을까? 객체의 생성 제어 싱글톤 디자인 패턴은 불필요한 객체 생성을 제어하기 위해 등장하였다. 어떤 객체가 불필요할까? 객체는 세상에 있는 사물 뿐만 아니라 특정 행위나 논리 등 세상의 모든 것이 객체화될 수 있다고 하였다. 이를 이해하는 게 중요하다. 자, 그럼 생각을 해 보자. "일기 쓰기"라는 객체가 있다고 해 보자. 일기 쓰기 객체는 아래 코드와 같이 간단히 표현해보겠다. public class DiaryWriting { // 일기를 작성하는 메서드 public void writeDiary(String title, String body) { Sy..
아래 예시 코드와 함께 간단히 다뤄보자. 아래 코드에 3가지가 생략되어 있는데, 혹시 전부 캐치가 되는가? (더 있는진 모르겠는데, 일단 저는 3가지만 알고 있어요. 혹시 더 있다면 언제든 댓글 부탁드립니다.) package hwanghub.example; public class Person { public Person() { } } 가장 먼저 숨겨져 있는 건 import java.lang.*;이다. 자바에서 기본 자료형이나 Wrapper class, 그리고 큰 값 비교를 해주는 Math 클래스와 같은 기본 클래스들이 들어있다. 자바 프로그래밍의 모든 경우에 반드시 필요한 필수 클래스를 포함하여, 정말 자주 사용되는 클래스들이 java.lang패키지에 들어 있기 때문에 이를 default import라고..
JVM 메모리 영역(JVM runtime data area)은 meta space(method area), stack, heap, pc register, native method stack 다섯가지로 구분되어 구성된다. 자바는 멀티 스레드를 지원하는데, JVM 내에서 모든 쓰레드가 공유하는 메모리 영역(heap, meta-space)이 존재하고, thread 별로 구분되어 생성되는 영역이 존재한다. 개념적으로만 보면 복잡하니 자바에서 main 메서드를 생성하는 과정에서 JVM에 일어나는 일을 보면서 해당 구조를 이해해보자. public class Main { public static void main(String[] args) { Customer customer = new Customer(); custo..
객체지향 프로그래밍(Object-Oriented Programming, OOP)은 현대 소프트웨어 개발 분야에서 중요한 패러다임으로 자리매김하고 있습니다. 그 이유는 객체지향 프로그래밍이 현실 세계의 다양한 문제를 효과적으로 표현하고, 유지보수를 쉽게 만들어주는 메커니즘이기 때문입니다. 객체지향이 등장하게 된 배경 객체지향 프로그래밍은 현실 세계에 사용되는 엔터프라이즈 서비스 개발을 어떻게 하면 더욱 효율적으로 해낼 수 있을까 하는 고민에서 시작된 "패러다임"입니다. 과거 어셈블리어로 코딩하던 시대를 넘어, 코볼과 포트란이 등장할 때 까지만 해도 자연어와 유사하다는 것에서 접근성이 높아 프로그래밍을 대중화하는 데에 기여했을 것입니다. 하지만 이는 절차적 프로그래밍의 초기 언어였기에 처음 프로그램을 만들 ..
문자열은 자바에서 유일하게 new 키워드를 사용하지 않고 생성할 수 있는 객체이다. ""를 리터럴이라고 하는데, "" 리터럴로 선언해두면 컴파일 단계에서 문자열 객체를 생성할 수 있도록 자바 내부적으로 구현되어 있다. 자바에서 유독 문자열 객체에 대하여 생성 방법을 리터럴로 둔 것을 단순히 선언의 편안함 때문만은 아닐 것이라는 감이 오는 분도 있을 것이다. 도대체 new String("")이랑 무슨 차이가 있길래 "" 리터럴 생성이라는 방법을 별도로 두어 구분해 둔 것일까. String s1 = "이건 literal pool에 저장되는 문자열입니다."; String s2 = "이건 literal pool에 저장되는 문자열입니다."; String s3 = new String("이건 literal pool에..
자바에서 배열은 참조 변수로 취급되며, 이는 메모리에 저장된 객체를 가리키는 주소 값을 갖는 변수를 의미합니다. 이러한 참조 변수의 특성 때문에 배열을 출력하면 대부분의 경우 해당 변수가 가리키는 메모리 주소가 출력됩니다. 하지만 char[] 배열의 경우에는 예외적으로 배열 안에 있는 문자들이 직접 출력됩니다. 이에 대해 좀 더 자세히 알아보도록 하겠습니다. 일반 배열 출력 자바에서 int[], double[] 등의 배열을 선언하고 출력하려고 하면, 배열 변수가 가리키는 메모리 주소가 출력됩니다. 이는 배열이 참조 변수로 취급되기 때문입니다. int[] arr = {1, 2, 3, 4, 5}; System.out.println(arr); // [I@7ef20235 System.out.println(arr..
자바에서 배열은 참조 변수로 취급됩니다. 즉, 배열을 저장하는 변수는 메모리에 저장된 객체를 가리키는 주소 값을 갖는 변수입니다. 그렇다면 왜 자바는 배열을 이런 방식으로 구현했을까요? 이에 대한 이유를 살펴보도록 하겠습니다. 자바의 참조 타입 자바는 모든 객체를 힙(heap) 영역에 생성하고, 이들 객체에는 참조 변수를 통해 접근합니다. 이 참조 변수들은 스택(stack) 영역에 위치하며, 객체가 생성될 때 해당 객체를 가리키는 주소값을 갖게 됩니다. 여기에서 배열도 예외는 아닙니다. 배열 역시 객체로 취급되며, 배열을 선언하고 객체를 생성하면 해당 배열 객체를 가리키는 참조 변수가 생성됩니다. int[] arr = new int[5];위 코드에서 arr는 참조 변수로서, 생성된 배열 객체의 주소 값을..
자바에서 다양한 타입 간 연산을 가능하게 하는 중요한 기능 중 하나가 '형 변환'입니다. 형 변환은 데이터의 타입을 다른 타입으로 변환하는 것을 의미합니다. 이번 글에서는 자바의 형 변환에 대해 좀 더 자세히 알아보도록 하겠습니다. 기본형과 참조형의 형 변환 기본적으로 형 변환은 기본형은 기본형끼리, 참조형은 참조형끼리 가능합니다. 예를 들어, int 타입을 double 타입으로, Integer 타입을 Long 타입으로 변환할 수 있습니다. 그러나 기본형과 참조형 간의 형 변환을 구현해야 하는 경우도 있습니다. 이때는 자바에서 지원하는 Wrapper class를 활용할 수 있습니다. 예를 들어, int 타입을 Integer 타입으로 변환하거나, Integer 타입을 int 타입으로 변환하는..