[Java, 자바] Enum에 대하여
프로그래밍/Java2024. 7. 16. 19:09[Java, 자바] Enum에 대하여

Enum이란 ?Enum은 'Enumeration'의 약자로 '열거', '목록'이라는 뜻을 가지고 있습니다. 말 그대로 관련있는 상수들의 집합이며, final로 String, int 등을 나타내는 일정 개수의 기본 자료형의 값을 고정할 수 있습니다. Enum의 장점Enum은 허용 가능한 값을 제한 할 수 있다는 장점을 가지고 있습니다. 예를 들어 매개변수로 문자열을 입력 받았을 경우 미리 선언해 놓은 값과 다른 값이 들어올 경우, 혹은 오타가 발생했을 때의 에러를 방지할 수 있습니다.또한 수정 시 변경 범위가 최소화 됩니다. 즉, 확장성을 높일 수 있고 코드가 단순해져 가독성이 좋아집니다.마지막으로 인스턴스 생성과 상속을 방지하여 상수값의 안전성이 보장된다는 장점을 가지고 있습니다. Enum 예제선언하기먼..

[Java, 자바] Object클래스에 관하여
프로그래밍/Java2024. 6. 23. 23:40[Java, 자바] Object클래스에 관하여

Object클래스란?먼저 Object는 java.lang 패키지의 대표적인 클래스입니다. 자바에서 모든 클래스의 최상위 부모 클래스는 항상 Object클래스입니다. 아래 그림을 보며 설명을 이어나가겠습니다.클래스에 상속 받을 부모 클래스가 없으면 묵시적으로 Object 클래스를 상속 받습니다.쉽게 이야기해서 자바가 extends Object 코드를 넣어줍니다.따라서 extends Object는 생략하는 것을 권장합니다.클래스에 상속 받을 부모 클래스를 명시적으로 지정하면 Object를 상속 받짖 않습니다.쉽게 이야기해서 이미 명시적으로 상속했기 때문에 자바가 extends Object 코드를 넣지 않습니다.묵시적(Implicit) vs 명시적(Explicit)묵시적 : 개발자가 코드에 직접 기술하지 않아..

[Java, 자바] 추상클래스와 추상메소드
프로그래밍/Java2024. 6. 19. 22:29[Java, 자바] 추상클래스와 추상메소드

추상메소드(abstract method)추상메소드란 선언은 되어 있으나 코드가 구현되어 있지 않은 메소드이고, abstract키워드를 선언하는 선언부만 존재하고 구현부는 작성하지 않고 사용합니다. 작성되어 있지 않은 구현부는 자식클래스에서 오버라이딩하여 사용합니다 !abstract 반환타입 메소드명(); 추상메소드 예시public abstract String getSubject();public abstract void setSubject(String s);// 컴파일 오류public abstract fail() { return "bye";} 추상클래스(abstract class)추상메소드를 가지고 있으면 반드시 추상 클래스로 선언해야합니다. 추상클래스는 abstract 키워드로 선언합니다 ! 추상클..

[Java, 자바] JVM의 동작원리와 기본개념
프로그래밍/Java2024. 6. 18. 20:30[Java, 자바] JVM의 동작원리와 기본개념

자바는 OS에 독립적인 특징을 가지고 있다.JVM이 OS와 프로그램 사이에서 기계어로 해석해주는 역할을 하기 때문이다.Java의 탄생배경Java는 썬 마이크로시스템즈의 제임스 고슬링 이라는 사람과 다른 연구원들이 개발한 프로그래밍 언어입니다. 1991년 그린 프로젝트(Green Project)라는 이름으로 시작해 1995년 발표가 되었다고합니다 ! 처음에는 가전제품 내에 탑재해 동작하는 프로그램을 개발했는데 아이러니하게도 현재는 웹 어플리케이션 개발에 가장 많이 사용하는 언어 중에 하나가 되어있죠 ㅎㅎ 소문에 의하면 제임스 고슬링이라는 사람이 가전제품 내에 동작하는 프로그램을 개발하려고 하는데 그 당시에는 유닉스 기반의 배경을 가지고 있었기 때문에 사용하던 프로그래밍 언어 C/C++의 특성상 여러 하드웨..

