프로그래밍 언어/Java 120

[Java] 자바 열거형(enums)이란?

자바 열거형이란? 열거형(enums) 개요 열거형은 서로 관련된 상수를 모아 클래스 형식으로 선언한 것이다. 열거형은 JDK 1.5부터 추가된 것으로, 값뿐만 아니라 타입까지도 관리한다. 따라서 실제 값이 같아도 타입이 다르면 조건식에서 false를 return한다. 마지막으로 상수가 바뀌어도 기존의 소스코드를 다시 컴파일하지 않아도 된다는 장점이 있다. 관련된 것끼리 상수를 모은다는 것 예를 들어 이 코드를 보자. 기존 코드 class Food { // 과일 static final int APPLE = 0; static final int BANANA = 1; static final int CHERRY = 2; // 한식 static final int KIMCHI = 0; static final int ..

[Java] 자바 제네릭스는 무엇이고 어떻게 동작하는가?

자바 제네릭스는 무엇이고 어떻게 동작하는가? 제네릭스란? 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에서 사용되는 것으로, 컴파일 시 타입을 체크해주는 것이다. 객체의 타입을 컴파일 시 체크하기 때문에 객체 타입의 안정성을 높이고 형변환의 번거로움을 줄일 수 있다. 타입 안정성을 높인다는 것은 의도하지 않은 타입의 객체를 저장하는 것을 막고, 저장된 객체를 꺼낼 때에도 원래의 타입과 다른 타입으로 형변환 되는 오류를 줄인다는 것이다. 예를 들어 String형만 저장하고 싶을 때, 제네릭스를 사용하면 다른 형을 입력받지 못하게 하여 타입 안정성을 제공하는 것이다. 참고로 타입 안정성과 하위 호환을 위해 컴파일 타임에만 이용되고 런타임 때는 사라진다. ArrayList strings = new Ar..

[Java] HashMap 개념 및 메서드

[Java] HashMap 개념 및 메서드 HashMap의 정의 HashMap은 Map을 구현한 대표적인 클래스이다. HashTable보다 상위 버전이므로, HashTable보다 HashMap을 쓰는 것이더 권장되니 알아두자. HashMap의 특징 1. HashMap은 Map의 특징, 키(key)와 값(value)를 하나로 묶어 하나의 데이터로 저장한다는 특징이 있다. 또한 해싱(Hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는 데에 있어 강점이 있다. 2. HashMap은 키, 값을 각각 Object 타입으로 저장하므로, 어떤 객체든 저장할 수 있다. 하지만 주로, 키는 String 형으로 통일해서 사용한다. 3. key는 중복을 허용하지 않지만, value는 중복을 허용한다. 만약 똑같은..

[Java] time 패키지 (LocalDate, LocalTime)

목차 1. 개요 2. 특징 3. 객체 생성 4. 값 가져오기 5. 필드 값 변경하기 6. 날짜와 시간 비교 7. 날짜의 차이, 시간의차이 계산하기 8. 단위 바꾸기 9. 파싱과 포맷 1. 개요 java에서 기존에 사용하던 Date, Calendar 클래스의 단점을 보완하기 위해 나오게 된 것이 time 패키지이다. 자바 8부터 추가되었다. 2. 특징 1. time 패키지에 속한 클래스들은 String처럼 불변(immutable)하다. 즉 값이 변하면 새로운 객체를 반환한다. 따라서 멀티 쓰레드 환경에서 안전하다. 2. 날짜와 시간을 하나로 표현하는 Calendar 클래스와 달리 날짜와 시간을 별도로 분리하여 사용한다. 시간을 표현할 땐 LocalTime클래스, 날짜를 표현할 때는 LocalDate클래스,..

[Java] String 클래스 정확히 이해하기

목차 1. String 개요 2. String 생성 방법 비교 3. 자주 사용하는 String 메서드 4. join()과 StringJoiner() 메서드 5. string을 기본형으로 변경하기 1. String 개요 다른언어에서는 char형의 배열로 문자열을 다루지만, 자바에서는 String 클랫스를 통해 문자열을 다룬다. String 인스턴스가 갖고 있는 문자열은 변경이 불가능하다. 아래의 코드를 보면서 이해해보자. 코드 예제 public class StringEx1 { public static void main(String[] args) { String x = "x"; String y = "y"; x = x + y; System.out.println("x = " + x); // x = xy } } ..

[Java] equals와 == 정확히 이해하기

equals에 대해 명확히 이해하기 위해선 Object을 알아야한다. Object란? 모든 클래스의 조상이다. 따라서 기본적으로 모든 클래스는 Object 클래스를 상속받은 것이다. Object 클래스에 멤버변수는 없고 클래스만 있다. Object 클래스의 메서드 2.1 equals(Object object) 매개변수로 객체의 참조변수를 받아 비교하여 True, False를 리턴해주는 메서드이다. 참조변수를 비교하므로 "주소값"을 비교하게 된다. 서로 다른 두 객체가 같은 주소를 갖는 일은 없다. 코드 보며 이해하자 코드 예제 public class IsEqualsEx { public static void main(String[] args) { Apple apple1 = new Apple(); Apple..

[Java] 추상 클래스와 인터페이스, 그리고 둘의 차이점

목차 1. 추상클래스란? 2. 인터페이스란? 3. 추상 클래스와 인터페이스 차이점 1. 추상클래스란? 클래스를 설계도에 비유한다면, 추상클래스는 미완성 설계도에 비유할 수 있다. 클래스가 미완성이라는 것은 멤버의 개수와 관계된 것이 아니라, 미완성 메서드(추상메서드)를 가지고 있다는 것이다. 미완성이기 때문에 추상 클래스는 인스턴스를 생성할 수 없다. 추상 메서드는 상속으로 구현해야 인스턴스를 생성하고 사용할 수 있다. 코드 예제 /** * 추상 클래스 */ abstract class Fruit { abstract void Print(); } class Apple extends Fruit { @Override void Print() { System.out.println("나는 사과입니다."); // 추상..

[Java] 다형성(polymorphism) 이란?

목차 1. 다형성이란? 2. 참조변수간 형변환 3. instanceof 연산자 4. 상속과 다형성 활용해보기 1. 다형성이란? 객체 지향에서 가장 중요한 개념 중의 하나는 바로 다형성이다. 다형성이 무엇일까? 다형성은 하나의 객체가 여러 타입을 가질 수 있는 성질을 의미한다. 이는 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 실제 코드로 구현하고 있다. 코드 예제를 통해 알아보자. 다형성 코드 예제 public class PolymorphismEx1 { public static void main(String[] args) { // 다형성 X Parent parent = new Parent(); // 다형성 O 부모가 자식을 참조 가능 Parent a = new C..

[Java] 접근 제어자와 기타 제어자

목차 1. 제어자란? 2. 기타 제어자 2.1 static 2.2 final 2.3 abstract 3. 접근 제어자 3.1 개요 1. 제어자란? 제어자란 클래스와 클래스 맴버, 메서드 선언부에 함께 사용되어 부가적인 의미를 부여하는 키워드를 의미한다. 제어자는 크게 접근 제어자와 기타 제어자로 구분할 수 있다. 기타 제어자는 여러 개를 함께 사용할 수도 있지만, 접근 제어자는 4개 중 단 하나만을 사용해야 한다. 이런 접근 제어자와 기타 제어자는 함께 사용하기도 한다. 접근 제어자 public, protected, default, private 기타 제어자 static, final, abstract, native, transient, synchronized, volatile, strictfp 2. 기타..

[Java] super란?

목차 1. super란? 2. 조상 클래스의 생성자로서 super 1. super란? super 키워드는 부모 클래스로부터 상속받은 맴버나 메소드를 자식 클래스에서 참조할 때 사용하는 참조변수이다. 맴버변수와 지역변수를 구분하기 위해 this를 사용했듯이, 부모의 맴버와 자식의 맴버와 이름이 같을 때는 super를 사용해 구별할 수 있다. 코드 예제를 보면서 구분해보자 코드예제 public class InherentEx4 { public static void main(String[] args) { DriedRamen driedRamen = new DriedRamen(); driedRamen.print(); } } class Ramen { int calorie = 540; } class DriedRamen..

728x90