본문 바로가기

Java/Java language14

[JAVA]14. String / StringBuilder /StringBuffer ? 차이점 String / StringBuilder / StringBuffer ? 위 세가지는 모두 String타입 데이터를 다루는 특징들을 가지고 있습니다. A. String String은 불변 특징을 가지고 있으며, StringBuilder와 StringBuffer는 이러한 불변 특징떄문에 만들어지게 되었습니다. 불변 특징이란? 더보기 불변 특징이란 , 처음 지정한 값이 변경되지 않는 다는 것을 말합니다. String word = "Hi"; word = "Hello"; 위 처럼 word를 Hi로 최초 선언한 이후, Hello로 값을 변경 하였을까요? 아닙니다, 자바의 Heap영역에는 "Hi"라는 값과 "Hello"라는 값이 두개가 존재하게 되는 것 입니다. 단지, 참조하는 값이 바꼈을 뿐입니다. 그리고, Hi라.. 2022. 4. 10.
[JAVA]13. GC(가비지 컬렉터)? GC (Garbage Collector)? 저번 포스팅에서 말했던 (https://junior-develop112.tistory.com/39) JVM의 구성요소 중 하나이며 자바에서는 힙 영역의 사용하지 않는 객체들을 개발자가 해제해줄 수 없기 때문에, GC를 이용하여 자동으로 메모리를 관리 해 줘야 한다. 힙 영역 에서는 위와 같이 나뉘어 있는데 , 각 영역에서 사용하지 않는 객체들은 메모리에서 GC가 발생하여 제거가 된다. 사용하지 않는 객체? 더보기 사용하지 않는 객체란 더 이상 참조가 되지 않는 객체를 의미한다. 아래 예제를 보자 int a = 5; a = 40; System.out.println(a); 예제 처럼, a 를 5로 초기화 해준 후 , 다시 a를 40으로 초기화를 해 주었을때 a 의 .. 2022. 3. 27.
[JAVA]12. 자바의 실행과정과 JVM 자바의 실행 과정 개발자가 java언어로 코딩한 파일을 컴파일러(javac)를 이용하여 바이트 코드인(.class)파일로 변환해준다. 변환한 클래스 파일을 클래스 로더(Class Loader)를 이용하여 JVM에 로딩시켜준다. 그 후, JVM의 Execution engine을 통해 클래스 파일을 해석합니다. 해석된 바이트 코드를 가지고 최종적으로 Runtime Data Areas에 배치되어 프로그램이 실행됩니다. JVM(Java Virtual Machine)? 각 OS마다 따로 코드를 작성해야 하는 번거로움 없이, 플랫폼에 독립적일 수 있게 만들어주는 자바 가상 머신이다. JVM의 구성요소? 1. Class Loader (클래스 로더) JVM내로 클래스 파일을 로드하고, 링크를 통해 배치하는 작업을 수행.. 2022. 3. 27.
[JAVA]11. 객체지향 프로그래밍(OOP)의 SOLID 5대원칙? 객체지향 프로그래밍(OOP : Object-Oriented Programming)이란? 현실의 사물들을 객체로 보고 프로그래밍 하는 기법이며, 5원칙이 존재한다.[SOLID] 단일 책임 원칙(SRP) : 클래스는 단 하나의 목적을 가져야하며, 변경 이유도 단 하나 여야만 한다. 개방 폐쇄 원칙(OCP) : 클래스는 확장에는 열려 있고, 변경에는 닫혀있어야만 한다. 리스코프 치환 원칙(LSP) : 상위 타입의 객체를 하위타입의 객체로 변경하여도 일관되게 동작 하여야 한다. 인터페이스 분리 원칙(ISP) : 목적과 관심에 맞게 인터페이스를 적절하게 분리해 주어야 한다. 의존 역전 원칙 (DIP) : 추상화에 의지하고, 구체화(구현클래스)에 의지 하면 안된다. A. 단일 책임 원칙(SRP)? 클래스는 단 하나.. 2022. 3. 11.
반응형