일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- String.valueOf()
- List.of
- 인텔리제이
- OOP
- 알고리즘
- 스택
- 클라우드에서 도커 실행하기
- 재귀와반복문
- 자바
- 11659
- 구간합구하기
- MySQL
- Spring Web MVC
- 백준 11659
- 재귀함수
- Spring MVC 구성요소
- 백준
- 코드스테이츠 백엔드
- java
- Spring MVC 동작원리
- 싱글톤패턴
- 코드스테이츠
- vm인스턴스생성
- 투포인터알고리즘
- GCP
- Array.asList
- 코딩테스트
- 성능테스트툴
- 프로그래머스
- 버블정렬
- Today
- Total
목록Development/JAVA (16)
순간을 기록으로
안녕하세요. 오늘도 저번과 마찬가지로 기술면접을 보는 상황을 가정하고 학습한 개념을 질문으로 만들어 봤습니다. OOP의 4가지 특징은 무엇인가요? 객체지향언어는 다음과 같은 4가지 특징이 있습니다. 상속(Inheritance) 캡슐화(Encapulation) 다형성(Polymorphism) 추상화(Abstraction) OOP의 5가지 설계 원칙은 무엇이 있나요? 객체지향언어에는 SOLID라는 5가지 설계 원칙이 있습니다. Single Responsibility Principle(SRP, 단일책임원칙): 객체는 하나의 책임만 가져야 한다. Open Close Principle(OCP, 개방 폐쇄 원칙): 기능을 추가할 때 기존의 코드 변경하지 않아야 한다. Liskov Substitution Pricip..
안녕하세요. 이번 시간에는 기술 면접을 본다고 가정하고 OOP 개념을 질문을 통해서 잘 알고 있는지 확인해 보겠습니다. 객체지향 프로그래밍(OOP)이란 무엇인가요? 객체 지향 프로그래밍(Object Oriented Programming)의 약어로 프로그램을 명령어의 나열로 보는 시각에서 벗어나 객체들의 집합으로 보는 방법론을 말합니다. 클래스(Class)란 무엇인가요? 클래스는 객체를 생성하기 위한 설계도 입니다. 클래스를 사용해서 같은 구성의 속성(상태)과 행위(기능)를 갖는 객체를 만들 수 있습니다. 객체(Object)는 무엇인가요? 객체는 클래스로 구현한 대상을 말합니다. 인스턴스(Instance)는 무엇인가요? 인스턴스는 메모리에 할당된 객체입니다. 필드(field)란 무엇인가요? 필드는 인스턴스..
얕은 복사(Shallow Copy) 객체의 주소값만을 복사하는 것 주소 값이 같으므로 한쪽에서 값을 바꾸면 다른 쪽에서도 값이 바뀐다. 장점 하나의 객체만을 사용하기 때문에 메모리 낭비가 발생하지 않는다. 단점 여러 객체가 하나의 배열을 가리키기 때문에 값 변경할 때 실수가 발생할 수 있다. public class Solution { public static void main(String[] args) { int[] a = {1, 2, 3, 4, 5}; int[] b = a; System.out.println("a의 주소값: " + a); System.out.println("b의 주소값: " + b); } } 깊은 복사(Deep Copy) 객체의 실제값을 새로운 객체를 만들어서 복사하는 것. 주소 값이 ..
오버 라이딩(Overriding) 정의와 필요성 오버 라이딩은 조상클래스로부터 상속받은 메소드의 내용을 변경하는 것을 말합니다. 상속받은 메소드를 그대로 사용하는 경우도 있지만, 때에 따라서는 자손 클래스에 맞게 내용을 재정의할 필요가 있습니다. class Point { int x; int y; String getLocation() { return "x: " + x + ", y: " + y; } } class Point3D extends Point { int z; @Override String getLocation() { return "x: " + x + ", y: " + y + ", z: " + z; } } 위의 예시는 Point 클래스의 getLocation() 함수를 Point3D에서 오버라이딩한 ..
개요 자바를 공부하다 보면 위의 3가지 용어를 자주 접하게 됩니다. 그만큼 중요한 개념인데요. 애매한 상태로 남겨두기보다는 한 번에 확실하게 정리하는 게 좋을 것 같아서 작성하게 되었습니다. 각 개념을 설명하기 앞서 그림으로 큰 구조를 보겠습니다. JDK(Java Development Kit, 자바개발키트) - JDK란 자바 프로그램을 개발하기 위해 필요한 툴들을 모아 놓은 소프트웨어 패키지다. - JRE + 개발도구(컴파일러, 디버거 등) JRE(Java Runtime Environment, 자바실행환경) - JRE란 자바 프로그램을 실행하기 위해 필요한 환경이다. - JVM + 클래스 라이브러리 - 개발자뿐만이 아니라 자바 프로그램을 실행하는 사용자라면 JRE이 필요하다. JVM(Java Virtua..
제네릭 클래스와 상속 제네릭 클래스도 일반 클래스처럼 상속이 가능하다. class Box { ... } class SteelBox extends Box {// 제네릭 클래스의 상속 ... } 제네릭 클래스 StellBox는 제네릭 클래스 Box를 상속한다. 코드를 그림으로 표현하면 다음과 같다. Box sBox = new SteelBox("Simple"); Box iBox = new SteelBox(123); 이런 상속 관계에서 객체를 만드는 코드는 다음과 같이 짤 수 있다. 따라서 제네릭 클래스의 상속은 다음 관계도 만족한다. 즉, SteelBox 제네릭 타입(=매개변수화 타입)은 Box 제네릭 타입을 상속한다고 말할 수 있다. 그렇다면 Box box = new Box();도 성립할까? Number와 ..
제네릭 이전의 코드의 단점 1.클래스가 자료형에 의존적이게 된다. 2.인스턴스를 꺼낼 때 형변환을 해야한다. Apple ap = (Aplle)aBox.get(); Orange og = (Orange)oBox.get(); 3.실수가 컴파일 과정에서 발견되지 않는다. aBox.set("Apple");// 문자열 "Apple" 담았는데 실수다 oBox.set("Orange");// 문자열 "Orange" 담았는데 실수다 제네릭 기반 클래스 정의 class Box { private T ob; public void set(T o) { ob = o; } public T get() { return ob; } } 제네릭의 등장으로 자료형에 의존적이지 않은 클래스를 정의할 수 있고 앞에서 본 문제점을 해결할 수 있다. ..
개발을 하다보면 여러 상황에서 예상치 못하게 프로그램이 종료될 때가 있습니다. 이러한 상황은 예외처리라는 개념과 관련이 있습니다. 이번 시간에는 자바의 예외 처리에 대해서 알아보겠습니다. 먼저 '예외처리(Exception Handling)'가 무엇인지 배우기 예외가 무엇인지 알아보겠습니다. '예외(Exception)'란 예기치 못한 상황을 의미합니다. 즉 정상적이지 않은 상황을 뜻합니다. 말로 설명하는 것보다 코드로 보면 이해가 쉬우니 코드를 통해 설명하겠습니다. import java.util.Scanner; public class ExceptionCase { public static void main(String[] args) { Scanner in = new Scanner(System.in); int..