본문 바로가기

공부/자바 (Java)14

[Java] 컬렉션 프레임 워크 (List 인터페이스, Stack, Queue) 컬렉션 프레임 워크란? 프로그램 구현에 필요한 자료구조와 알고리즘을 구현해 놓은 라이브러리이다. java.util 패키지에 구현되어 있다. 개발에 소요된느 시간을 절약하고 최적화된 라이브러리를 사용할 수 있다. Collection 인터페이스와 Map 인터페이스로 구성됨. Collection 인터페이스 하나의 객체 관리를 위해 선언된 인터페이스로 필요한 기본 메서드가 선언되어 있다. 하위에 List, Set 인터페이스가 있다. Map 인터페이스 쌍으로 이루어진 객체를 관리하는데 필요한 여러 메서드가 선언되어 있다. Map을 사용하는 객체는 Key-Value 쌍으로 되어 있고, Key는 중복될 수없다. List 인터페이스 Collection 하위 인터페이스이다. 객체를 순서에 따라 저장하고 관리하는데 필요한.. 2022. 1. 6.
[Java] 제네릭 프로그래밍 제네릭 프로그래밍이란? 변수의 선언이나 메서드의 매개변수를 하나의 참조 자료형이 아닌 여러 자료형으로 변환 될 수 있도록 프로그래밍 하는 방식이다. 실제 사용되는 참조 자료형으로의 변환은 컴파일러가 검증하므로 안정적인 프로그래밍 방식이다. 자료형 매개 변수 T 여러 참조 자료형으로 대체 될 수 있는 부분을 하나의 문자로 표현한것. (Type의 약자 T를 사용) 사용 예) 다른 타입에 대한 프린터(다른 재료 사용) 더보기 클래스 옆에 를 표시해준다. (임시 객체) public class GenericPrinter { private T material; public T getMaterial() { return material; } public void setMaterial(T material) { this... 2022. 1. 6.
[Java] String 클래스, StringBuilder와 StringBuffer, Wrapper 클래스 String 클래스 선언하기 String str1 = new String("abc");//인스턴스로 생성된다. String str2 = "abc";//상수풀에 있는 문자열을 가리킴 public class StringTest { public static void main(String[] args) { String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1 == str2); //결과는 힙메모리에 할당되어 메모리 위치가 다르기 때문에 false String str3 = "abc"; String str4 = "abc"; System.out.println(str3 == str4); //결과는 상수풀에 같은 값.. 2022. 1. 5.
[Java] JPA, MySQL연동 (Entity), JPA를 통한 CRUD JPA (Java Persistence API)? ORM(Object Relational Mapping)으로 인터페이스의 모음이다. RDB 데이터베이스의 정보를 객체지향으로 손쉽게 활용할 수 있도록 도와주는 도구이다. Object(객체)와 Relation(관계형 DB) 둘 간의 맵핑을 통해서 보다 손쉽게 적용할 수 있는 기술을 제공해준다. 또한 쿼리에 집중하기 보다는 객체에 집중함으로써, 조금 더 프로그래밍 적으로 많이 활용할 수 있다. MySQL연동하기 mysql.server start 의존성 추가 jpa, mysql dependencies { implementation('org.springframework.boot:spring-boot-starter-data-jpa') implementation('m.. 2021. 12. 31.
[Java] Lombok(롬복)이란? Lombok설치 Lombok(롬복) 이란? Java 라이브러리로 반복되는 getter, setter, toString .. 등의 반복 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리 이다. Lombok은 여러 어노테이션(@)을 제공하고 이를 기반으로 반복 소스코드를 컴파일 과정에서 생성해주는 방식으로 동작하는 라이브러리이다. Lombok 장점 어노테이션 기반의 코드 자동생성을 통한 생산성 향상 반복코드 다이어트를 통해 가독성 및 유지보수성 향상 Getter/Setter외 빌더 패턴이나 로그생성 등 다양한 방면으로 활용가능 Lombok 적용 방법 Intellij 기준 Preferences-Plugins-Marketplace lombok 검색 (이미 설치 되어 있을 수 있음) lombok라이브러리를 Gradle에 의존.. 2021. 12. 30.
[Java] Object 클래스 & Class 클래스 - toString(), equals(), hashCode(), clone(), forName() 모든 클래스의 최상위 클래스이다. java.lang.Object 클래스 (따로 import하지 않아도 된다.) 모든 클래스는 Object클래스에서 상속 받는다. 모든 클래스는 Object클래스의 메소드를 사용할 수 있다. 모든 클래스는 Object클래스의 일부 메서드를 재정의 하여 사용할 수 있다. (final로 정의된 메서드가 있기 때문) Object클래스의 toString메서드 toString()메서드의 원형: getClass().getName() + '@' + Integer.toHexString(hashCode()) 객체의 정보를 String으로 바꾸어 사용할 때 유용하다. package Object; class Book{ String title; String author; public Book(S.. 2021. 12. 29.
[Java] 인터페이스, 추상클래스 인터페이스 차이 인터페이스는 객체에 대한 명세이다. (어떤 메소드를 제공할건지, 어떤 역할은 하는 객체인지에 대한 설명서라고 본다.) 인터페이스의 요소 추상메서드: 모든 메서드는 추상메서드이다. 상수: 선언된 모든 변수는 상수로 처리 됨 디폴트 메서드: 기본 구현을 가지는 메서드(재정의 가능) 정적 메서드: 인스턴스 생성과 상관없이 인터페이스 타입으로 호출하는 메서드 private메서드: 인터페이스 내에서 사용하기 위해 구현한 메서드(재정의 x) 인터페이스 선언과 구현 public interface Calc { double PI = 3.14; int ERROR = -99999999;//인터페이스에서 선언한 변수는 컴파일 과정에서 상수로 변환된다.(public static final) int add(int a, int b.. 2021. 12. 27.
[Java] 추상 클래스, 템플릿 메서드 패턴 -final 예약어 추상 클래스는 추상 메서드를 포함한 클래스이다. 추상메서드란? 구현 코드가 없이 선언부만 있는 메서드 abstract 예약어를 사용한다. 추상클래스는 new(인스턴스화)할 수 없다. public class Computer { public void display(){}//추상메서드가 아님 public void typing();//추상메서드임 하지만 이대로는 에러가 발생. } 사용 방법 public abstract class Computer { public abstract void display(); public abstract void typing(); } 추상클래스는 주로 상속의 상위클래스를 위해 사용된다. 하위클래스에서 반드시 구현해야하는 메서드이지만 상위클래스는 그 선언이 모호할때 사용. 하나의 추상.. 2021. 12. 21.
[Java] 상속(Inheritance), 메서드 오버라이딩, 다형성, 다운캐스팅, 업캐스팅 상속이란? 새로운 클래스를 정의할 때 이미 구현된 클래스를 상속 받아서 속성이나 기능이 확장되는 클래스를 구현하는 것. 상위클래스는 하위클래스보다 일반적인 개념과 기능을 가진다. 하위클래스는 상위클래스보다 구체적인 개념과 기능을 가진다. 자바는 Single Inheritance만 지원하기 때문에 extends 뒤에는 단 하나의 class 만 사용할 수 있다. class B extends A{ } public class Customer { protected int customerID; protected String customerName; protected String customerGrade; int bonusPoint; double bonusRatio; } public class VIPCustomer .. 2021. 12. 21.
[Java] 싱글톤 패턴 (Singleton Pattern) -static 싱글톤 패턴이란?? 프로젝트안에서 객체를 참조할 수 있는 인스턴스가 오직 1개만 존재해야 하는 경우에 사용되는 패턴입니다. 구현해 보기 company객체는 private인 생성자가 있다. 이 경우 외부에서 생성자를 만들 때 Company cp_instance = new Company(); 호출이 불가능하다. (외부에서 인스턴스 생성이 불가능) 싱글톤 패턴은 인스턴스를 하나만 가지고 있는 디자인 패턴이기 때문에 Company객체 내부에서 instance를 하나 생성하고, 외부에서 호출했을 때 인스턴스를 내보내주는 함수를 갖는다. 이렇게 함수를 사용해서 인스턴스를 가져올 수 있다. 이름이 다른 company1과 company2를 생성한것 같지만, 출력된 결과는 같은 주소값을 갖는다. (같은 인스턴스이다.) .. 2021. 12. 8.
[Java] static 변수, static메소드(클래스 메소드), 인스턴스 변수, 인스턴스 메소드 Static 변수(클래스 변수) 여러 인스턴스가 하나의 값을 공유할 필요가 있는 경우 사용된다. static 변수는 처음 프로그램이 로드 될 때 데이터 영역에 생성된다. 인스턴스의 이름과는 상관없이 클래스 이름으로 참조하여 사용하면 된다. 확인해보기 아래와 같은 Student객체가 있을때 serialNum은 static변수입니다. 인스턴스가 생길때 마다. 숫자가 하나씩 늘어날겁니다. 인스턴스 이름과 무관하게 증가하는 변수를 확인할 수 있고, 클래스명으로 호출되는것을 확인할 수 있습니다. (인스턴스 생성과도 무관하게사용 가능) static 메소드는 내부에서 인스턴스 변수를 사용할 수 없다. WHY? 인스턴스가 생성되면 스택 메모리가 인스턴스 주소를 갖고 힙 메모리에 인스턴스 변수가 들어간다. static변.. 2021. 12. 8.
[Java] 인스턴스, 힙 메모리, 생성자, 정보 은닉 인스턴스: 클래스로부터 생성된 객체 힙(Heap) 메모리에 멤버 변수의 크기에 따라 메모리가 생성됨. 각각의 인스턴스는 별개의 메모리를 가진다. 자바에서는 garbege Collector가 메모리를 알아서 수거한다. 생성자(Constructor): 객체를 생성할 때 new키워드와 함께 호출됨 인스턴스를 초기화 하는 코드가 구현 됨 반환 값이 없음, 상속되지 않음, 생성자는 클래스 이름과 동일 기본 생성자(default constructor): 하나의 클래스에는 반드시 하나 이상의 생성자가 존재해야함. 만약 구현하지 않는다면 컴파일러가 생성자 코드를 넣어줌 기본 생성자는 매개변수가 없고,구현부가 없음 오버로딩: 같은 이름의 생성자, 메서드의 매개변수가 다른 경우 정보 은닉 (impormation hidin.. 2021. 12. 4.