BackEnd/Java 20

[Java] 이것이 자바다 - 2장. 변수와 타입

프로그래머가 직접 입력한 값 - 리터럴(literal)Long 타입은 수치가 큰 데이터를 다루는 프로그램에서 사용된다.은행이나 과학분야에서 사용함기본적으로 컴파일러는 정수 리터럴을 int타입 값으로 간주하기 때문에 int 타입을 초과하는 리터럴은뒤에서 소문자l이나 대문자L을 붙여 long타입 값임을 컴파일러 에게 알려줘야함하나의 문자를 작은 따옴표로 감싼 것을 문자 리터럴이라고 한다.유니코드로 변환되어 저장된다.유니코드 ?세계 각국의 문자를 0 - 65535 숫자로 매핑한 국제 표준 규약double floatdouble은 float보다 약 2배의 유효 자릿수를 가지기 때문에 보다 정확한 데이터 저장이 가능하다.double이라는 이름도 float보다 2배의 정밀도를 갖는다는 의미String 타입은 자바 기..

BackEnd/Java 2024.06.08

[Java] 스프링 개구리 책 - 붕어빵틀과 붕어빵에 대한 오해

흔히들 자바의 클래스를 설명할때 붕어빵과 붕어빵 틀에 대해 얘기한다.내가 요즘 읽고있는 책에서는 이러한 설명방식이 잘못된 설명방식 이라고 이야기 한다.평소에 붕어빵틀 - 붕어빵으로 클래스를 이해해 왔기에 글을 읽고 생각하는 시간을 가져보았다.클래스 vs 객체 - 붕어빵틀과 붕어빵??..클래스 객체명 = new 클래스();여기 까지는 이해하기 어렵지 않다.그렇다면 아래 코드는?붕어빵틀 붕어빵 = new 붕어빵틀(); ??바로 위의 코드가 논리에 맞다고 생각한다면, 다시 한 번 생각해보는 것이 좋을 것 같다..위의 코드를 이해하기 쉽도록 문장으로 풀어본다면,새로운 붕어빵틀을 만들었더니 붕어빵이 되었다 이것이 붕어빵틀 to 붕어빵으로 이해하여 오류가 생긴 부분이라고 생각한다.객체지향적인 개발을 할때는 반드시 ..

BackEnd/Java 2024.05.27

[Java] 순수 자바 코드로 스프링 프레임워크 구현하기 - Servlet

사내 스터디로 스프링 프레임워크를 직접 자바 코드로 구현하는 것을 주제로 잡아 공부하고 있다.첫번째는 Servlet이다.Servlet 이란?Servlet은 자바를 사용하여 웹 서버에서 실행되는 서버 프로그램입니다.보통 HTTP 요청을 처리하고, 동적인 웹 콘텐츠를 생성하는데 사용을 합니다.서블릿은 Java EE(Enterprise Edition) 플랫폼의 일부로,웹 애플리케이션의 요청과 응답을 처리하기 위한 표준 API를 제공합니다.Servlet 의 주요 특징Servlet은 자바 클래스이며, 'javax.servlet' 패키지에 속합니다. HttpServlet 클래스를 상속받아 구현됩니다.Servlet은 생성, 초기화, 요청 처리, 소멸 의 순서로 라이프사이클을 가집니다.Servlet 구현 및 테스트스터..

BackEnd/Java 2024.05.16

[Spring] 싱글톤 컨테이너, 컴포넌트와 컴포넌트 스캔

싱글톤 컨테이너 스프링 컨테이너는 싱글톤 패턴의 문제점들을 해결하면서, 객체 인스턴스를 싱글톤으로 생성한다. 스프링에서는 싱글톤 패턴을 구현하기 위한 지저분한 코드가 필요없다. DIP, OCP , 테스트, private 생성자로 부터 자유로워진다. 스프링 컨테이너를 사용하면 기본적으로 싱글톤으로 사용된다. 싱글톤 방식말고 요청할때마다 새로운 객체를 생성해서 반환하는 기능도 제공한다. 하지만 거의 대부분 99% 싱글톤 방식을 사용한다. 싱글톤 방식의 주의점 싱글톤 패턴이든, 스프링 컨테이너든, 하나만 생성해서 공유하는 싱글톤 방식은, 상태를 유지하게 설계되면 안된다. 무상태로 설계해야한다 특정 클라이언트에 의존적인 필드가 있으면 안된다. 특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안된다. 가급적..

BackEnd/Java 2024.04.07

[Java] Optional(옵셔널) 이란?