[Java, 자바] 추상 클래스(Abstract Class)와 인터페이스(Interface)는 언제 사용해야 될까?
프로그래밍/Java2024. 5. 31. 17:46[Java, 자바] 추상 클래스(Abstract Class)와 인터페이스(Interface)는 언제 사용해야 될까?

추상 클래스와 인터페이스의 특징추상 클래스(Abstract Class)추상 클래스(Abstract Class)는 인터페이스와 유사합니다. 인터페이스와 마찬가지로 인스턴스화 할 수 없으며, 구현을 포함하거나 포함하지 않은 메서드 모두를 가질 수 있다.하지만 인터페이스와 비교하여 추상클래스가 가질 수 있는 중요한 특징 중 하나는 필드를 가질 수 있따는 점이다. 그리고 해당 필드는 static 또는 final이 아닐 수 있으며, public이나 prorected 또는 private으로 선언할 수도 있습니다. 인터페이스를 사용하면 모든 필드가 public, static, final로 처리되면 모든 메서드는 public입니다. 또한 단일 클래스만 extends 할 수 있는 반면, 인터페이스는 여러개를 구현할 수 ..

[Spring, SpringBoot] Controller에서 데이터 받는 방법 (@RequestBody, @RequestParam, @ParthVariable)
프로그래밍/Java2024. 5. 27. 21:49[Spring, SpringBoot] Controller에서 데이터 받는 방법 (@RequestBody, @RequestParam, @ParthVariable)

어느날 문득 정리하고 데이터 받는 방법에 대해 정리하고 싶어졌다 !서버에서는 요청한 데이터를 전달 받는 방법은 다양하다 ! MVC 패턴에서 주로 사용하는 어노테이션을 위주로 정리해 보려합니다 ! @RequestBody@RequestBody는 클라이언트가 보내는 HTTP 요청 본문(JSON, XML 등)을 HttpMessageConverter를 통해 타입에 맞는 자바 객체로 변환해줍니다 !@PostMapping("/test")@ResponseBody // return datapublic String test(@ReqeustBody data) { ...} @RequestParam@RequestParam은 클라이언트가 요청할 때 쿼리스트링을 통해 넘어오는 매개변수를 추출할 수 있습니다 !required가 t..

[Java, 자바] no main manifest attribute in 에러
Error2024. 5. 1. 14:33[Java, 자바] no main manifest attribute in 에러

에러Linux에서 jar파일 실행 시 no main mainfest attribute in 에러가 발생하였다 !찾아보니 JVM이 main메서드를 찾지 못해 발생하는 에러였다. 해결방법Spring Boot 2.5.0 이상 버전과 gradle을 사용 시 빌드할 경우 아래와 같이 jar파일이 2개 생성된다고합니다. 1. 앱이름.jar -> bootJar Task로 생성된 것2. 앱이름-plain.jar -> build Task로 생성된 것 첫 번째 jar파일은 해당 프로젝트에 필요한 모든 의존성이 같이 추가된 것으로 모두 정상적인 형태로 나오는 반면 plain.jar파일은 의존성을 제외하고 딱 프로젝트에 있는 자원들만 jar파일로 만든 것으로 spring 관련 의존성이 빠저 main메서드의 위치가 나오지 않습..

[Java, 자바] static의 의미와 사용법
프로그래밍/Java2024. 4. 16. 19:00[Java, 자바] static의 의미와 사용법

Static이란 ?static은 정적이라는 뜻으로 '고정된'이란 의미를 가지고 있습니다. Static이라는 키워드를 사용하여 Static변수와 Stitic메서드를 만들 수 있는데 다른말로 정적필드와 정적 메소드라고도 하며 이 둘을 합쳐 정적 멤버라고 합니다.정적필드와 정적 메서드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버입니다. 그렇기에 클래스 로더가 클래스를 로딩해서 메서드 메모리 영역에 적재할 때 클래스별로 관리됩니다. 따라서 클래스의 로딩이 끝나 즉시 바로 사용할 수 있습니다. 정적(Static) 멤버 생성Static 키워드를 통해 생성된 정적멤버들은 Heap영역이 아닌 Static영역에 할당됩니다. Static 영역에 할당된 메모리는 모든 객체가 공유하여 하나의 멤버를 어디서든..

image