Backend/Java 15

Integer.valueof() vs Integer.parseint() 차이 및 소스분석

자바에서 문자열을 int형 타입으로 형변환할 때, 흔히 Integer.parseInt() 또는 Interger.valueOf() 메서드를 사용한다. 이 둘의 차이점과 실제 Java API 소스를 가볍게 살펴보려고 한다.Integer.valueof() vs Integer.parseint() 차이parseInt() : int 타입을 반환valueOf() : Integer 래퍼(wrapper) 객체를 반환Java 내부 API 까보기 Integer.parseInt 메서드는 기본데이터 타입인 int 값으로 반환한다.public static int parseInt(String s) throws NumberFormatException { return parseInt(s, 10);} Integer.valueOf ..

Backend/Java 2024.05.17

JAVA 오버로딩, 오버라이딩을 통해 다형성 구현하기

다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것이다. 자바에서는 다형성을 위해 부모클래스 타입의 참조변수로 자식클래스 타입의 인스턴스를 참조할 수 있도록 한다. 오버로딩과 오버라이딩을 통해 다형성을 구현할 수 있다. 오버로딩과 오버라이딩의 비교 오버로딩과 오버라이딩은 그 단어의 유사함으로 인해 혼동하기 쉽다. 하지만 그 개념은 확실히 다르며, 그 차이점을 아는 것이 중요하다. 오버로딩(overloading)은 새로운 메서드를 정의하는 것이고, 오버라이딩(overriding)은 상속받은 기존의 메서드를 재정의하는 것이다. 오버로딩 오버라이딩 메서드명 동일 동일 매개변수 및 타입 다름 동일 리턴 타입 관계 없음 동일 다형성을 구현하는 방법 오버로딩 : 메서드명이 같지만 ..

Backend/Java 2024.03.20

자바 컬렉션 프레임워크(Java Collection Framework) 정리

