Wating

전체 글

환영합니다! jhcode33의 기술 블로그입니다. 노션으로 기록한 것을 N2T 자동화를 사용하여 티스토리로 소통하고자 합니다. java, spring에 관심이 많습니다. 피드백은 언제나 환영입니다!
📕Java

String, StringBuffer, StringBuilder

✅ String, StringBuffer, StringBuilder ClassesString, StringBuffer, StringBuilder는 자바에서 문자열을 다루는 클래스들입니다. 🔹StringString은 불변(immutable) 클래스로, 한번 생성된 문자열은 수정이 불가능합니다. 따라서 문자열 연산이 많은 경우, 매번 새로운 문자열 객체를 생성하기 때문에 메모리 사용량이 많아질 수 있습니다. 자바의 String은 변경할 수 없는(immutable) 유니코드 문자의 시퀀스를 포함합니다. 이는 C/C++와 달리 자바의 String은 단순한 char 배열이 아닌 java.lang.String 클래스의 객체입니다. String str = "Hello"; str += " World";위의 코드는 "H..

📕Java

스코프(Scope)의 유형과 범위

✅ 스코프(Scope)란?Scope(범위)는 프로그래밍에서 변수, 함수 및 식별자의 유효 범위를 말합니다. 스코프는 해당 식별자가 어디에서 접근 가능한지를 결정하며, 변수 이름 충돌을 방지하고 코드의 가독성과 유지 보수성을 향상시킵니다. ➡️일반적으로 사용되는 스코프 유형은 다음과 같습니다.전역 스코프(Global Scope)프로그램 전체에서 접근 가능한 범위를 말합니다. 전역 스코프에 선언된 변수와 함수는 어떤 위치에서든 사용할 수 있습니다. 전역 변수는 프로그램이 시작될 때 생성되며, 프로그램이 종료될 때까지 유지됩니다.(자바는 전역변수를 지원하지 않습니다) 지역 스코프(Local Scope)특정 블록 내에서 변수나 함수의 유효 범위를 제한합니다. 일반적으로 중괄호({})로 둘러싸인 코드 블록(예: ..

📕Java

추상화, Abstract Class, Interface

—What are abstraction, abstract class, interface in Java✅ 추상화(Abstraction)란?자바의 추상화는 객체 지향 프로그래밍에서 중요한 개념 중 하나로, 복잡한 시스템이나 개념을 단순화하고 필요한 부분에 집중할 수 있도록 하는 과정입니다. 쉽게 말해서 공통적인 부분은 추상적으로 모으고, 개별적인 부분은 구체적으로 따로 만드는 것입니다. 공통된 특징과 동작을 추상화하여 나타내고, 구체적인 내용은 이를 구현한 객체를 통해서 나타냅니다. 객체 지향 프로그래밍에서는 추상 클래스와 인터페이스를 통해 추상화를 구현합니다. 추상화는 세부적인 내용을 숨기고 중요한 개념이나 특징에 집중함으로써 복잡성을 감소시키는데 도움을 줍니다. 이를 통해 소프트웨어 개발자는 복잡한 시스..

📕Java

Java의 접근 제어자(Access Modifiers)

access modifiers을 지칭할 때 "접근 지시자”, “접근 제어 지시자”, “접근 제어자”, “접근 제한자” 등은 동일한 의미로 사용되고 있습니다. 아래에서는 접근 제어자로 통일하겠습니다. ✅ 접근 제어자의 사용이유 : 캡슐화객체 지향 프로그래밍에서 캡슐화는 클래스의 데이터(상태)와 그 데이터를 조작하는 메소드(행동)를 하나로 묶는 것을 의미합니다. 이렇게 하면 클래스의 내부 구조를 외부에서 직접 접근하거나 변경하는 것을 제한하고, 메소드를 통해서만 데이터를 변경하거나 액세스할 수 있게 합니다. 즉, 데이터를 '캡슐' 안에 보호하고, 외부에서는 해당 '캡슐'에 어떻게 접근하고 조작할 수 있는지에 대한 인터페이스만 제공하는 것입니다. 자바에서는 이를 구현하기 위해 접근 제어자(access modi..

📕Java

Java의 패키지란?

What is Java's package? Package structure and naming rules✅ 패키지(Package)자바에서 `package` 키워드는 클래스를 패키지에 속하도록 정의하는 데 사용됩니다. 패키지는 클래스들을 논리적으로 그룹화하고, 클래스들 간의 이름 충돌을 방지하고, 코드의 구조화를 도와주는 역할을 합니다. 여러 가지 이유로 `package` 키워드를 사용하는 이유는 다음과 같습니다 이름 충돌 방지패키지는 동일한 이름을 가진 클래스들을 구분할 수 있도록 해줍니다. 서로 다른 패키지에 속한 클래스들은 같은 이름을 가질 수 있습니다. 이를 통해 다른 패키지에서 동일한 이름의 클래스를 사용할 때 이름 충돌을 방지할 수 있습니다. 코드 구조화패키지는 클래스들을 그룹화하여 코드를 구조..

📕Java

Java의 Compile Error, Runtime Error란?

What is Complile Error, Runtime Error? ✅ 컴파일 오류(Compile Error)컴파일 오류는 소스 코드를 컴파일하는 동안 발생하는 오류입니다.이러한 오류는 코드의 구문이나 타입 검사, 변수 선언 등과 같은 규칙에 어긋나는 경우에 발생합니다.컴파일러는 이러한 오류를 감지하고 해당 줄의 오류를 보고합니다.컴파일 오류가 발생하면 프로그램이 컴파일되지 않고 실행되지 않으며, 오류를 수정해야 합니다.일반적인 컴파일 오류 예시: 문법 오류, 타입 불일치, 선언되지 않은 식별자 등 👉 아래는 컴파일 오류의 Syntax(문법) 오류에 대한 예시 코드입니다.System.out.println("The value of x is: " + x; ^ 1 error 위의 코드에서는 System.ou..

🖥️Computer-Science

인코딩과 디코딩은 무엇인가?

Encoding, Decoding컴퓨터가 숫자 밖에 모르기 때문에 문자를 숫자로 변환하기 위해서 저장하는 방식을 정한 것이 인코딩, 디코딩입니다.✅ Encoding인코딩(Encoding)은 정보를 특정 형식으로 변환하는 컴퓨터가 이해하고 처리하기 쉽도록 만들기 위한 과정입니다. 문자를 컴퓨터가 이해할 수 있는 이진수로 저장하기 위한 방법입니다. 다음은 몇 가지 대표적인 인코딩 형식에 대한 설명과 예시입니다. ASCII (American Standard Code for Information Interchange)ASCII는 영문 알파벳, 숫자, 구두점 및 일부 특수 문자를 나타내기 위해 개발된 가장 오래된 인코딩 형식입니다. ASCII는 7비트로 표현되며, 각 문자에 대해 7비트의 이진 코드가 할당됩니다...

📕Java

클래스와 객체(인스턴스)

✅ 클래스와 객체클래스란 ‘객체를 정의해 놓은 것’, 또는 ‘객체의 설계도, 틀’이라고 할 수 있습니다. 클래스는 관련된 데이터와 메서드(기능)의 집합으로, 객체를 생성하는데 사용됩니다. 객체는 클래스의 인스턴스(실체)로, 클래스에 정의된 데이터와 메서드를 사용할 수 있습니다. 즉, 객체를 만들기 위해 구성하는 틀이라고 생각하면 됩니다. 현실 세계의 자전거를 빗대어 클래스에 대해 알아보겠습니다.현실 세계의 자전거는 아래와 같은 데이터를 가지고 있고, 특정한 동작을 수행합니다. 🔻클래스 : 자전거 (Bicycle)—속성 (데이터):색깔 (color): 빨강, 파랑, 노랑 등브랜드 (brand): Giant, Trek, Cannondale 등가격 (price): 정수나 실수로 표현되는 가격속도 (speed)..

📕Java

매개변수와 인수의 차이

🔎 매개변수란?매개변수(parameter)함수 또는 메서드의 선언 부분에서 정의된 변수를 말합니다. 변수의 타입과 이름이 정의됩니다. 매개변수는 함수 또는 메서드가 호출될 때에 전달되는 인수(argument)를 받아들이기 위해 사용됩니다. 매개변수는 함수 또는 메서드 내부에서 사용되는 지역 변수의 역할을 합니다. 즉, 메소드가 종료되면 그 값도 소멸하게 됩니다. 메소드를 정의할 때 넘겨주는 타입과 변수명은 파라미터이다. 🔎 인수란?인수(Argument)함수 또는 메서드를 호출할 때 전달되는 값들을 말합니다. 호출 시에 실제로 전달되는 값들을 인수라고 합니다. 인수는 파라미터와 일치하는 순서로 전달되며, 함수 또는 메서드 내부에서 해당 인수들을 활용하여 동작을 수행합니다. 메소드를 실행할 때 넘겨주는 변수..

🍀Spring/📖toby-spring

[토비의 스프링 Maven] Junit Test와 TDD

🔥지금까지 간단하게 JUnit Test를 적용했다. 지금부터 메소드를 수정하여 테스트의 일관성, 포괄성을 향상시키고 테스트주도개발(TDD)에 대해서 알아보자. ✅ 테스트 결과의 일관성UserDaoTest의 addAndGet() 메소드를 테스트 하기 전에는 Primary key인 id가 겹치지 않게 테이블의 데이터를 삭제하거나, id의 값을 변경해주어야 했다. DB의 상태에 따라 테스트의 결과가 바뀐다는 점이 아쉽다. 코드에 변경사항이 없다면 테스트 코드는 외부에 영향을 받지 않고 언제나 일관된 결과를 내야한다. 즉, DB에 남아 있는 데이터와 같은 외부 환경에 영향을 받지 말아야 하는 것은 물론이고, 테스트를 실행하는 순서를 바꿔도 동일한 결과가 보장되도록 만들어야 한다. deleteAll(), getC..

jhcode33
jhcode33의 기술블로그