자바 11

Spring Boot - H2 Database - DB 연결 / Entity / Hibernate / Lombok

Spring Boot EFA를 도식화해서 보여주고 있다.R-DBMS 에 MySQL 이라고 되어 있지만, 여기서는 H2 Database를 연결했다. H2 DB를 설치하고나서, DBMS가 H2 DB를 사용하겠다는 것.관계형 DB 이기 때문에 table 단위로 데이터 저장할 것이다.DBMS에 직접 table 을 만드는 것은 아니고,JPA 를 이용하게 되면은, Entity 객체, VO 같은 객체를spring data JPA에서 제공해주는 ORM Mapping 통해서Object 를 하나의 Relational (Table - 관계형 데이터베이스에서는 Table 이라는 말 대신에 Relational 이라고도 함)즉, Object 를  ORM Mapping 을 통해서 Table 로 자동으로 만드는 방법이 Hiberna..

Java - Static과 JVM 메모리 모델 / class, object, instance의 상호관계

메인(시작)클래스는 왜 객체생성없이(New) 실행이 되나요?Java에서 메인(시작) 클래스는 특별한 역할을 맡고 있기 때문에, 객체를 생성하지 않고도 실행할 수 있습니다. 그 이유는 main 메서드가 정적(static) 메서드로 선언되어 있기 때문입니다. 자세히 설명하겠습니다:1. static 키워드의 의미Java에서 static 키워드는 클래스 수준에서 접근 가능하다는 뜻입니다.즉, static으로 선언된 메서드나 변수는 특정 객체(instance)에 속하지 않고, 클래스에 직접 속합니다.따라서 객체를 생성하지 않고도 클래스 이름만으로 접근할 수 있습니다.class MyClass { static void sayHello() { System.out.println("Hello, World..

Java 2024.12.02

Java - Constructor 생성자 메서드 / 클래스 모델 DTO, VO, DAO, Utility

생성자 메서드 (Constructor)**생성자(Constructor)**는 객체가 생성될 때 호출되는 특별한 메서드입니다. 생성자는 객체를 초기화하는 역할을 하며, 클래스의 이름과 동일한 이름을 가지는 메서드입니다. 자바에서는 생성자를 명시적으로 정의하지 않아도 기본 생성자가 자동으로 제공됩니다.특징클래스 이름과 동일:생성자의 이름은 반드시 클래스 이름과 동일해야 합니다.리턴 타입을 명시하지 않습니다(리턴 타입 자체가 없음 - return 이 없다고 해서 void 를 쓰면 안 되는 ).객체 초기화:객체 생성 시 호출되며, 객체의 필드(멤버 변수)를 초기화하거나 특정 작업을 수행할 수 있습니다.자동 호출:객체가 생성될 때 자동으로 호출됩니다.개발자가 명시적으로 호출할 수는 없습니다.종류:기본 생성자(De..

Java 2024.12.01

Java - 객체를 접근하는 권한 / Access Modifier / Package란? / 클래스 접근하는 방법

Java에서 Access Modifier는 클래스, 변수, 메서드, 또는 생성자에 대한 접근 수준을 제어하는 데 사용됩니다. 이를 통해 **캡슐화(encapsulation)**를 구현하고, 프로그램의 보안성과 안정성을 강화할 수 있습니다. Java는 네 가지 주요 접근 제어자를 제공합니다: public, protected, default(명시하지 않을 경우), 그리고 private. 이를 각 접근 수준에 따라 정리하고, 보호와 보안적 측면도 함께 설명하겠습니다.1. Access Modifier의 종류와 특징     Modifier같은 클래스같은 패키지다른 패키지의 서브클래스다른 패키지publicOOOOprotectedOOOXdefaultOOXXprivateOXXX1.1 public특징: 어디서든 접근 가..

Java 2024.11.29

Java - Method / static 정적/ parameter passing 매개변수 전달기법 / method overloading 메서드 중복정의 /

1. 메서드란?**메서드(Method)**는 클래스(Class) 내부에 정의된 코드 블록으로, 특정 작업을 수행하는 데 사용됩니다.메서드는 **일련의 명령어(코드)**를 묶어서 이름을 부여한 것으로 이해하면 됩니다.즉, 메서드는:코드를 재사용 가능하게 만들어줍니다.프로그램을 더 구조적이고 읽기 쉽게 설계하도록 도와줍니다.필요한 값(데이터)을 받아 계산하거나 작업을 수행한 뒤, 결과를 반환하거나 단순히 작업을 끝낼 수 있습니다.2. 메서드의 구성 요소Java에서 메서드는 아래와 같은 구조로 이루어져 있습니다:[접근제어자] [반환타입] [메서드 이름](매개변수 목록) { // 메서드의 내용 (명령어들) return 값; // 반환 타입에 따라 반환할 값 (void일 경우 생략)}각 구성 요소를 하..

Java 2024.11.28

Java - if, swich-case, for, while, break, continue

Java의 조건문과 반복문은 논리적인 사고를 활용하여 문제를 해결하는 데 필수적인 도구들입니다. 각 요소를 자세히 살펴보고 예제를 통해 이해해 봅시다.1. 조건문(1) if-else 문특정 조건이 참인지 확인하고, 조건에 따라 다른 코드를 실행합니다.기본 구조:if (조건식) { // 조건식이 참일 때 실행} else { // 조건식이 거짓일 때 실행}예제:int age = 20;if (age >= 18) { System.out.println("성인입니다.");} else { System.out.println("미성년자입니다.");}(2) switch-case 문하나의 변수에 대해 여러 값을 비교할 때 사용됩니다.if-else보다 코드가 간결해집니다.기본 구조:switch (변수) ..

Java 2024.11.26

Java - 연산자 (증가 연산자/ 감소 연산자/ 삼항 연산자)

증가 연산자, 감소 연산자, 삼항 연산자에 대해서 설명해줘Java에서 증가 연산자, 감소 연산자, 그리고 삼항 연산자는 코드에서 간결하고 효율적인 연산을 가능하게 해주는 중요한 연산자들입니다. 아래에 각각에 대해 상세히 설명하겠습니다.1. 증가 연산자 (Increment Operator)사용법:++ 연산자는 변수의 값을 1만큼 증가시킵니다.종류:전위 증가 연산자 (++variable)값을 증가시킨 후에 해당 값을 사용합니다.후위 증가 연산자 (variable++)현재 값을 먼저 사용한 후에 값을 증가시킵니다.예제 코드:int x = 5;// 전위 증가 연산자int y = ++x; // x는 먼저 6이 되고, y에 6이 할당됩니다.System.out.println("x: " + x + ", y: " + y..

Java 2024.11.25

Java - Scanner / (메모리 heap 영역)

Scanner 클래스는 Java에서 표준 입력 (키보드 입력)을 처리하기 위해 제공되는 유틸리티 클래스입니다. 주로 사용자가 데이터를 입력할 수 있도록 설계된 프로그램에서 사용됩니다. java.util 패키지에 포함되어 있으며, 다양한 데이터 타입의 입력을 처리할 수 있습니다.1. Scanner 클래스의 기본 개념Scanner는 Java의 표준 입력 스트림(System.in)을 통해 데이터를 읽습니다.사용자가 입력한 문자열을 파싱하여 원하는 데이터 타입으로 변환할 수 있습니다.공백(스페이스, 탭, 줄바꿈) 단위로 데이터를 구분하여 입력을 처리합니다.2. Scanner 클래스 사용법기본 구조import java.util.Scanner;public class Main { public static voi..

Java 2024.11.23

Java - Array - /Array vs. Class / array의 크기, 초기화, 기본값 / 2차원 배열과 다차원 배열 / Jagged array 가변 배열

클래스 구조개념클래스는 사용자 정의 데이터 타입으로, 데이터(필드)와 데이터를 다루는 메서드(기능)를 포함합니다. 객체 지향 프로그래밍의 핵심이며, 데이터를 구조화하고 기능을 캡슐화하는 데 사용됩니다.특징데이터와 메서드의 조합:클래스는 여러 데이터 필드와 메서드를 포함할 수 있습니다.예: name, age와 같은 데이터와 이를 조작하는 메서드를 포함.다양한 데이터 타입:클래스는 여러 데이터 타입의 필드를 포함할 수 있습니다.예: String, int, double, 심지어 다른 클래스도 포함 가능.객체 단위로 동작:클래스는 객체를 생성하여 사용하며, 객체는 클래스의 인스턴스입니다.구조화된 접근:클래스 내부의 필드와 메서드는 접근 제한자(private, public)로 보호할 수 있습니다.예제// 클래스 ..

Java 2024.11.22

Java - 문자자료형 공부 / 자료형과 형변환 casting / 새로운 자료형의 필요성 / 객체와 클래스에 대한 공부 /

char - 문자자료형! 문자를 숫자로 맵핑을 해놨다. - 이걸 수치형자료라고도 함.그래서 이런게 가능함.char c = 'A';라고 해서 c 를 출력하면 A 가 나온다.그런데,'A' 는 문자인데,int a = 'A';라고 하면 말이 되는가?정수형과 문자형은 자료형이 다른데?하지만, 'A' 는 아스키코드라고 문자랑 숫자로 맵핑을 해놓았어서,'A'에 해당하는 65 이라는 숫자가 있다.그래서int a = 'A' 라고 하면, a 에 'A' 를 저장(할당)하는게 아니라, 65 을 저장하는 것.그래서 a 를 출력하면, 아스키코드 수치인 65가 출력된다. 그리고 int b = 'B' + 1;이것도 가능하다. b 를 출력하면 66 + 1 이라서 67이 출력된다.    그 문자-숫자 표가 아스키코드에 있다. ASCII..

Java 2024.11.21