Java
-
[Java] 자바 Enum이란?Java 2022. 1. 1. 12:11
Enum이란? Enumeration의 앞의 4글자를 따서 Enum이라고 부르며 열거라는 의미를 가집니다. JEK 1.5부터 관련이 있는 상수들의 집합을 사용할 때 사용합니다. 상수의 값 뿐만아니라 타입도 관리하기 때문에 논리적인 오류를 줄일 수 있습니다. 기존에 상수를 정의하는 방법은 아래와 같았습니다. public static final string MALE = "MALE"; public static final string FEMALE = "FEMALE"; 그러면 왜 Enum이란게 생겨나게 되었고 사용할까요? 런타임에서 발생할 수 있는 에러를 컴파일 단계에서 차단할 수 있음.(typesafe enum) String gender; gender = MALE; gender = "strangeValue" 우리..
-
[Java] 제네릭/지네릭스(Generics)란?Java 2021. 12. 30. 16:39
제네릭(Generics)란? 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능입니다. 객체의 타입을 컴파일 시에 체크하기 때문에 의도하지 않은 타입의 객체가 저장되는 것을 막고 다른 타입으로 잘못 형변환 되어 발생할 수 있는 오류를 줄여줍니다. 제네릭을 사용하는 이유? (등장배경) ArrayList와 같은 컬랙션 클래스에는 다양한 종류의 객체를 담을 수 있지만 보통 한 종류의 객체를 담는 경우가 많습니다. 객체들을 꺼낼 때 마다 타입체크를 하고 형변환을 하는 것을 불편하고, 원하지 않는 종류의 객체가 포함되는 것을 막을 수 없었습니다. 이러한 문제들을 해결하기 위해 제너릭스가 등장하게 되었습니다. 사용예시 ArrayList aList = new ArrayList(..
-
[Java] 어노테이션(Annotation)Java 2021. 12. 20. 19:59
평소에 어노테이션이라는 말은 많이 듣고 코드에서도 종종 활용되는 모습을 보았는데 전혀 알지 못해서 정리합니다. 자바 어노테이션(Java Annotaion)이란? 어노테이션, 애노테이션이라고도 불리며 사전적 의미로 'Annotation'은 주석이라는 의미이다. JDK1.5 버전 이상에서 사용이 가능하며 @기호를 앞에 붙여 사용합니다. 가장 많이 봤던 @Override와 같은 @표시가 이를 의미합니다. 우리가 흔히 사용하는 주석은 // , /**/ 등이 있는데 이것과 무엇이 다를까요? 단순한 설명을 넘어 특별한 의미, 특별한 기능을 수행하도록 하는 기술입니다. 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것으로, 즉 프로그램에게 추가적인 정보를 제공해주는 메타데이터라고..
-
[Java] 인터페이스(Interface)Java 2021. 12. 16. 22:35
인터페이스(Interface)란? 인터페이스는 사전적 의미로 서로 다른 두 시스템, 장치 , 소프트웨어를 이어 주는 부분이며 대표적으로 프로그램과 사용자 사이를 이어주는 GUI가 대표적입니다. 사용자는 구현에 관심이 있고 자바 입장에서는 사용에 관심이 있습니다. 내부적으로 동작은 어떻게 하는지 모르지만 사용자는 인터페이스를 이용하여 추상화하고 자바 입장에서는 이를 사용해야 하기 때문에 이를 인터페이스라고 부릅니다. 자바에서 인터페이스는 일종의 추상클래스입니다. 하지만 추상 클래스보다 추상화 정도가 높아 일반 메서드, 멤버 변수를 구성원으로 가질 수 없습니다. 추상 클래스가 미완성 설계도라면 인터페이스는 기본 설계도라고 할 수 있습니다. 인터페이스는 추상 클래스처럼 다른 클래스를 작성하는데 도움을 주는 목..
-
[Java] 추상클래스(Abstract Class)Java 2021. 12. 15. 23:30
추상클래스(Abstract Class)란? 추상클래스는 추상 메서드를 포함한 클래스를 말합니다. 추상메서드는 구현부가 없이 선언부만 있는 메서드입니다. 여기서 선언부는 반환값, 메서드 이름, 매개변수를 말합니다. 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스이며 일반 클래스를 "설계도" 라고 한다면 추상 클래스는 "미완성 설계도"라고 표현할 수 있습니다. 선언부에 'abstract'라는 키워드를 붙여 만들 수 있습니다. 다음은 추상클래스의 예시입니다. abstract class 클래스이름 { .... public abstract void 메서드이름(); } 추상클래스로 "객체"를 생성할 수 있을까요? "미완성 설계도"이기 때문에 객체(인스턴스)를 생성할 수 없습니다. 따라서 상속을 통해 자식 ..
-
[Java] 배포란?(+ CI/CD)Java 2021. 12. 3. 12:52
배포란(Deploy) 작성한 코드를 빌드하고, 빌드가 완성된 실행 가능한 파일(jar war)을 사용자가 접근할 수 있는 환경에 배치한 것 즉, 빌드를 하고 생성된 jar 또는 war 파일을 WAS에 올리는 거나 .exe 파일로 만들어 사용자가 이용할 수 있도록 하는것이 배포입니다. Jar은 무엇인가? Java Archive(보관소) 의 약자로 Java 어플리케이션이 동작할 수 있도록 클래스, 라이브러리를 포함하여 자바 프로젝트를 압축한 파일입니다 War은 무엇인가? Web Archive의 약자로 웹 어플리케이션이 동작할 수 있도록 JSP, Servelt, Jar, Class, XLM, Javascript 등을 포함한 웹 프로젝트를 압축한 파일입니다. CI / CD CI : Continuous Integ..
-
[Java] 빌드란?(+빌드 도구)Java 2021. 11. 30. 15:26
"빌드와 배포" 개발하면서 정말 많이 들어본 용어이고, 매일매일 빌드를 진행하지만 개념에 대해 자세히 모르는 것 같다고 느껴져 정리하게 되었습니다. 빌드를 이야기할 때는 항상 컴파일러, 링크가 등장하는데 컴파일러에 대해 먼저 알아보겠습니다. 컴파일러(Compiler)란? 자바의 경우 JVM에서 사람이 이해하기 쉬운 소스코드(. java)를 컴퓨터가 알아 들을 수 있는 기계어(. class)=(이진 코드)로 바꾸어주는 역할을 수행합니다. 일상생활에서 예시를 들어보자면 외국어를 우리가 알아들을 수 있는 한국어로 번역해주는 일을 하는사람이 컴파일러의 역할을 수행한다고 이해할 수 있습니다. 다음은 링크에 대해 알아보겠습니다 링크(Link)란? 프로젝트를 진행하게 되면 여러 소스파일이 생기고 서로 다른 파일에서 ..
-
[Java]객체 지향 프로그래밍(Object Oriented Programming)Java 2021. 11. 25. 01:35
자바의 특징하면 객체지향 프로그래밍 언어라는 말이 항상 나오는데 정확히 객체 지향 프로그래밍이란 무엇인지 궁금해서 찾아보게 되었습니다. 객체 지향 프로그래밍(OOP)란 무엇인가? 객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 객체 지향 프로그래밍의 장, 단점은 무엇인가? -장점 코드 재사용 용이 남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장하여 사용할 수 있다. 유지보수가 쉬움 절차 지향 프로그래밍에서는 코드를 수정하려면 일일이 찾아야 하지만 객체 지향 프로그래밍에서는 수정할 부분이 클래스의 내부 멤버 변수 혹은 메서드로 존재하기 때문에 해당..