[Java] String vs StringBuilder vs StringBuffer - 성능 비교 실험
·
Java/Java
Java에서 문자열을 다루는 방법은 다양하며, 대표적으로 String, StringBuilder, StringBuffer가 있습니다.이 세 가지 클래스는 각각의 특징과 성능이 다르기 때문에, 사용 상황에 따라 적합한 것을 선택하는 것이 중요합니다.이번 포스트에서는 String, StringBuilder, StringBuffer의 차이점과 장단점을 비교해 보겠습니다.  1. String, StringBuilder, StringBuffer란?Java에서는 문자열을 다루기 위한 여러 가지 클래스가 제공됩니다:String: 불변(immutable) 객체로, 한 번 생성되면 수정할 수 없습니다.StringBuilder: 가변(mutable) 객체로, 동기화를 지원하지 않아 싱글 스레드 환경에서 빠르게 동작합니다...
[Java] StringBuilder 메서드 정리
·
Java/Java
알고리즘 문제를 풀며 자주 사용했던 StringBuilder를 더 깊이 공부하고, 주요 메서드를 정리했습니다. StringBuilder는 문자열을 효율적으로 다룰 수 있는 강력한 도구로, 이를 잘 활용하면 성능을 크게 향상시킬 수 있습니다. 1. StringBuilder란?StringBuilder는 가변(mutable) 문자열을 처리하기 위해 Java 1.5(Java 5)에서 도입된 클래스입니다. Java의 String 클래스는 불변(immutable)이기 때문에 문자열을 조작할 때마다 새로운 객체가 생성되는데, 이는 성능 문제를 야기할 수 있습니다. 반면 StringBuilder는 기존 객체를 수정하여 효율적으로 문자열을 조작할 수 있습니다. StringBuilder의 특징가변성: 문자열을 추가, 수정..
[Spring Boot] 스프링 부트 폴더 구조 이해하기
·
Spring/Spring Boot
스프링 부트 프로젝트를 처음 생성하면, 주로 다음과 같은 폴더 구조를 가지게 됩니다. 1. java 폴더 /src/main/java 폴더는 애플리케이션의 주요 소스 코드가 위치하는 곳입니다. 이곳에는 컨트롤러, 서비스, 리포지토리, 도메인 모델 등의 자바 클래스 파일들이 저장됩니다. 2. resources 폴더 /src/main/resources 폴더는 애플리케이션에서 사용하는 각종 리소스 파일들이 위치하는 곳입니다. 이곳에는 정적 리소스, 뷰 템플릿, 설정 파일 등이 저장됩니다. 2.1. static 폴더 /src/main/resources/static 폴더는 웹 애플리케이션의 정적 리소스를 담기 위한 폴더입니다. 정적 리소스란, 웹 페이지에서 사용되는 CSS, JavaScript, 이미지 파일 등을 ..
[OOP] C3. 자바와 객체지향
·
Java/OOP
1. 클래스(개념), 객체(실체) 클래스는 분류에 대한 개념이지 실체가 아니다. 하지만 객체는 실체다. 클래스는 사람이고, 객체는 손흥민이다. 클래스는 펭귄이고, 객체는 뽀로로이다. 클래스와 객체를 구분하는 방법 중 하나는 나이를 물어보는 것이다. ● 사람의 나이는 몇 살인가? VS 손흥민의 나이는 몇 살인가? ● 펭귄의 나이는 몇 살인가? VS 뽀로로의 나이는 몇 살인가? 클래스를 실체가 아닌 개념으로써 받아들여야 자바 프로그래밍에서 혼동하지 않게 된다!! 2. 추상화 : 모델링 객체 지향의 추상화는 모델링을 의미합니다. 추상화는 구체적인 개념이나 객체를 분해하여 그 중에서 관심 있는 특성만을 가지고 재조합하는 과정을 말합니다. 구현하고자 하는 것을 하나의 클래스로 모델링, 추상화하게 되는데 여기서 클..
[OOP] ==과 equals()의 차이점
·
Java/OOP
1. 자바에서 ==와 equals()의 차이점 자바에서 매우 중요한 개념인 == 연산자와 equals() 메서드의 차이점에 대해 알아보려고 합니다. 이 두 가지는 모두 객체를 비교하는 데 사용되지만, 그 방식과 결과는 상황에 따라 매우 다를 수 있습니다. 그러니 자세히 살펴보도록 하겠습니다. 2. == 연산자 2.1) 기본 데이터 타입(리터널 선언) - 값 자바에서 == 연산자는 주로 기본 데이터 타입의 값을 비교할 때 사용됩니다. byte, short, int, long, float, double, char, boolea 등의 값이 같은지 비교할 때는 == 연산자를 사용하면 됩니다!! // 리터널로 선언 int a = 2024; int b = 2024; System.out.println(a == b);..
[OOP] C6. SOLID: 효율적인 객체지향 설계를 위한 5대 원칙
·
Java/OOP
0. 객체 지향 설계 5원칙 SOLID SOLID는 객체 지향 설계 5원칙을 앞 글자를 따서 만든 말이다. 소프트웨어의 결합도는 낮추고, 응집도는 높이는 고전 원칙을 객체 지향의 관점에서 재정립한 것이라고 할 수 있다. ● 결합도 모듈(클래스) 간의 상호 의존 정도를 나타낸다. 결합도가 낮으면 모듈 간의 상호 의존성이 줄어들어 객체의 재사용이나 수정, 유지보수가 용이하다 . ● 응집도 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성을 말한다, 응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아서 재사용이나 기능의 수정, 유지보수가 용이하다. 1. Single Responsibility Principle (단일 책임 원칙) 클래스는 단 한개의 책임을 가져야 한다. 클래스를 변경하는 이유는 ..
[OOP] 가비지 컬렉션(Garbage Collection) - 생성과 소멸
·
Java/OOP
1. 가비지 컬렉션(Garbage Collection) 가비지 컬렉션은 영어로 Garbeage Collection으로 줄여서 GC라고도 부릅니다. 가비지 컬렉션은 자바의 메모리 관리 방법 중의 하나로 JVM의 Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제하는 프로세스를 말합니다. 2. 가비지 컬렉터(Garbage Collector) 가비지 컬렉터는 가비지 컬렉션을 수행하는 실제 동작을 담당하는 컴포넌트입니다. 자바 가상 머신(JVM)에서 실행되며, 가비지 컬렉션 알고리즘에 따라 사용하지 않는 객체를 탐지하고 제거합니다. 가비지 컬렉터는 자동으로 동작하며, 개발자가 직접 메모리 관리를 신경쓰지 않아도 됩니다. ● C와 C++ 같은 Unmanaged lang..
[OOP] Call by Value 와 Call by Reference
·
Java/OOP
'Call by Value'와 'Call by Reference'에 대해 알아보겠습니다. 이 두 개념은 함수에 인자를 전달하는 방식에 대한 이해를 돕고, 자바 코드의 동작을 예측하는 데 도움이 됩니다. 1. Call by Value(값에 의한 호출) 'Call by Value'는 함수에 인자를 전달할 때 인자의 값만을 복사해서 전달하는 방식을 말합니다. 이 방식에서는 원본 변수의 값이 함수 내에서 변경되더라도, 원본 변수에는 영향을 주지 않습니다. 자바에서 원시 타입(primitive types) 변수를 전달할 때 'Call by Value' 방식이 적용됩니다. 예를 들어, 아래의 코드를 보겠습니다. public class Main { static void updateValue(int value) { v..
[OOP] C1. 기계어에서 객체지향 언어로: 컴퓨터 언어의 진화
·
Java/OOP
1. 기계어 (Machine Language) 컴퓨터가 직접 이해하는 언어로 0과 1로 이루어진 이진 코드로 구성됩니다. 프로그래밍이 매우 어렵고 복잡하며, 인간이 이해하기 힘듭니다. CPU 회사마다 기계어가 다르다.(코드의 이식성이 안좋다.) 2. 어셈블리어 (Assembly Language) 기존의 0과 1의 나열에서 벗어나 좀 더 인간친화적인 언어 형태를 갖추었다. 기계어를 인간이 이해하기 쉽도록 기호화한 언어입니다.( ADD, PLUS) 기계어와 1:1로 대응되며, 기계어보다 이해하고 작성하기 쉽습니다. 각 운영체제, 하드웨어 종류에 따라 고유의 어셈블리어가 존재한다.(호환 X) 아직은 프로그래밍이 복잡하며 하드웨어에 의존적이며, 이식성이 떨어집니다. 3. C언어 (C Language) 고급 언어..
[JAVA] C7. 객체지향 프로그래밍 I
·
Java/Java 입문
내용: 객체, 클래스, 생성자, 접근 제한 지시 1. 객체지향이란 객체지향 프로그래밍(Object Oriented Programming, OOP)은 프로그래밍 패러다임 중 하나로, 코드를 객체라는 기본 단위로 나눠 설계하고 구현하는 방식을 말합니다. 객체지향 프로그래밍의 특징 캡슐화(Encapsulation) 데이터와 그 데이터를 처리하는 함수를 하나의 '객체'로 묶는 것을 말합니다. 이를 통해 데이터를 보호하고 코드를 보다 쉽게 관리할 수 있습니다.(은닉화) 상속(Inheritance) 이미 만들어진 클래스의 속성과 메서드에 다른 클래스가 물려받아 기능을 추가하는 것을 말합니다. 코드의 재사용을 촉진하고, 코드의 관리를 효율적으로 만듭니다. 다형성(Polymorphism) 같은 이름의 메서드가 다른 동..
JoonYong
'java' 태그의 글 목록