JAVA 30

[JAVA] 제네릭 (Generic)

처음 제네릭에 관해 책을 읽었을 때 잘 이해가 가지 않아 해당 내용을 정리하게 되었다.단계별로 천천히 알아보자  제네릭이란?제레릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시 타입 체크(compile - type check)를 해주는 기능이다. 객체의 타입을 컴파일 시 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 타입 안정성을 높힌다? 무슨 의미일까?package generic.ex1;public class IntegerBox { private Integer value; public void setValue(Integer value) { this.value = value; } public Integer getValue..

JAVA 2024.11.08

[자바의 신2] 정리해봅시다 [2장~ 11장]

2장. 가장 많이 쓰는 패키지는 자바랭같은 패키지에 있는 클래스를 제외하고, 별도로 import 하지 않아도 되는 패키지는 무엇인가요?java.lang 패키지는 별도로 import 하지 않아도 됩니다.자바의 메모리가 부족해서 발생하는 에러는 무엇인가요?자바의 메모리가 부족하여 발생하는 에러는 OutOfMemoryError입니다.메서드 호출관계가 너무 많아서 발생하는 에러는 무엇인가요?StackOverflowError자기 자신의 메서드를 다시 부르는 재귀호출 메서드와 같은 것을 잘못 구현했을 때 발생합니다.java.lang 패키지에 선언되어 있는 3개의 어노테이션에는 어떤 것들이 있고, 각각의 역할은?Deprecated : 컴파일러에게 더 이상 사용하지 않는 메서드임을 알립니다.Override : 해당 메..

JAVA 2024.11.07

[JAVA] Grabage Collection Basics

가비지 컬렉터의 수거 대상은 무슨 근거로 판단할까?왜  heap 은 여러 영역으로 나눠져 있을까? 다음과 같은 궁금증이 생겨 해당 내용을 포스팅하게 되었습니다.  가비지 컬렉션이란?힙영역에서 사용 중인 객체와 사용 중이지 않는 객체를  식별하고 사용하지 않는  객체를 수거하여 메모리를  관리하는 기법입니다. 가비지 컬렉션의 루트 - 모든 객체 트리에 근원  가비지란 사용하지않는 객체를 말한다. 사용하지 않는 객체란 무엇일까?  사용하지 않는 객체란 GC Root와 관계가 있다. 어떤 객체가 유효한 참조가 존재한다면 'Reachable'그렇지 않으면 'Unreachable'이라 하며 'Unreachable'  한 객체는 GC의 대상이 된다.객체는 다른 여러 객체를 참조하고 그 객체들도 다른 객체들을 참조하..

JAVA 2024.11.05

[JAVA] Error 와 Exception

예외 클래스의 계층 구조자바에서는 실행 시 발생할 수 있는 오류 (Excepton과 Error)를 클래스로 정의하였다.모든 클래스의 조상인 Object  클래스가 최상단에 있고 Exception과 Error 클래스의 자손이 있다, 모든 예외의 최고 조상은 Exception 클래스이며 Exception 은 Checked Exception과 Uncheked Exception으로 나눌 수 있다.Error 대부분의 에러는 프로그램 밖에서 발생하고 메모리 부족과 같은 복구 불가능한 경우이다.Error는 프로세스에 영향을 주어 프로그램이 멈춰 버릴 수 있고 비정상적인 종료를 막을 수 없다. Excepton 대부분의 Exception 들은 프로그램 내에서 발생하고 복구 가능하다.예외가 발생하더라고 프로그래머가 적절한..

JAVA 2024.11.01

[JAVA] staic 과 final

staic과 final 은 둘 다 java에서 사용되는 키워드로 서로 다른 목적과 역할을 가지고 있습니다.static 이란?  정적 키워드로, 참조를 고정해 줍니다. 참조를 고정해 주기 위해서는 해당 객체가 없어지거나 재생성되면 안 되겠죠?그래서 gc 가 발생하는 힙이 아니라 메타스페이스에 할당을 해서 객체를 유지시켜 줍니다. 클래스가 로드될 때 메모리에 메타스페이스에 할당돼서 프로그램 시작부터 종료까지 남아있습니다. 즉 메모리가 항상 상주하고 있는 영역입니다.때문에 인스턴스 생성 없이도 접근 가능하면 모든 인스턴스에 공유됩니다. 즉 공용 데이터에 해당하거나 인스턴스 필드를 포함하지 않는 메서드를 선언하고자 할 때 사용합니다.static 변수를 선언하면 클래스 로딩 시점에 메모리에 할당되고 모든 객체에서..

JAVA 2024.10.29

== 와 equals 차이 , hashcode

equals(Object obj)Object 클래스가 가지고 있는 equals 메서드는 객체의 참조변수를 받아서 비교하여 그 결과를 boolean으로 알려주는 역할을 한다. equals 메서드의 실제 코드   public boolean equals(Object anObject) {        if (this == anObject) {            return true;        }    }  위에 코드에서 알 수 있듯이 두 객체의 같고 다름을 참조변수 값으로 판단한다그렇기 때문에 서로 다른 두 객체를 equals 메서드로 비교하면 항상 false 인 결과로 얻게 된다. public class Test {      public static void main(String[] args) {    ..

JAVA 2024.10.24

[Java] Call by Value 와 Call by Reference

Call By Value와 Call By ReferenceCall By Value (값에 의한 호출) 인자로 받은 값을 복사하여 처리하는 방식입니다.장점 - 값을 복사하여 처리하기 때문에 원래의 값이 보존됩니다.단점 - 복사하기 때문에 메모리 사용량이 증가합니다.Call By Reference(참조에 의한 호출) 인자로 받은 값의 주소를 참조하여 직접 저장해 값에 영향을 주는 방식입니다. 장점 - 복사하지 않고 직접 참조가 빠릅니다.단점 - 직접 참조를 하기에 원래의 값이 영향을 받는다. 그럼 Java에서는 어느 부분이 call by value이고 어느 부분이 call by reference에 해당하나요?Java의 기본적으로 모든 전달 방식은 Call By Value입니다.참조형의 경우 객체의 '주소값'..

JAVA 2024.10.21

[자바의 신] 정리해봅시다 [1장~ 10장]

1장. 프로그래밍이란 무엇인가?클래스가 뭔가요?클래스는 객체를 만들기 위한 설계도, 틀이라 할 수 있으며 객체를 생성하는 데 사용합니다.객체란? 객체는 클래스에 의해 생성되며 고유의 이름, 상태, 행동을 갖습니다. 여기서 상태는 필드, 행동은 메서드로 표현합니다.메서드가 뭔가요?메서드는 클래스 내의 행동을 제공하는 역할을 수행합니다.메서드의 매개 변수는 어디에 적어주나요?메서드의 매개 변수는 메서드 선언 시 사용하는 소괄호 안에  타입과 변수명 순으로 적어주어야 합니다. 두 개 이상의 매개변수가 있을 경우 콤마로 구분합니다.메서드 이름 앞에 꼭 적어줘야 하는 건 뭐죠?메서드 이름 앞에는 항상 리턴타입을 적어주어야 합니다. 클래스가 갖고 있어야 한다고 한 두 가지가 뭐죠?클래스는 상태(state)와 행동(..

JAVA 2024.10.19

[JAVA] ORM 이란? MyBatis 와 JPA 차이

ORM 은 무엇이며 MyBatis와 JPA는 어떤 상황에서 쓸까?ORM(Object Relational Mapping) 이란?ORM 이란 객체(Object) 와 DB의 테이블을 Mapping 시켜 RDB 테이블을 객체 지향적으로 사용하게 해주는 기술입니다.JAVA 에서 대표적인 ORM으로는 JPA와 그의 구현체 Hibernate 가 있다. JPA (Java Persistent API)  등장 이전에는 MyBatis라는 Object Mapping 기술을 사용하였다.MyBatis는 Java 클래스 코드를 직접 작성한 SQL 코드에 Mapping 시켜 주어야 한다.반면 JPA와 같은 ORM 기술은 객체가 DB에 연결되기 때문에, SQL을 직접 작성하지 않고 표준 인터페이스 기반으로 처리한다는 점에서 차이가 있..

JAVA 2024.10.11

[JAVA] 자바 버전과 특징 8 ,11

자바 8과 같은 일부 버전을 왜  1.8 이라고 할까? 9 이전의 JAVA 버전은 단순히 다른 명명 체계를 사용했습니다.따라서 Java 8 은 1.8, Java 5 는 1.5  등으로 불릴 수 있습니다.'java -version' 명령을 실행하면 아래와 같이 출력됩니다.c:\Program Files\Java\jdk1.8.0_191\bin>java -versionjava version "1.8.0_191" (1)Java(TM) SE Runtime Environment (build 1.8.0_191-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode) 이는 단순히 Java 8 을 의미합니다. Java 9 이후부터는 Java version ..

JAVA 2024.10.10