자바 컬렉션 프레임워크(Java Collection Framework)배열을 보완하는 컬렉션(Collection)컬렉션(Collection)은 여러 요소들을 담을 수 있는 자료구조이다. 즉, 다수의 데이터 그룹이며 컨테이너(Container)라고도 부른다. 컬렉션은 배열과 비슷하지만, 크기가 고정된 배열을 보완하여 Re-sizable한 특성을 가진다. 자바 초창기에는 Vector, Stack, HashTable 등의 컬렉션 클래스만 제공했으나 자바 1.2 이후 표준적인 방식으로 컬렉션을 다루기 위한 컬렉션 프레임워크(Collection Framework)가 등장하였다. 모든 컬렉션 클래스명은 구현한 인터페이스명이 포함되어 있어서 바로 클래스의 특징을 바로 알기 쉽다. (예를 들어 HashMap 클래스는 ..

Backend/Java 2023.12.18

자바에서 줄바꿈 \n 개행문자 치환하는 예제

개행문자(newLine) 개행문자는 컴퓨터에서 줄바꿈을 나타내는 제어 문자를 말하며, 줄바꿈문자라고도 부른다. 개행문자에는 크게 두가지 종류가 있다. LF (new Line Feed) 라인피드, 뉴라인으로 부르며, 커서를 한 칸 아래로 이동해 새로운 라인을 추가한다. \n 아스키코드 : 10 CR (Carriage Return) 캐리지리턴, 리턴으로 부르며, 커서를 맨 왼쪽으로 이동(시작 위치로 복귀)한다. 엔터키와 동일하다. \r 아스키코드 : 13 개행문자는 운영체제마다 다름 윈도우 : CRLF (\r\n) 맥 : CR (\r) 유닉스 : LF (\n) 자바 개행문자 사용하기 자바에서 개행을 처리할 때 \r\n 으로 처리하는 것이 가장 간단한 방법이긴 하지만, 개행문자는 운영체제별로 다르게 처리될 수..

Backend/Java 2023.12.06

Java에서 jsoup을 이용하여 HTML parsing 하기

자바에서 jsoup 라이브러리는 HTML 문서를 파싱 하여대부분의 사이트의 원하는 정보만 뽑아낼 수 있는 라이브러리이다. 파이썬의 BeautifulSoup와 비슷한 기능이다.jsoup 라이브러리 추가(pom.xml) org.jsoup jsoup 1.15.3 파싱할 대상 페이지 찾기w3schools 사이트에서 상단 메뉴에 나열된 프로그래밍 언어 목록을 파싱 하여 가져오려고 한다. F12로 개발자도구를 열어 메뉴를 선택해서 가져올 selector 키워드를 찾는다. 태그로 감싸져 있는 목록을 가져올 것이다. 참고로 홈페이지가 리뉴얼되어 모양이 바뀌면 selector 역시 바뀔 수 있다. Parser 클래스HTML을 파싱 하여 페이지 정보를 가져올 클래스를 작성하자. selector 변수는 CSS selecto..

Backend/Java 2023.11.28

Java에서 Generator 규칙에 따라 거래코드 만들기 (SecureRandom 난수 생성)

거래코드 생성 규칙이 아래와 같다고 가정하자. => 거래날짜yyyyMMdd(8)+난수(10) Generator 파일을 만들어서 타 서비스에서 거래코드를 쉽게 가져다 쓸 수 있도록 소스를 만들어보았다. 이때 난수는 SecureRandom 클래스를 이용해서 알파벳, 숫자내에서 랜덤으로 10자리 생성된다.Generator.javaimport java.security.SecureRandom; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Generator { private final static String CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr..

Backend/Java 2023.11.24

Java에서 UUID를 이용해서 난수 생성하기 (feat. SecureRandom)

UUID UUID (Universally Unique Identifier) 는 말그대로 범용 고유 식별자로 사용할 수 있는 ID를 말한다. 보통 다른 값과 중복되지 않는 유니크한 값을 생성해야 할 때 사용하는데, 예를 들어 세션 식별자, 쿠키 값, 무작위 데이터베이스 키 등에 사용하곤 한다. UUID를 통해 생성된 난수는 중복될 수도 있다. 하지만 중복되는 확률이 굉장히 희박해서 사실상 중복이 아니라고 볼 수 있는 셈이다. UUID를 활용한 예제를 보자. import java.util.UUID; public class Sample { public static void main(String[] args) { UUID uuid = UUID.randomUUID(); System.out.println(uuid...

Backend/Java 2023.11.23

Java에서 서버 호스트(host) 정보 가져오는 법

로컬, 개발, 운영 서버간 다르게 동작을 처리해야 할 경우가 있다. 이럴 때 InetAddress.getLocalHost()를 이용하여 호스트 정보를 가져와서, 로컬 서버인지 구분할 수 있다. 호스트 정보 가져오는 예제 import java.net.InetAddress; import java.net.UnknownHostException; import lombok.extern.slf4j.Slf4j; public class Sample { public static void main(String[] args) { System.out.println("호스트 정보 : " + getHostInfo()); } public static String getHostInfo() { String hostName = ""; S..

Backend/Java 2023.11.22

Oracle JDK와 Open JDK 차이점 (feat. Java 유료논쟁)

자바는 어디에서나 실행할 수 있도록 개발된 프로그래밍 언어이다. 최초 썬 마이크로시스템즈에서 출시된 이후, 2010년 오라클에서 자바를 인수하게 되었다. 몇 년 전 '자바가 유료화가 된다(!)'는 뜨거운 논쟁이 있었다. 결론부터 말하자면 자바 언어는 GPL 라이선스로 무료이다. 그렇다면 어떤 것이 유료화가 된다는 것일까? 바로 JDK이다. JDK 자바 언어로 애플리케이션을 개발하려면 JDK 설치는 필수적이다. JDK(Java Development Kit)는 컴파일러, 디버깅 등 자바 애플리케이션 개발에 필요한 툴이 포함되어 있으며, 자바 실행환경인 JRE와 가상머신인 JVM도 포함되어 있다. Java 프로그램을 실행하기 위해서는 아래의 핵심 기능이 필요하다. Java로 작성한 프로그램을 컴파일해 주는 J..

Backend/Java 2023.09.17

Java 8, 11, 17 버전별로 추가된 기능 알아보기

자바에서 가장 많이 사용되는 버전은 자바 8이다. 아직까지도 실무에서는 Java 8만 계속 사용하고 있지만, 2023년 9월 현재는 자바 21 버전까지 출시가 된 상태이다. 대표적인 Java LTS 버전은 자바 8, 11, 17가 있는데, 스프링부트 3 버전부터 자바 17 이상만 지원되면서 최근 자바 8에서 17 버전으로 전환되는 비율이 많아졌다. 각 버전별로 추가된 기능들과 예제를 살펴보면서 대략적인 특징을 살펴보자. Java 8 에서 추가된 기능 2014년 릴리즈 오라클이 Sun Microsystems 인수 후 출시한 첫 번째 LTS 버전의 자바 오라클사의 유료 버전인 Oracle JDK와 오픈소스 기반의 무료 버전인 Open JDK로 나뉨 (뜨거웠던 Java 유료 논쟁) new Date and Ti..

Backend/Java 2023.09.16