본문 바로가기

JAVA7

[JAVA] LocalDateTime vs. Instant (feat. ZonedDateTime, OffsetDateTime) java.time 패키지를 공부하는 중, Instant 클래스에 대해 처음 알게되었다. 평소 프로젝트를 할 때는 LocalDateTime 을 사용했는데, Instant를 사용해야 좋은 경우는 무엇이 있는지 궁금증이 생겼다. 살펴보던 와중 LocalDateTime 을 엔티티 칼럼으로 지정한 필드는 DB에 무슨 형식으로 저장했더라... 하고 살펴보니 냅다 문자열로 저장했거나 datetime 형식이다. datetime 형식은 SQL 표준에 맞지않고 정확도가 떨어져 공식문서에서는 권장하지 않는다고 하니 다음번에 프로젝트를 할 땐 DB쪽 형식도 제대로 찾아보고 설정해야겠다 😅ㅎ java.time 패키지의 핵심 클래스 날짜와 시간을 하나로 표현하는 Calendar 클래스와 달리, java.time 패키지에서는 날짜.. 2023. 1. 17.
[JAVA] 다형성과 형변환 (상속과 참조변수, Up-casting, Down-casting) 다형성이란? 객체지향개념에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 구체적으로, 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다 는 것이다. class Tv { boolean power; int channel; void power() { power = !power; } void channelUp() { ++channel; } void channelDown() { --channel; } } class CaptionTv extends Tv{ String text; void caption(){...} } 위와 같은 상속 관계의 클래스가 정의되어.. 2023. 1. 3.
[JAVA] 가변인자(varargs)와 오버로딩 기존에는 메서드의 매개변수 개수가 고정적이었으나 JDK1.5부터 동적으로 지정해 줄 수 있게 되었으며, 이 기능을 '가변인자(variable arguments)' 라고 한다. 가변인자는 '타입... 변수명' 과 같은 형식으로 선언하며, PrintStream 클래스의 printf()가 대표적인 예이다. public PrintStream printf(String format, Object... args){...} 위와 같이 가변인자 외에도 매개변수가 더 있다면, 가변인자를 매개변수 중에서 제일 마지막에 선언해야한다. (컴파일 에러 발생) 가변인자인지 아닌지 구별할 방법이 없기 때문에 허용하지 않는다. 가변인자는 내부적으로 배열을 이용한다 따라서 가변인자가 선언된 메서드를 호출할 때마다 배열이 새로 생성된다... 2023. 1. 3.
[JAVA] 변수와 메서드 (선언위치, JVM 메모리구조, static과 인스턴스) 선언위치에 따른 변수의 종류 변수의 종류 선언위치 생성시기 클래스(static) 변수 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스(instance) 변수 인스턴스가 생성되었을 때 지역(local) 변수 클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) 변수 선언문이 수행되었을 때 1. 인스턴스 변수 클래스 영역에 선언, 클래스의 인스턴스를 생성할 때 만들어진다 인스턴스 변수의 값을 읽어 오거나 저장하기 위해서는 먼저 인스턴스를 생성해야함 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있음 2. 클래스 변수 인스턴스 변수 앞에 static을 붙여 클래스 변수 선언 독립적인 저장공간을 갖는 인스턴스 변수와 달리, 클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)을 공유 한 클래.. 2023. 1. 3.
[JAVA] empty()와 isEmpty() 기본적인 스택 관련 알고리즘 문제를 풀던 도중, 스택이 비어있는 지 확인하기 위해 다음과 같이 코드를 작성하다 의문이 생겼다. empty() 와 isEmpty() 의 차이가 무엇인가에 대한 의문. Stack과 컬렉션 프레임워크 JDK 1.0에서는 컬렉션 프레임워크가 존재하지 않았다. Stack, Vector, HashTable 은 컬렉션 프레임워크 이전부터 자바에서 제공하는 기본 데이터 구조이다. JDK 1.2에서 컬렉션 프레임워크가 추가되었으며 List, Map 과 같은 표준 인터페이스가 도입되었다. 그러나 이러한 표준 컬렉션 인터페이스에서는 메소드들이 다른 규약(convention)으로 명명 되었다. 이러한 변화는 JDK 1.2에 도입된 자바 빈 표준에 영향을 받은 것으로 보인다. 이러한 메서드 이름.. 2022. 7. 28.
[JAVA] 컬렉션 프레임웍(Collections Framework) 본 게시글은 남궁성 님의 Java의정석 을 정리한 내용입니다. 컬렉션 프레임웍이란, '데이터 군을 저장하는 클래스들을 표준화한 설계'를 뜻한다. 컬렉션(Collection)은 다수 데이터, 즉 데이터 그룹을, 프레임웍은 표준화된 프로그래밍 방식을 의미한다. JDK1.2 이전까지는 Vector, Hashtable, Properties와 같은 컬렉션 클래스, 다수의 데이터를 저장할 수 있는 클래스,들을 서로 다른 각자의 방식으로 처리해야 했으나 JDK1.2부터 컬렉션 프레임웍이 등장하면서 다양한 종류의 컬렉션 클래스가 추가되고 모든 컬렉션 클래스를 표준화된 방식으로 다룰 수 있도록 체계화 되었다. 컬렉션 프레임웍의 장점 다수의 데이터를 다루는 데 필요한 다양하고 풍부한 클래스를 제공하여 프로그래머의 짐을 덜.. 2022. 7. 28.