
4. String, StringBuffer, StringBuilder 차이 및 장단점
2023. 4. 6. 19:00
개념정리
Java 에서 문자열을 다루는 클래스 1. String vs StringBuffer/ StringBuilder String과 StringBuffer/ StringBuilder 클래스의 가장 큰 차이점은 String은 불변 (immutable)의 속성을 갖는다는 점 String str = "hello"; str = str + "world"; // [hello world] >> hello 에 world 문자열을 더해 "hello world"로 변경된게 아님 "hello"값이 들어가 있던 String 클래스의 참조변수 str이 "hello world"라는 값을 가지고 있는 새로운 메모리영역을 가리키게 변경되고, 처음에 선언했던 "helllo"로 값이 할당되어 있던 메모리 영역은 Garbage로 남아있다가 GC..

3. 자바 컴파일 과정
2023. 4. 5. 19:53
개념정리
자바는 OS에 독립적인 특징이 있음. 그게 가능한 이유는 JVM(Java Vitual Machine) 덕분인데요,,?! 그렇다면 JVM의 어떤 기능때문에 독립적으로 실행시킬 수 있는지 자바 컴파일 과정을 통해 알아보자 자바 컴파일 순서 1. 개발자가 자바 소스코드(.java)를 작성 2. 자바 컴파일러가 자바소스파일을 컴파일함 . 이때 나오는 파일은 자바 바이트코드(.class)파일로 아직 컴퓨터가 읽을 수 없는 자바 가상머신이 이해할 수 있는 코드. 바이트 코드의 각 명령어는 1바이크 크기의 Opcode와 추가 피연산자로 이루어져있음. 3. 컴파일된 바이트 코드를 JVM의 클래스 로더에게 전달 4.클래스 로더는 동적로딩을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역, 즉 JVM의 메모리..
2. 싱글톤패턴 (Singleton pattern)
2023. 4. 5. 19:40
개념정리
싱글톤 패턴이란? 애플리케이션이 시작될 때, 어떤 클래스가 최초 한번만 메모리를 할당하고 해당 메모리에 인스턴스를 만들어 사용하는 패턴 즉, 싱글톤 패턴은 '하나' 의 인스턴스만 생성하여 사용하는 디자인 패턴 ( 인스턴스가 필요할때, 똑같은 인스턴스를 만들지 않고 기존의 인스턴스를 활용하는것) 생성자가 여러번 호출되어도, 실제로 생성되는 객체는 하나이며 최초로 생성된 이후에 호출된 생성자는 이미 생성한 객체를 반환시키도록 만드는 것 ( java에서는 생성자를 private으로 선언해 다른곳에서 생성하지 못하도록 만들고, getInstance()메소드를 통해 받아서 사용하도록함) 왜쓰나요??? 먼저, 객체를 생성할때마다 메모리 영역을 할당받아야함, 하지만 한번의 new를 통해 객체를 생성한다면 메모리 낭비..
개념 정리
2023. 4. 5. 17:03
개념정리
✔ 직렬화 ( Serialization ) 객체의 상태 혹은 데이터 구조를 기록할 수 있는 포맷으로 변환해줌 나중에 재구성 할 수 있게 자바의 객체를 JSON 으로 변환해주거나 , JSON을 자바객체로 변환해주는 라이브러리 ✔ Hash란 ? 데이터 삽입 및 삭제시, 기존 데이터를 밀어내거나 채우지 않고 데이터와 연관된 고유한 숫자를 생성해 인덱스로 사용하는 방법, 검색속도가 매우 빠름 ✔ 배열과 연결리스트의 차이? 배열은 인덱스를 가지고, 원하는 데이터를 한번에 접근하기 때문에 접근속도가 빠름 but 크기 변경이 불가능하며, 데이터 삽입 및 삭제시 그위치의 다음 위치부터 모든 데이터 위치를 변경해야함 연결리스트는 인덱스 대신 현재 위치의 이전/ 다음위치를 기억함 크기는 가변적, 인덱스 접근이 아니기 때문..
1. OOP 객체지향 프로그래밍
2023. 4. 5. 15:48
개념정리
순차적, 비구조적 프로그래밍 : goto문을 활용하여 이전에 작성했던 코드가 필요하면 그곳으로이동. -> 규모가 커질 수록 불편 절차적, 구조적 프로그래밍 : 반복될 가능성이 있들을 재사용이 가능한 함수(프로시저)로 만들어 사용 -> 추상적 객체지향 프로그래밍 : 특정한 개념의 함수와 자료형을 함께 묶어서 관리하기 위해 탄생 객체 내부에 자료형(필드)와 함수(메소드)가 함께 존재, 가능한 모든 물리적, 논리적요소를 객체로 만는 것 - 객체지향으로 구현하게되면 , 객체간의 독립성이 생기고 중복코드의 양이 줄어듦 - 독립성이 확립되어 유지보수에 도움 객체지향 프로그래밍 특징 1.추상화 (Abstraction) 필요로하는 속성이나 행동을 추출하는 작업 추상적인 개념에 의존하여 설계해야 유연함을 갖출 수 있음...