본문 바로가기

Java25

String vs StringBuilder vs StringBuffer String, StringBuilder, StringBuffer의 차이 Java에서 흔히 문자열을 선언할 때는 아래와 같이 String 타입을 사용한다. String str = "Hi!"; str = str + " MinSu?"; //연산 작업 또한 처음에는 Hi!만 할당했지만 추가적으로 뒤에 문자열을 추가하려면 + " MinSu?" 처럼 연산 작업을 수행해야 한다. 이게 많지 않을 때는 크게 이슈가 없어서 상관이 없지만 연산 작업이 많아지면 String 클래스는 치명적인 단점을 가지고 있다. 이 단점을 보완한 것이 바로 StringBuilder와 StringBuffer이다. String 먼저 String과 (StringBuilder, StringBuffer)의 가장 큰 차이점은 String은 불변성 특.. 2023. 3. 15.
Java. 인터페이스를 사용하여 if else문 없애기! [코드 개선] Java. 무수히 많은 if else문 개선해보자. 이번에 회사에서 반복되는 if else문을 인터페이스(Interface)를 사용하여 개선하였습니다. 기존에 소스는 한 메서드에 대략 700줄을 차지 했는데 그렇게 차지한 이유는 무수히 많은 if else문 때문이었습니다. 메서드의 라인수가 700라인이나 되기 때문에 메서드의 역할을 파악하기가 힘들고, 유지보수하기가 굉장히 까다로워지기 때문에 개선할 필요성을 느꼈습니다. 개선한 내용은 https://jessyt.tistory.com/47 글을 적극적으로 활용하였습니다. 추가로 아래 소스는 회사의 소스와는 무관합니다. 소스코드: https://github.com/azurealstn/blog-summary/tree/main/refactoring 기존 예제소스.. 2022. 12. 15.
JVM에 대해 자세히 알아보자! JVM에 대해 자세히 알아보자! JVM에 대해 알아보기 전에 Java의 특징에 대해 간략히 알아보자. JVM, JRE, JDK JVM(Java Virtual Machine)이란 자바 바이트코드를 해석하고 실행하는 요소이다. JVM의 역할은 자바 애플리케이션을 클래스 로더(Class Loader)를 통해 읽어 들여서 자바 API와 함께 실행하는 것이다. JVM의 가장 중요한 특징은 Java와 OS(운영체제) 사이에서 중개자 역할을 수행하여 Java가 OS(운영체제)에 구애받지 않고 독립적으로 작동이 가능하다는 것이다. C/C++ 등의 언어처럼 컴파일러를 통해 바로 기계어로 변환하는 것이 아닌 JVM이 이해하는 자바 바이트코드를 해석하고 실행한다. 이를 통해 윈도우(내 로컬 PC)에서 작업한 자바 파일을 리.. 2022. 7. 12.
왜 public static void main(String[] args) ? public static void main(String[] args) {} @SpringBootApplication public class PsvmApplication { public static void main(String[] args) { SpringApplication.run(PsvmApplication.class, args); } } 위 코드는 스프링 부트 프로젝트를 생성하고 default로 생성되는 class 이다. 프로젝트가 제대로 생성이 되었는지 먼저 위의 main 메서드를 실행하고 localhost:8080을 접속해본다. 자바의 call stack을 봐도 main()이 가장 먼저 쌓이고, 즉 자바는 프로그램을 실행시킬 때 main 메서드를 찾는다. 그럼 왜 public static voi.. 2022. 4. 16.
HashTable VS HashMap VS ConcurrentHashMap HashTable, HashMap, ConcurrentHashMap HashTable, HashMap, ConcurrentHashMap 의 차이점 위주로 알아봅니다. 좀 더 자세한 설명은 또 따로 포스팅할게요. HashTable, HashMap, ConcurrentHashMap 의 자료구조 HashTable, HashMap, ConcurrentHashMap 은 키를 값에 매핑할 수 있는 구조인 (Key, Value) 형태로 데이터를 저장하는 자료구조이다. HashTable, HashMap, ConcurrentHashMap 은 모두 자바 컬렉션 프레임워크인 Map 인터페이스의 구현 객체다. HashTable, HashMap, ConcurrentHashMap 의 차이점 HashTable public sync.. 2022. 4. 16.
[자바 라이브 스터디] 15. 람다식 15주차 과제: 람다식 목표 자바의 람다식에 대해 학습하세요. 학습할 것 람다식 사용법 함수형 인터페이스 Variable Capture 메소드, 생성자 레퍼런스 람다식 사용법 람다식(Lambda Expression)이란 함수를 하나의 식으로 표현할 것을 말합니다. 함수를 람다식으로 표현하면 메소드명이 필요없게 됩니다. 그래서 람다식을 익명 함수(Anonoymous Function)의 한 종류라고 볼 수 있습니다. @FunctionalInterface public interface MyInterface { int sum (int x, int y); } 먼저 인터페이스를 만들고 두 파라미터를 받는 sum이라는 추상 메소드가 있습니다. public class Main { public static void ma.. 2021. 10. 26.