Optional 옵셔널이란 무엇인가? 옵셔널은 자바 8에서 도입된 클래스로, null 값을 안전하게 처리하기 위한 도구입니다. 옵셔널은 값이 존재하는 경우 Optional 객체에 값을 감싸서 저장하고, 값이 없는 경우에는 빈 Optional 옵셔널의 장점 NullPointerException 방지: 옵셔널을 사용하면 null 값으로 인한 NullPointerException을 예방할 수 있습니다. 코드 간결화: null 체크 코드를 생략하여 코드를 간결하게 작성할 수 있습니다. 코드 안전성 향상: null 값으로 인한 오류를 줄여 코드의 안전성을 높일 수 있습니다. 옵셔널 생성 Optional.of(value): 값이 null이 아닌 경우 옵셔널 객체를 생성합니다. Optional.ofNullable(v..

BackEnd/Java 2024.03.21

[Java] Thread의 내부 생성자, 메소드

스레드의 생성자와 메소드 1) 생성자 Thread( ) : 새로운 스레드 객체 할당 Thread(String name) : 새로운 스레드 객체가 할당되며, 스레드 이름은 name으로 설정됨 Thread(Runnable target) : Runnable target이 구현된 스레드 객체 할당 Thread(Runnable target, String name) : Runnable target이 구현된 스레드 객체가 할당되면 스레드 이름은 name으로 설정됨. 2) 메소드 void run( ) : 스레드의 실행코드가 작성되는 메소드로 사용자는 run() 메소드를 오버라이드 하여 사용해야 합니다. void start( ) : 스레드가 시작되도록 요청하는 메소드로 JVM은 해당 스레드의 run() 메소드를 호출합니..

BackEnd/Java 2023.12.08

[Java] 김영한의 실전 자바 정리 2 - 패키지 ~ 메모리 구조와 static

패키지 컴퓨터는 보통 파일을 분류하기 위해 폴더, 디렉토리라는 개념을 제공한다. 자바도 이런 개념을 제공하는데, 이것이 바로 패키지 이다. 같은 패키지에 존재하면 경로를 생략해도된다 다른 위치의 패키지 라면, 전체 경로를 포함해서 클래스를 적어야 한다. 패키지 안에 있는 모든 클래스를 import하고 싶으면 *을 통해 추가한다. 클래스가 중복 되어도 패키지 이름으로 구분해서 사용할 수 있다. import pack.a.User; import pack.b.User; 이런식으로 같은 클래스명이 import되었을때 하나는 User로 사용이 가능하지만 두번째 부터는 pack.b.User 이런식으로 사용해야한다. 패키지의 규칙 이름과 위치는 폴더 위치와 같아야한다. 패키지 이름은 모두 소문자를 사용한다 (관례) 패..

BackEnd/Java 2023.12.04

[Java] 김영한의 실전 자바 기본 공부 내용 정리 - 1

기본형 : int long double boolean 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입 참조형 : Student student, int[] students 와 같이 데이터에 접근하기 위한 참조를 저장하는 데이터 타입 참조형 변수는 참조값이 존재하는 위치를 저장한 변수 기본형은 들어있는 값을 그대로 계산에 사용할 수 있다. 참조형은 그대로 사용할 수 없다. 왜? 주소지만 가지고 있기때문에 주소지에 있는 변수에 까지 접근해야한다. 기본형은 연산 o 참조형은 연산 x 기본형을 제외한 나머지는 모두 참조형이고, 기본형은 타입이 모두 소문자로 시작한다. 자바가 기본으로 제공하는 타입 개발자가 새로 만들고 싶다면 Class를 통해서 구현하며 이것은 참조형이다. String? 자바에서 Stri..

BackEnd/Java 2023.12.01

[Java] 클래스, 객체, 인스턴스 정리

package class1; public class ClassStart1 { public static void main(String[] args) { // 데이터 변경시에 정확한 인덱스를 찾아서 제거하는 것이 너무 위험하다. // 실수하기 좋은 코드, 컴퓨터는 상관없지만, 사람이 컨트롤하기 힘든 코드 // 하나로 묶어서 관리하는게 좋을 것 같다. -> 클래스 String[] studentName = {"학생1","학생2","학생3"}; int[] studentAge = {15,16,17}; int[] studentGrade = {90,80,70}; for(int i = 0; i < 3; i++){ System.out.println(studentName[i] + " " + studentAge[i] + " ..

BackEnd/Java 2023.11.30

[Java] CheckException 과 UncheckedException의 차이

Java의 Exception 컴퓨터의 동작오류 및 하드웨어의 오류로 인한 실행의 오류가 발생한 경우, 자바에서는 에러(error)라고 합니다. 이것은 JVM 실행에 문제가 있다는 뜻으로 아무리 잘 만들어진 프로그램이라도 실행 불능 상태가 되어버립니다. 자바에서는 에러이외에 예외(Exception)이라는 오류가 존재합니다. 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말합니다. 예외가 발생되면 프로그램은 곧바로 종료된다는 점에서 에러와 동일합니다. 예외에는 두가지 종류가 있습니다. 하나는 일반 예외(Exception)이고, 다른 하나는 실행 예외(Runtime Exception)이다. 일반 예외는 컴파일 체크 예외라고도 하는데, 자바 소스를 컴파일하는 과정에서 ..

BackEnd/Java 2023.09.04