본문 바로가기

Backend Study/Java

(19)
[Java] Collection이란? 1. Collection이란? 자바 collection은 많은 데이터 요소를 효율적으로 관리하기 위한 자료구조를 말하며, 이들을 묶어 그룹화한 객체이다. = 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해놓은 것이다. 자바 버전 8부터 도입되었고, ArrayList, LinkedList, HashMap 등이 여기 포함된다. 2. Collection의 종류 컬렉션의 종류는 ArrayList, LinkedList, Vector, Stack, HashSet, TreeSet, HashMap, TreeMap 등이 있으며, 아래와 같은 자료구조 유형에 따라 구분된다. 자바 컬렉션 프레임워크는 몇 가지 인터페이스를 통해 다양한 컬렉션을 이용할 수 있도록 하는데, 크게 3가지 타입으..
[Java ] JVM, JRE, JDK 차이점 자바 개발을 하면 JVM, JRE, JDK에 관해 많이 들어봤을거다! 자바의 특징을 짧게 정리하고, 이 3가지에 대해 알아보자. 😊 1. 자바는 플랫폼에 독립적이다? 프로그래밍 언어는 기본적으로 [컴파일]되는 언어와 [인터프리트]되는 언어로 나누어진다. [컴파일 언어]는 프로그래밍 언어로 코드를 짜고 나서 실행 전에, 컴퓨터가 이해할 수 있는 언어로 번역 작업을 해서 미리 가지고 있다. [인터프리트 언어]는 코드를 컴퓨터에 그대로 전달하고, 인터프리터가 실시간으로 통역을 한다. 자바와 C계열등의 언어들은 컴파일 언어에 속하는데, 자바는 기존 컴파일 언어들과 차이점이 있다! 컴퓨터도 종류마다 쓰는 언어가 다른데 (ex. 윈도우, 맥, 리눅스 등) 기존 컴파일 언어들은 번역본을 따로 컴파일하여 다르게 보내야..
[Spring boot] 스프링부트의 어노테이션들 스프링부트에서 사용되는 어노테이션들을 알아보자! 1. Annotation이란? 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다. 어노테이션의 용도 1) 컴파일러에게 코드 작성 문법 에러 체크 2) 소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공 3) 실행시(런타임시) 특정 기능을 실행하도록 정보 제공 2. @ComponentScan @ComponentScan 어노테이션은 @Component 어노테이션 및 streotype(@Service, @Repository, @Controller) 어노테이션이 부여된 class들을 자동으로 scan하여 bean으로 등록해주는 역할을 한다. config 등 설정 파일에서 주로 사용한다. 위 코드에서는 @Conf..
[JAVA] 오토 박싱 & 오토 언박싱 자바에는 기본 타입과 Wrapper 클래스가 존재한다. - 기본 타입: int, long, float, double, boolean - Wrapper 클래스: Integer, Long, Float, Double, Boolean 박싱: 기본 타입 데이터에 대응하는 Wrapper 클래스로 만드는 동작 언박싱: Wrapper 클래스에서 기본 타입으로 변환 //박싱 int i = 10; Integer num = new Integer(i); //언박싱 Integer num = new Integer(10); int i = num.intValue(); Jdk 1.5부터는 자바 컴파일러가 박싱과 언박싱을 필요한 상황에 자동으로 처리를 해준다. // 오토 박싱 int i = 10; Integer num = i; // 오..
[JAVA] 람다와 스트림 1.1 람다식이란? 함수를 간단한 식(Expression)으로 표현하는 방법이다. int max(int a, int b){ return a>b ? a : b ; } // expression으로 표현 (a,b) -> a > b ? a : b [매개변수] -> [내용] * 함수와 메서드의 차이 함수는 일반적 용어이고, 메서드는 객체지향개념 용어이다. 함수는 클래스에 독립적이며, 메서드는 클래스에 종속적이다. 함수는 여러 문장들이 하나의 기능을 구현하도록 구성한 것이라고 할 수 있다. 그 함수 중에서 클래스 내부에 정의한 함수를 메소드라고 부르는 것이다. 1.2 람다식 작성하기 예시) int max(int a, int b){ return a > b ? a : b ; } - 메서드의 이름과 반환타입을 제거하고 ..
[JAVA] 힙 메모리 사용률 1. 자바의 힙 공간이란? 자바 프로그램이 시작되면 JVM 즉 Java Virtual Machine이 운영 체제에서 일부 메모리를 가져온다. JVM은 모든 요구사항에 이 메모리를 사용하며 이 메모리의 일부를 JAVA 힙 메모리라고한다. 자바의 힙은 일반적으로 주소 공간의 맨 아래이 있으며 위쪽으로 이동을 한다. new 연산자를 사용하여 객체를 만들 때 마다 또는 다른 방법으로 객체에 힙에서 메모리가 할당되고 객체가 죽거나 가비지가 수집되면 메모리가 자바의 힙 공간으로 돌아간다. 2. 자바 힙 및 가비지 수집 우리가 알고 있듯이 객체는 힙 메모리 내부에 생성되고 가비지 컬렉션은 자바 힙 공간에서 죽은 객체를 제거하고 메모리를 자바의 힙으로 되돌리는 프로세스이다. 가비지 수집을 위해서 힙은 New Gener..
[JAVA] static 변수와 메서드 1.1 static 변수 class kimkyuriFamily{ String lastname="김"; } public class Sample { public static void main(String[] args){ kimkyuriFamily kim1 = new KimkyuriFamily(); kimkyuriFamily kim2 = new kimkyuriFamily(); } } 위 코드는 김규리 가족을 나타내는 클래스이다. 위처럼 클래스를 만들고 객체를 생성한다면, 객체마다 lastname을 저장하기 위한 메모리가 별도로 할당된다. 하지만 lastname은 모든 객체의 공통값이기 때문에, 메모리가 별도로 할당될 필요는 없다. 이렇게 값이 변하지 않는다면 static 변수를 사용하는 것이 유리하다. cla..
[JAVA] 제네릭 (Generic) 1.1 제네릭이란? - 컴파일 시 타입을 체크해주는 기능이다. - 형변환의 번거러움을 줄여주고, 타입을 체크해주므로 코드가 간결해진다. 즉, 데이터 형식에 의존하지 않고, 하나의 값이 다른 데이터 타입들을 가질 수 있도록 하는 방법이다. 1.2 활용 만약, 어떤 자료구조를 만들어 배포하려고할 때 String, Integer 모두 지원하고 싶다고 가정해보자. 이 때 String, Integer에 대한 클래스 모두 만드는 것은 비효율적이다. 이를 해결하기 위해 제네릭을 사용한다. 아래 타입들이 많이 사용된다. (암묵적인 규칙일 뿐 반드시 따라야하는 것은 아니다.) 타입 설명 Type Element Key Value Number 1.3 사용방법 # Object 객체 사용 class Box { Object it..