Light Blue Pointer
본문 바로가기

Developing/TIL(Develop)67

추상클래스와 인터페이스 정의와 차이점 추상클래스(Abstract Class)와 인터페이스(Interface)는 모두 클래스 간의 공통적인 동작을 정의하는 방법을 제공한다추상클래스 (Abstract Class)하나 이상의 추상 메서드를 포함하는 클래스일반 메서드도 포함할 수 있다필드를 가질 수 있다생성자를 가질 수 있다상속을 통해 클래스의 공통적인 동작을 정의할 때 사용한다추상 메서드선언되어있지만 구현은 되어있지 않은 메서드추상클래스 자체는 인스턴스화할 수 없으며, 추상클래스를 상속받는 하위 클래스에서 추상 메서드를 구현해야 한다인터페이스 (Interface)인터페이스는 메서드의 선언만을 포함하며, 구현은 제공하지 않는 추상 타입모든 메서드는 기본적으로 추상 메서드디폴트 메서드(default methods)와 static 메서드를 포함할 수 .. 2024. 5. 24.
Object Oriented Programming 객체 지향 프로그래밍(OOP, Object-Oriented Programming)은 소프트웨어 설계 패러다임의 하나로, 프로그램을 객체(object)의 집합으로 보고 이 객체들이 서로 상호작용하여 동작하도록 구성하는 방법론이다객체는 데이터와 그 데이터를 처리하는 함수를 함께 묶어 놓은 일종의 모듈이다OOP의 핵심 개념에는 클래스, 객체, 상속, 다형성, 캡슐화가 포함된다핵심 개념클래스(Class)클래스는 객체를 정의하는 틀(template) 또는 청사진(blueprint)이다클래스는 데이터(속성)와 행동(메서드)을 정의한다**자동차**라는 클래스를 정의하면, 이는 모든 자동차가 가져야 할 속성과 행동을 포함한다객체(Object)객체는 클래스로부터 생성된 실체(instance)이다객체는 클래스에서 정의한 .. 2024. 5. 24.
오버라이딩과 오버로딩 차이 오버로딩(Overloading)메서드의 이름은 같고 매개변수의 유형과 개수가 다르도록 하는 것리턴값만을 다르게 갖는 오버로딩은 작성할 수 없다오버로딩은 같은 이름의 메서드를 여러 개 정의하되, 매개변수의 개수나 타입을 다르게 하여 구분하는 것이다오버로딩은 주로 메서드의 사용 편의성을 높이기 위해 사용된다특징메서드 이름이 같아야 한다매개변수의 개수나 타입이 달라야 한다반환 타입은 같아도 되고 달라도 된다같은 클래스 내에서 정의된다public class OverloadingExample { // 두 개의 정수를 더하는 메서드 public int add(int a, int b) { return a + b; } // 세 개의 정수를 더하는 메서드 public int add.. 2024. 5. 23.
JVM(Java Virtual Machine) Java Virtual Machine자바를 실행하기 위한 가상 기계(컴퓨터)JVM은 Java프로그램이 플랫폼에 독립적으로 실행될 수 있게 = OS에 종속적이지 않게 해준다Java 소스코드(원시코드(*.java))는 CPU가 인식을 하지 못하므로 기계어로 컴파일을 해줘야 한다Java는 이 JVM 이라는 가상머신을 거쳐서 OS에 도달하기 때문에 OS가 인식할 수 있는 기계어로 바로 컴파일 되는게 아니라 JVM이 인식할 수 있는 Java bytecode(*.class)로 변환된다 JVM의 주요 기능바이트코드 실행Java 프로그램은 먼저 Java 컴파일러(javac)에 의해 바이트코드(.class 파일)로 컴파일된다이 바이트코드는 JVM이 이해할 수 있는 명령어 집합으로 변환된다메모리 관리JVM은 프로그램 실행.. 2024. 5. 17.
멀티스레드와 스레드 풀 / 스레드와 프로세스의 차이 프로세스(Process)cpu에 의해 메모리에 올려져 실행중인 프로그램을 말하며, 자신만의 메모리 공간을 포함한 독립적인 실행 환경을 가지고 있다프로그램 중 일부는 여러 프로세스간 상호작용을 하는 것일수도 있다자바 JVM(Java Virtual Machine)은 주로 하나의 프로세스로 실행되며, 동시에 여러 작업을 수행하기 위해서 멀티 스레드를 지원하고 있다스레드(thread)프로세스 내에서 독립적으로 실행되는 흐름프로세스 안에서 실질적으로 작업을 실행하는 단위JVM(Java Virtual Machine)에 의해 관리됨프로세스에는 적어도 한 개 이상의 스레드가 있다Main 스레드 하나로 시작하여 스레드를 추가로 생성하면 멀티 스레드 환경이 된다멀티스레딩 (Multithreading)하나의 프로세스 내에서.. 2024. 5. 17.
Java의 메모리 관리와 가비지 컬렉션 Java의 메모리 구조힙 메모리(Heap Memory)용도객체와 배열이 저장되는 곳동적으로 생성된 데이터가 저장됨가비지 컬렉션의 주 대상메모리 할당런타임 시 동적으로 할당됨new 키워드를 사용하여 객체를 생성할 때 사용됨생명 주기힙 메모리에 할당된 객체는 프로그램 전체 실행 기간 동안 존재할 수 있다가비지 컬렉터에 의해 더 이상 참조되지 않는 객체는 자동으로 해제된다관리JVM이 관리하며, 가비지 컬렉션을 통해 자동으로 메모리를 해제한다수동으로 메모리를 해제할 필요가 없다크기일반적으로 스택 메모리보다 크며, 제한된 크기 안에서 동적으로 확장될 수 있다스택 메모리(Stack Memory):용도메서드 호출 시 생성되는 지역 변수와 함수 호출 정보를 저장한다메서드의 실행 컨텍스트(프레임)가 저장된다메모리 할당컴.. 2024. 5. 16.
Java 접근제어자 접근제어자는 클래스, 메서드, 변수, 생성자 등의 접근 권한을 설정하는 데 사용된다접근제어자는 코드의 가시성과 보안을 제어하는 중요한 역할을 한다public어디서나 접근할 수 있음을 의미동일한 클래스, 동일한 패키지, 다른 패키지의 클래스 모두에서 접근이 가능가장 높은 접근 수준을 가집니다.모든 클래스에서 접근할 수 있습니다.클래스, 메서드, 필드, 생성자에 적용할 수 있습니다.protected동일한 패키지 내의 클래스와 다른 패키지의 하위 클래스에서 접근할 수 있다동일 패키지의 클래스에서 접근할 수 있다다른 패키지의 하위 클래스에서도 접근할 수 있다클래스에는 적용할 수 없고, 필드, 메서드, 생성자에만 적용할 수 있다public class ProtectedClass { protected int p.. 2024. 5. 15.
Java에서 동일성과 동등성의 차이 동일성(Identity)동일성은 두 객체가 동일한 메모리 위치를 참조하는지 여부두 객체의 참조가 같은 객체를 가리키고 있는지를 확인하는 것== 연산자를 사용하여 동일성을 비교한다Primitive 타입은 == 연산자를 사용했을 때 값이 같으면 true를 리턴객체는 == 연산자를 사용했을 때 동일한 메모리 위치가 있으면 true를 리턴동등성(Equality)두 객체가 논리적으로 동일한 값을 가지는지두 객체의 내용이 같은지equals() 메서드를 사용하여 동등성을 비교기본적으로 Object 클래스의 equals() 메서드는 ==와 동일하게 동작하지만, 이를 재정의(overriding)하여 객체의 논리적 동등성을 비교할 수 있다String str1 = new String("Hello");String str2 =.. 2024. 5. 15.
JPA 사용할때 쿼리가 복잡해지는 경우의 해결방안 JPA(Java Persistence API)를 사용할 때 복잡한 쿼리를 구현하는 데는 여러 방법이 있고 상황에 따라 적절한 방법을 선택해야 한다.1. JPQL(Java Persistence Query Language)JPQL은 SQL과 유사한 문법을 사용하여 엔티티 객체를 대상으로 하는 쿼리를 작성할 수 있게 해준다복잡한 쿼리도 작성할 수 있으며, 데이터베이스 독립성을 유지할 수 있다javaCopy codeString jpql = "SELECT e FROM Employee e WHERE e.department.name = :deptName AND e.salary > :minSalary";TypedQuery query = entityManager.createQuery(jpql, Employee.class.. 2024. 5. 15.