Programming/Java(15)
-
[Java] Java와 JVM
[Java] Java와 JVM Java를 사용을 하면서 Java가 어떻게 코드를 인식하고 실행하는지에 대해 학습하는 시간을 가지게 되었다. 해당 글은 그 내용들을 정리하면서 작성하게 되었다. 프로그래밍 언어 프로그래밍 언어 - 컴퓨터가 실행할 프로그램을 작성하는 언어이다. 이때 CPU는 기계어 - 이진수(binary code)인 0과 1만 이해가 가능하다. 그렇지만 사람이 기계어로 직접 프로그램을 작성하는 것은 어려운 일이기에 기계어를 ADD / SUB / MOVE 등의 상징적인 기호로 1대 1 대응을 한 어셈블리어가 등장하게 된다. 다만 이 어셈블리어 또한 사람이 직접 다루기는 어렵기에 C / C++ / Java 등의 이해하고 표현하기 쉬운 언어가 등장하게 되는데 이러한 언어를 고급 언어라고 한다. 이..
2022.11.30 -
[Java] 객체지향설계 - SOLID
[Java] 객체지향 설계 - SOLID 객체 지향 설계, 우리가 사는 세상을 객체들끼리의 상호작용으로 보고 이를 프로그래밍 적으로 설계하여 표현을 하는 것이다. 이러한 것을 객체지향 설계라고 하며 해당 설계를 진행할 때 지켜져야 하는 5개의 원칙이 존재한다. 그리고 이 원칙을 SOLID 원칙이라고 하며 오늘은 이에 대해 공부한 내용들을 정리하고자 한다. SOLID 원칙 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 함께 적용해서 설계를 진행하면 된다. 원칙들은 각 원칙의 앞글자를 따와서 가져왔으며 아래와 같다 SRP : 단일 책임 원칙 (Single responsebility principle) 하나의 클래스는 하나의 책임만 가져야 한다. OCP : 개방 폐쇄..
2022.11.21 -
[Java] Stream이란?
자바의 기능을 살펴보면 Stream이란 것이 존재한다. 그럼 이 Stream은 무엇일까? Stream 배열이나 컬렉션에 담긴 데이터를 다룰 때, 반복문이나, iterator를 사용시 코드가 길어지고 가독성이 떨어진다. 이러한 문제점이 존재하기에 Stream이 등장한 것이다. Stream default Stream stream() { return StreamSupport.stream(spliterator(), false); } 데이터의 흐름 collection을 소스로 가지고 처리를 하는 것 람다를 활용하여 효율적인 코드를 작성할 수 있다 Stream의 특징 데이터를 담고 있는 컬랙션이 아니다 컬렉션과 연관되어 데이터를 1회성으로 처리하는 역할이다 한번 컬렉션 요소에 맞춰 function 및 역할을 수행하..
2022.11.15 -
[Java] 객체지향
자바는 객체지향 언어라고 한다. 그렇다면 이 객체지향이란 것은 무엇을 의미하는 것일까? 객체(Object) 객체(object)를 어렵게 생각하지 않고 우리가 알고 있는 하나의 대상이라고 생각한다. 즉 사람, 의자, 음식, 동물 같은 대상들을 각자의 범주로 묶어서 표현한 것을 객체라고 한다. 즉 객체지향이란 각 대상이 다른 대상에게 행동을 요청하고 응답을 받으며 상호작용하는 것으로 이해하였다. 객체지향의 특성 캡슐화 상속 다형성 흔히 이 세가지를 객체지향의 특성이라고 한다. 그럼 이제부터 기본 개념부터 특성까지 정리해보자. 캡슐화 캡슐화를 이해할 때 몇 가지를 알고 넘어가야 한다. 바로 클래스, 필드, 메서드이다. 클래스 표현하고자 하는 객체, 대상의 공통 속성을 하나에 정의한 것 객체의 속성을 정의해 놓..
2022.11.14 -
[Java] static 개념 및 정리
김영한 강사님의 스프링 강의의 싱글톤 부분을 듣던 도중 static에 대한 지식이 부족해서 공부하면서 적어보려고 한다. 기본을 채우기 위해 공부하며 채워 넣고자 한다. static이란? public static void main(String [] args){} 우리가 자바를 시작하면 바로 처음 보는 코드이다. 사전적 의미의 static은 (변화 움직임 없이) 고정된, 고정적인 이라는 뜻을 가지고 있다. 그럼 java에서 static이란 무엇일까? 클래스, 메서드, 필드명에서 보이는 이 static은 해당 대상을 객체를 만들 때마다 생성이 되고 사용이 되는 것이 아닌 클래스, 즉 설계도에만 지정된 상태로 만들어 준다. 따라서 해당 클래스에서 static으로 지정된 자원은 객체의 생성에 따라 무한정 생성이 ..
2022.06.26 -
[Java] 자바의 추상 클래스 & 인터페이스 정리 / 상속
[Java] 자바의 추상 클래스 & 인터페이스 정리 Spring을 공부하며 추상 클래스(abstract class), 그리고 인터페이스(interface)의 차이에 대해 확실하게 정리하려고 적게 되었다. 두 개의 개념 모두 상속받는 클래스, 구현하고자 하는 인터페이스 내부의 정의된 메서드를 구현하는 것을 요구한다. 그렇지만 두 개의 개념은 명확히 다형성의 부분에서 차이점이 존재한다. 추상 클래스(abstract class) 추상 클래스는 상속에서 슈퍼 클래스로 사용이 된다. abstract로 선언이 된다. 슈퍼 클래스로만 사용이 된다. 추상 클래스의 경우 내부적으로 미완성의 메서드가 존재할 수 있기에 객체의 생성이 불가능하다. 상속을 받은 서브 클래스는 반드시 추상 클래스 내부에서 선언된 모든 추상 메서..
2022.03.29