본문 바로가기

Java

(25)
[Java] JDBC(Java DataBase Connectivity) 알아보기 🔍 JDBC 란? Java DataBase Connectivity 약자로, 자바 프로그램에서 데이터베이스에 접속하고 SQL 문을 실행하기 위한 API(응용 프로그래밍 인터페이스)이다. JDBC를 사용하면 다양한 데이터베이스 관리 시스템(DBMS)에 접속하여 데이터베이스와 상호작용할 수 있습니다. JDBC는 데이터베이스에 대한 연결, SQL 문 실행, 결과 처리 등 다양한 기능을 제공하여 자바 애플리케이션과 데이터베이스 간의 효율적인 통신을 도와준다. 🔍 JDBC의 구조 JDBC를 이용해서 DB에 연결하기까지의 흐름은 다음과 같다. 사용자가 자바 애플리케이션에서 JDBC API를 이용해 DB에 접근하고자 한다. 하지만 JDBC API 자체는 인터페이스이므로 실제로 메서드들을 사용하기 위해서는 구현체가 필요..
[Java] 배열(Array) 특징 & 사용법 📌 배열(Array)이란? 배열은 동일한 타입의 변수들을 한 곳에 저장해서 관리하는 것을 말한다. 배열을 이용하면 하나의 변수에 여러 정보를 담을 수 있고, 반복문과 결합하면 많은 정보도 효율적으로 처리할 수 있습니다. 📌 배열의 특징 연속된 자료구조이다. 배열의 값을 element라고 하고, 그 순서를 index라고 한다. 배열에 저장되는 값은 모두 같은 데이터의 유형이다. (int는 int 만, String 은 String) 배열의 index 순서는 1부터가 아닌 0부터 시작이다. 배열의 맨뒤의 대괄호 안에는 배열의 크기를 지정한다. 📌 배열의 사용법 // 선언 방법 1 int[] arr = new int[5]; // 크기 5의 배열 String[] strArr = new String[10]; // ..
[Java] 추상 클래스 & 인터페이스 📌 추상 클래스 (abstract class) - 클래스는 일반 클래스와 추상 클래스로 나뉜다. 추상 클래스는 클래스 구현부 내부에 추상 메서드가 하나 이상 포함되거나 abstract로 정의된 경우를 말한다. - 구체적이지 않은 추상화된 클래스를 말한다. 미완성 설계도에 비유할 수 있다. ex) 고양이, 강아지 클래스가 아닌 포유류 클래스와 같은 것을 의미한다. 📌 추상 클래스 특징 추상 클래스는 반드시 abstract 클래스 명으로 표기되어야 한다. 추상 클래스는 자체적으로 객체 생성이 불가하다. 따라서 상속을 통한 자식 클래스에서 객체를 생성해야 한다. 추상 클래스는 다중 상속이 불가하다. 추상 클래스는 추상 메서드, 일반 메서드, 멤버 변수, 생성자를 구현할 수 있다. abstract로 선언한 메..
[Java] Call by value ? & Call by Reference ? 📌 Call by Value와 Call by Reference Call by Value는 메서드의 인자를 전달할 때 '값을 전달하는 방식' 값에 의한 호출 메서드가 호출될 때 메모리 공간 안에서는 임시의 공간이 생긴다. 그리고 메서드가 종료되면 해당 공간은 사라진다. 메서드 호출 시 전달되는 변수의 값을 복사하여 메서드의 인자로 전달한다. 이 때문에 원본의 값은 변하지 않는다. 복사된 인자는 메서드 안에서 지역적으로 사용하는 지역 변수이다. Java의 경우 메서드에 전달되는 인자의 데이터 타입에 따라서 호출 방식이 달라진다. 기본 자료형 : call by value로 동작 (int, short, long, float, double, char, boolean) 참조 자료형 : call by referenc..
[Java] Enum ? 열거형 (Enumeration) 📌 Enum 열거형 (Enumeration) 관련이 있는 상수들의 집합이다. enum 타입 이름은 관례적으로 단어의 첫 글자는 대문자로 지정하고 enum의 상수는 전부 대문자로 연결하고 여러 단어는 언더바(_)로 연결한다. 어떤 클래스가 상수만으로 작성되어 있으면 반드시 class로 선언할 필요는 없습니다. 이럴 때 class로 선언된 부분에 enum이라고 선언하면 이 객체는 상수의 집합 enum 클래스가 된다. 인터페이스나 클래스 내에서 상수를 선언함으로써 상수를 관리하였는데 클래스 내에서 선언하는 부분은 네이밍이 겹칠 수 있고 불 필요하게 상수가 많아지는 단점이 있다. 인터페이스로 관리하는 경우 이런 부분은 줄어들지만 여전히 타입 안정성이 떨어지는 단점을 가지고 있었다. 이를 보완하며 나온 것이 En..
[Java] 객체지향 5원칙 SOLID 📌 객체지향 설계 5원칙 SOLID 객체지향을 설계할 때는 5가지 원칙이 존재한다. 이 원칙은 시간이 지나도 유지 보수와 확장이 쉬운 소프트웨어를 만드는데 이 원칙들을 적용할 수 있다. 1. SPR (단일 책임 원칙) 2. OCP (개방-폐쇄 원칙) 3. LSP (리스코프 치환 원칙) 4. DIP (의존 역전 원칙) 5. ISP (인터페이스 분리 원칙) 응집도와 결합도 좋은 소프트웨어 설계를 위해서는 결합도 (coupling)는 낮추고 응집도 (cohesion)는 높여야 한다. 결합도란? 모듈 (클래스) 간의 상호 의존 정도를 나타내는 지표로써 결합도가 낮으면 모듈 간의 상호 의존성이 줄어들어서 객체의 재사용 및 유지보수가 유리하다. 응집도란? 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로..
[Java] static, final, static final 📌 static 공용 데이터에 해당하거나 인스턴스 필드를 포함하지 않는 메소드를 선언하고자 할 때 활용 정적 메소드는 객체 참조 없이 바로 사용할 수 있는 특징으로 인스턴스 필드나 메소드, 그리고 this 키워드를 사용할 수 없다. 객체마다 가질 필요가 없는 공용으로 사용하는 필드 혹은 인스턴스 필드를 포함하지 않는 메소드 👉 static을 언제 사용해야 하는가? 1. 모든 인스턴스에 공통된 값을 유지해야 하는 멤버 변수 - 인스턴스를 생성하면, 각 인스턴스들은 서로 독립적이기 때문에 서로 다른 값을 유지합니다. 경우에 따라서 각 인스턴스들이 공통적으로 같은 값이 유지되어야 하는 경우에 static을 붙입니다. 2. 인스턴스 변수를 사용하지 않는 메소드 - 메소드의 작업내용 중에서 인스턴스 변수를 필요로..
[Java] == 연산자 & equals() 차이점 📌== 연산자 == 연산자는 int, boolean과 같은primitive type에 대해서는 값을 비교한다. reference type에 대해서는 주소 값을 비교한다. 사실 primitive type도 Constant Pool에 있는 특정 상수를 참조하는 것이기 때문에 결국 주소 값을 비교하는 것으로 볼 수 있다. 같은 상수를 참조하면 주소 값이 같으니 결국 같은 값이면 동일하다고 판단할 수 있다. 리터럴(literal)을 사용해서 값을 생성하면 Constant Pool 영역에 존재하고, new연산자를 통해값을 생성하면 Heap 영역에 존재하게 된다. 👉 Constant Pool 이란? - 런타임에 생성되는 static 상수 저장소이고, Constant Pool 객체에 저장된다. - Constant ..