목록JAVA (42)
코딩항해기
OOP 5가지 원칙SOLID 원칙은 객체 지향 설계의 핵심 원칙으로, 소프트웨어의 유지보수성과 확장성을 높이기 위한 지침이다. 단일 책임(SRP), 개방-폐쇄(OCP), 리스코프 치환(LSP), 인터페이스 분리(ISP), 의존성 역전(DIP) 원칙을 통해 더 robust하고 flexible한 코드 구조를 만들 수 있다. SRP (Single Responsibility Principle, 단일 책임 원칙)한 클래스는 하나의 책임만을 가져야하며, 클래스는 단 하나의 변경 이유만을 가져야한다. 각 클래스는 하나의 특정 기능에 집중해야하며, 여러 책임을 동시에 지지 않아야 한다는 원칙이다. OCP (Open/Closed Principle, 개방-폐쇄 원칙)소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에는 ..
스택 Stack스택은 쌓이다는 뜻을 가진 용어로 데이터를 순서대로 쌓는 자료구조, 컬렉션프레임워크이다. 나중에 들어온 데이터가 제일 먼저 빠져나가는 후입선출 LIFO 구조로 되어있어 가장 나중에 들어온 데이터를 먼저처리하는 취소같은 경우에 사용된다. LIFOLast In First Out 스택의 특징후입선출 (LIFO : Last In First Out) 구조 : 먼저 들어온 데이터가 나중에 빠져나가는 구조단방향 입출력 구조 : 데이터의 들어오는 방향과 나가는 방향이 같다.데이터를 하나씩만 넣고 뺄 수 있다.깊이 우선 탐색(DFS)에 이용된다.재귀 함수의 동작 흐름과 같은 구조를 가진다. 스택 사용선언Stack stack = new Stack(); //컬렉션프레임워크 중 하나로 제네릭을 선언해야한다 값..
가변인자 Variable Arguments (...)가변인자는 메서드의 매개변수를 동적으로 처리 할 수 있도록 한다. 가변인자를 사용하면 메서드 호출 시 전달되는 인자의 개수를 동적으로 변경할 수 있다. JDK 1.5부터 사용 가능하다. printf()메서드가 가장 대표적인 예이다. 가변인자 문법타입... 변수명 가변인자는 매개변수 중에서 제일 마지막에 선언해야한다. 앞쪽에 선언할 경우 컴파일 에러가 발생한다. 활용 예시public class Main { public static void main(String[] args) { System.out.println(concatenate()); // 인자가 없음 System.out.println(concatenate("jo"..
JAVA 8 버전 이후로는 time 패키지의 클래스를 사용해 날짜와 시간을 표현할 수 있다.java.time.LocalDate java.time.LocalTime java.time.LocalDateTime java.time.LocalDateLocalDate 클래스는 날짜를 표현하는 클래스이다. LocalDate.now();- 현재 날짜를 가져온다. LocalDate.now(ZoneId.of("Europe/Paris"));날짜를 Europe/Paris의 타임존을 적용해 가져온다. LocalDate 포맷 적용하기DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");now.format(formatter);- DateTimeFormat..
UUID Universally Unique Identifier128-bit의 고유 식별자이다. UUID는 중앙 시스템에 등록하고 발급하는 과정이 없어 상대적으로 더 빠르고 간단하게 만들 수 있다는 장점이 있다. 하지만 완전히 고유하지 않을 확률이 있지만, 1조 개의 UUID 중에 중복이 일어날 확률은 10억분의 1로 낮다. UUID의 구조 문자열로 이뤄져 있으며 총 길이는 36자리다. 5개의 버전이 있는데, 값을 생성하는 방식이 각각 다르므로 사용에 알맞은 버전을 사용하는 것이 좋다. 완전히 고유하고 랜덤한 값을 사용하고 싶다면 버전 4를 사용할 수 있다. UUID 사용UUID는 자바 외에도 대부분의 언어에서 사용할 수 있다. Java (randomUUID() => 버전4)import java.util..
JavaDocAPI 주석은 /** */으로 이뤄지며 해당 클래스에 대한 정보를 관리할 수 있다.주요한 메서드 위에 API 주석을 작성하면 메서드에 대한 주석도 자동으로 작성된다. 해당 주석의 역할은 JAVA 소스코드에서 API문서를 HTML 태그 형식으로 작성하게 해주는 도구이다. 또한 컴파일 시 모든 주석은 지워지므로 프로그램 성능에는 영향이 가지 않는다. JavaDoc Tags어노테이션내용@version구현체 버전@author작성자@deprecate해당 구현체가 곧 삭제, 업데이트 중단을 의미@since해당 구현체가 추가된 버전@see외부 링크나 텍스트, 다른 필드나 메서드를 링크할 때 사용@linksee와 동일한 기능, 참조에 대한 링크 제공@exception발생할 수 있는 Exception 정의@..
File 관련 메서드메서드내용반환boolean exists()파일이나 디렉토리가 존재하는지 확인boolean boolean createNewFile()새로운 파일을 생성 (파일이 이미 존재하면 false 반환)boolean boolean delete()파일이나 빈 디렉토리를 삭제boolean String getName()파일 이름을 반환파일 이름 (String)String getPath()파일 경로를 반환파일 경로 (String)boolean isDirectory()해당 경로가 디렉토리인지 확인boolean boolean isFile()해당 경로가 파일인지 확인boolean long length()파일의 크기 (바이트 단위)파일 크기 (long)boolean mkdir()새로운 디렉토리 생성boolean..
Cookie웹 서버가 생성해 웹 브라우저로 전송하는 작은 정보 파일이다. 브라우저는 쿠키를 통해 사용자의 장치를 인식할 수 있으며 일부 데이터를 저장할 수 있다. 쿠키에는 일반적으로 만료일이 있어 정해진 기간 동안 정보를 저장할 수 있다. 이렇게 저장된 정보를 통해 사용자 경험에 맞춤화된 서비스를 제공할 수 있다. 저장된 쿠키는 사용자 정보, 사용자 개인 설정, 트래 등에 사용된다. 분류로는 세션 쿠키, 영구 쿠키, 인증 쿠키, 추적 쿠키, 좀비 쿠키(Evercookies), 타사 쿠키 등 다양한 종류를 가지고 있다. 이처럼 쿠키는 다양한 활동 및 정보를 기록하는데 사용될 수 있기 때문에 사용자 개인정보 노출의 우려가 있다. EU의 ePrivacy Directive와 같은 일부 개인정보 보호법에서는 쿠키..
package test;public class Client { public static void main(String[] args) { System.out.println(args[0]); System.out.println(args[1]); }} main메서드를 살펴보면 인자로 문자열타입의 배열인 args를 받아오고 있다.이 args를 출력하면 어떻게 될지 정리하고 eclipse와 intellij에서 args를 설정하는 법을 정리한다. 먼저 설정 없이 프로그램 실행을 하면 에러가 발생한다. 들어간 값이 없어 배열의 길이를 초과한 값을 부르고 있다는 ArrayIndexOutOfBoundsException이 발생한다.값을 넣는 설정을 하지 않으면 args는 사용할 수 없다...
Enum 열거형 (Enumeration)일련된 고정된 값(상수)를 나타내기 위한 특별한 데이터 유형이다. 기본적으로 Enum에 열거된 상수들은 추가적인 객체 생성 없이 외부에서 사용가능하고, 불변이기에 상수 앞에 아무것도 붙지 않지만 public static final이 생략되어있다. 그리고 상수이기 때문에 대문자로 적는 것을 원칙으로 한다. 장점으로는 허용 가능한 값을 제한할 수 있고, 수정 시 Enum만 수정하면 되기 때문에 변경 범위가 최소화된다. 컴파일 시 데이터 타입 및 유효성 체크가 가능하며 코드가 단순해지고 가독성이 좋아진다. 인스턴스의 생성과 상속을 방지하여 상수의 안전성이 보장된다. Enum 예시public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY..