본문 바로가기

TIL : JAVA11

[Java] Long과 long의 차이 자바에서 데이터 타입을 배울 때, Long이라는 타입도 배우게 된다. 그런데 자바를 실제로 사용하다 보면, long이라는 타입도 있어서 어느 것을 사용해야 할 지 고민이 된다. 이런 비슷한 페어들이 있으니, 한 번에 정리해서 적절한 타입을 사용해 보자. 기본 데이터 타입 (primitive type)long은 기본 데이터 타입이다. 이는 다음과 같은 중요한 특성을 가진다.스택 메모리에 직접 저장되므로 메모리 사용이 효율적이다연산 속도가 빠르다null값을 가질 수 없다 -> null point exception을 발생시킬 수 있다ex) int, long, float, double, char, byte, short, boolean 객체 타입 (wrapper type)Long은 객체 타입이다. 이는 다음과 같.. 2024. 9. 15.
[Java] ResponseEntity 를 return할 때, new를 언제 붙이는가? ResponseEntity란?ResponseEntity는 HttpEntity를 상속받고 있어, HttpEntity에다 HttpStatusCode를 추가한 클래스이다. HttpEntity는 HTTP 요청 또는 응답 entity인데, header와 body로 구성되어 있다. ResponseEntity class 문서에서 생성자는 다음과 같다.public ResponseEntity(@Nullable T body, @Nullable MultiValueMap headers, HttpStatusCode statusCode) { super(body, headers); Assert.notNull(statusCode, "HttpStatusCode must not be null"); this.status .. 2024. 5. 9.
[Java] 선형 검색 Linear Search 선형 검색선형 검색 (=순차 검색)은 배열에서 검색할 값을 처음부터 순서대로 하나하나씩 비교하여 찾는 방식이다. 예를 들어 배열 {1, 2, 3, 4, 5}에서 값 3을 선형 검색으로 찾는다면, 첫 값인 1과 3을 비교, 다음 값인 2와 3을 비교, 그리고 다음 3과 3을 비교해서 찾게 된다.  Java로 선형 검색 구현일반적으로 선형 검색을 할 경우, 다음 두 가지 결과가 발생한다.배열을 끝까지 탐색했음에도 불구하고 검색할 값을 찾지 못함 -> 검색 실패배열 탐색 중 검색할 값을 찾음 -> 검색 성공이를 메소드로 구현하면 다음과 같다.import java.util.Scanner;class SeqSearch { // 크기가 n인 자바 배열 a에서 key와 값이 같은 요소를 선형 검색하는 메소드 .. 2024. 5. 2.
[Java] Static, Heap, Stack 메모리 JVM이 프로그램을 효율적으로 가동하기 위해 메모리 공간을 Static, Stack 그리고 Heap으로 분리하여 관리한다. 각 공간은 서로 다른 특징을 가지고 있다. Static 영역 (메서드 영역)Static영역에 저장된 변수는 프로그램이 시작하자마자 한 번 생성이 되고, 프로그램이 종료돼야 없어진다.따로 생성을 하지 않아도 계속 사용 및 접근이 가능하다.정적 멤버 변수(static으로 선언된 class변수)가 저장된다.java.lang 패키지, import한 패키지 그리고 프로그램 상의 class들이 들어간다.메모리 할당 방식이 '정적'이기에 static영역이라고 한다. Heap 영역프로그램 실행 중 생성되는 모든 객체들을 저장하는 영역이다.객체 생성 시 메모리가 할당되고, 객체가 더 이상 사용되지 .. 2024. 4. 25.
JDBC 로 MySQL 연결하기 자바에서 JDBC 사용 준비하기 자바에서 JDBC를 사용하기 위해 다음과 같은 객체들을 우선 선언한다. public class TestClass { // DB 연결을 유지하는 객체 public static Connection conn = null; // SQL을 담는 객체 public static Statement stmt = null; // select문의 결과 값을 받는 객체 public static ResultSet rs = null; } 그리고 MySQL에 연결하기 위해 연결하고자 하는 MySQL드라이버의 설정들을 다음과 같이 먼저 작성한다. // MySQL에 연결할 드라이버클래스를 문자열 형태로 선언 public static String driverClass = "com.mysql.cj.jdbc.. 2024. 3. 30.
JDBC 기초 JDBC란? (Java Database Connectivity) JDBC는 자바에서 데이터베이스에 접근할 수 있게 해 주는 Java의 Library로, 실제 DB에 접근하기 위해 DB벤더별로 다른 JDBC 드라이버 (.jar파일)을 활용하고, Java에서 JDBC Interface를 통한동일한 코드로 각기 다른 DB를 접근할 수 있는 API(Application Programing Interface)이다. JDBC 연결 순서 JDBC를 연결하기 위해 다음과 같은 순서대로 코딩을 하게 된다. 드라이버 등록 (Driver Manager) DBMS와 연결 (Connection) SQL 생성 (String) SQL 전송 (Statement) 결과 받기 ResultSet | int) 연결 닫기 (close) 2024. 3. 28.
[Java] 상속 상속이란? A클래스가 B클래스를 상속받으면, B클래스가 가지고 있는 메소드와 필드들을 새로 작성하지 않고 바로 A클래스에서 사용 가능하다. 이는 객체지향 설계에서 매우 유용한 개념으로, 여러 클래스를 공통으로 관리하여 유지/보수를 보다 효율적으로 해 준다. 자바에선 다음 방식으로 상속을 표시한다. public class AClass extends BClass { // A클래스가 B클래스를 상속한다는 표현 } 단, final class를 다른 클래스가 상속받을 수 없다. 오버라이딩 (Overriding) 자식 클래스가 상속받은 부모 메소드를 고쳐 사용(재정의)하는 행위를 오버라이딩이라고 한다. 메소드를 오버라이딩 하면 해당 메소드를 자식 클래스를 통해 실행하면 오버라이딩된 내용의 메소드가 실행된다. 자바에.. 2024. 3. 20.
[Java] 람다식 (Lambda Expression) 람다식 (Lambda Expression) 람다식, 또는 람다 함수는 프로그래밍 언어에서 사용되는 개념으로, 익명 함수(Anonymous function)를 지칭하는 용어이다. 람다식을 사용하면 메소드를 새로 만들지 않고 바로 간결하게 원하는 명령을 간결하게 작성할 수 있어서 생산성을 높일 수 있다. 자바에서 람다식 문법은 (인자) -> {실행코드} 형태로 적게 된다. 경우에 따라 소괄호와 중괄호가 생략되기도 한다. 작성 예시 // 기존의 메소드 표현 문법 int max(int a, int b) { return a > b ? a : b; // a와 b를 비교해서 큰 값을 출력하게 됨 } // 람다식 문법1 (int a, int b) -> { return a > b ? a : b; } // 람다식 문법2 .. 2024. 3. 14.
[Java] 예외처리 (Exception) 프로그램 오류 (Error) 프로그램 수행 중 치명적인 결함이 발생하여 비정상 종료가 된 상태이다. 자바에서 크게 컴파일 에러, 런타임 에러 그리고 시스템 에러가 있다. 컴파일 에러 프로그램 실행을 막는 소스 코드 상 문법 에러. 소스 코드를 수정하면 해결. 런타임 에러 입력값이 틀렸거나, 배열의 인덱스 범위를 벗어났거나 계산식의 오류 등의 에러. if문으로 처리 가능. 시스템 에러 컴퓨터 오작동으로 인한 에러. 소스 코드로 해결 불가. 소스 코드를 통해서 해결 가능한 에러를 예외(Exception)이라고 하며, 이러한 예측가능한 예외 상황을 처리해주는 것을 "예외처리"라고 한다. throws Exception 메소드를 선언할 때, throws Exception을 추가하여 호출한 상위 메소드에게 예외처리.. 2024. 3. 12.