본문 바로가기

JAVA

(9)
[JAVA] 자바 날짜, 기간 계산 (SimpleDateFormat, Calendar 사용하기) 자바에서 특정 날짜의 1일전, 1개월전, 1년전 날짜를 알고 싶을때 어떻게 하면 될까? (또는 1일후, 1년 후) 프로젝트 진행 중 휴면계정 처리를 하다보니, 특정 회원이 마지막으로 로그인한 날짜에서 11개월동안 로그인을 하지 않았을 경우에는 "휴면계정 처리 예정" 메일을 발송하도록 하고, 메일 발송 후에도 로그인을 하지않아서 12개월동안 미로그인한 회원은 휴면계정으로 처리하고자 했다. DB에서 마지막 로그인 날짜를 가져오고 오늘 날짜도 미리 세팅을 해둔다. 나는 DB에서 가져올때 "yyyy-MM-dd"의 형식으로 가져왔고 자바에서 dateFormat을 만들때도 같은 형식으로 만들어줬다. Date date = new Date(); SimpleDateFormat dateFormat = new SimpleD..
[JAVA] (Collections ①) ArrayList / LinkedList List에는 LinkedList와 ArrayList가 있는데, 먼저 두 List의 구조를 보면 아래와 같다. 1. ArrayList : n개의 자료를 저장할 때 자료들을 하나의 연속적인 묶음으로 묶어 저장하는 구조. => 위의 구조에서 "20"과 "30" 사이에 "10"이라는 값을 삽입하려면 먼저 삽입할 값의 위치를 기준으로 그 뒤의 자료들이 모두 뒤로 이동하는 연산을 수행한 뒤 삽입할 위치에 값을 삽입한다. => 중간의 자료 하나를 삭제하려면 삭제할 자료가 위치한 인덱스의 자료를 삭제한 뒤 삭제한 자료의 위치를 기준으로 그 이후 자료들을 앞으로 땡기는 연산을 수행한 뒤 List의 맨 마지막은 비어있는 상태로 완료한다. (메모리가 낭비될 수 있음) * 특징 - 사이즈가 고정되어 있음 - 자료를 추가로 삽..
[JAVA] 5 SOLID programming principles 1. Single Responsibility principle (SRP) : 단일 책임 원칙 객체는 단 한개의 책임(역할)만을 가져한다. 즉, 객체를 변경해야 하는 이유는 단 하나여야 한다는 원칙. 2. Open-Closed principle (OCP) : 개방-폐쇄 원칙 확장(extension)에 대해서는 열려있고(Open) 수정(modification)에 대해서는 닫혀있어야(Closed) 한다는 원칙. - 확장에 대해 열려 있다는 것은 모듈의 동작을 확장할 수 있다는 것이다. 애플리케이션의 요구사항이 변경될 때 이 변경에 맞게 새로운 동작을 추가해 모듈을 확장할 수 있다. - 수정에 대해 닫혀 있다는 것은 모듈의 소스코드나 바이너리 코드를 수정하지 않아도 모듈의 기능을 확장하거나 변경 할 수 있다는 ..
[JAVA] 자바 Project / Package / Class / Methods / Variable 명명 규칙 1. Project (프로젝트) - 대/소문자 구분없이 시작 가능 - 대문자 사용을 권장함 2. Package (패키지) - 소문자로 시작 - 모두 소문자 사용을 권장 - 가급적 한 단어 사용을 권장 - 여러사람과 협업하는 경우 표준 패턴을 따름 - 표준 패턴: com.회사이름(혹은 개인이름).프로젝트명.상위패키지.하위패키지.클래스 3. Class (클래스) - 대문자로 시작 - 명사로 시작 - 두번째 단어부터 소문자도 가능하나 대문자 시작을 권장함 - ex) CastingTest , ValueTest , ThreadTest 등 4. Interface (인터페이스) - 대문자로 시작 - 형용사 - ex) Runnable , Remote 등 5. Methods (메소드) - 소문자로 시작 - 동사로 시작 ..
[JAVA] UpCasting / DownCasting 참조형 데이터의 형변환에서 UpCasting(업캐스팅) 과 DownCasting(다운캐스팅)에 대해 알아보자. 업캐스팅과 다운캐스팅의 경우 서로 연관이 있어야 변환이 가능하다. 예를 들면, - 상속관계인 경우 - 인터페이스로 확장된 경우 이런 관계를 맺고 있는 클래스일 때 업캐스팅과 다운캐스팅이 되는 것이다. 예제를 통해 자세히 살펴보자. 클래스 Person이 있고 클래스 Student가 있다. Student는 Person을 상속받은 하위클래스라고 하자. Person person = new Person( ); Student student = new Student( ); 각각 클래스 타입의 객체를 위와 같이 생성하는 것은 당연히 문제가 없다. Person 타입의 데이터인 person변수는 실제 데이터인 n..
[JAVA] Casting (형변환) 자바에서 데이터형은 크게 기본형(Primitive Type)과 참조형(Reference Type)이 있다. 1. 기본형 (Primitive Type) 기본형은 실제 값을 저장하는 공간이다. 기본형에는 총 8가지가 있다. - 논리형: boolean - 문자형: char - 정수형: byte, short, int, long - 실수형: float, double 1. 참조형 (Reference Type) 참조형은 실제 값이 저장된 곳의 주소를 참조하여 저장하는 것으로, 한마디로 객체의 주소를 가지고 있는 자료형이다. 자바에서 위의 기본형 8가지를 제외한 모든 것이 참조형이다. 자바에서 제공되는 클래스나 사용자가 만든 클래스 모두 자료형으로 사용될 수 있고, 만약 클래스를 자료형으로 사용하여 변수를 만들었을 경..
[JAVA] Access Modifiers (접근제한자) (public, protected, default, private) 오늘은 JAVA의 접근 제한자 (접근 제어자, access modifiers)에 대해 알아보자. 자바의 접근제한자에는 4가지(public, protected, default(none), private)가 있다. · public : 어디서나 접근 가능 · protected : 동일 클래스나 패키지에서 접근 가능 / 상속받은 하위클래스에서 접근 가능 · default (아무것도 적지X) : 동일 클래스나 패키지에서 접근 가능 · private : 동일 클래스에서만 접근 가능 접근제한자 테스트를 위해 IntelliJ에서 다음과 같이 sample을 만들어 보았다. 패키지 2개, 각 패키지 내에 클래스는 2개를 만들었다. (총 클래스 4개) private으로 선언된 변수는 동일 클래스에서만 접근이 가능하기 때문에..
[JAVA] Java for Absolute Beginners (PDF) 교재 소개 및 PDF viewer 추천 Java for Absolute Beginners 라는 교재를 가지고 진행된 사내 Java 기초 교육 1일차. 교육을 진행해주실 차장님께서 위 교재는 무료로 PDF 다운이 가능하고 자바 기초 교재 중 나름대로 괜찮아서 선정하셨다고 한다. 책 제목 그대로 beginner들을 위한 책으로 Java 기초부터 설명하고 있다. (참고로 본 교재는 원서이다) 목차를 보면 이 책이 초짜를 위한 책임을 더 확실히 알 수 있다. (총 ch13까지 구성되어 있다) 두 번째 챕터부터는 자바 설치, 환경변수 설정, 인텔리J 설치 등등에 대해 설명한다. 관심있는 분들은 여기를 클릭 해서 다운로드 받으시길! 그리고 차장님께서 추천해주신 괜찮은 pdf viewer 하나를 소개할까 한다. Evince 는 무료로 다운로드 가능하고 아..
[JAVA] JSON (jackson-databind) 사용 1. Jackson 이란 ? : Java Object를 JSON으로 변환하거나 JSON을 Java Object로 변환하기 위한 JAVA 라이브러리 2. Jackson 특징 - Stream 형식으로 데이터를 분석/생성하여 성능이 좋다 - XML의 DOM(Document Object Model)처럼 Node 형태로 데이터를 다룰 수 있어 유연성이 좋다 - POJO(Plain Old Java Object) 기반의 자바 객체들을 JSON으로 변환시킬 수 있다 3. 라이브러리 추가 / Maven 설정 : jackson-databind 라이브러리는 jackson-core 및 jackson-annotation 라이브러리의 의존성을 포함하기 때문에 Maven을 사용하는 경우 jackson-databind 라이브러리만 ..