본문 바로가기

Java5

ArrayList와 LinkedList의 차이 / Stringbuilder ArrayList vs LinkedList ArrayList는 메모리주소를 바탕으로 저장된다. 주소를 찾는 계산식(배열의 주소 + n * 데이터 크기)을 사용하여 빠르게 찾을 수 있다. 반면에 LinkedList는 데이터를 순차적으로 저장한다. 특정 데이터를 찾기 위해서는 1번부터 하나씩 찾아야 한다. 10개의 노드가 연결되어 있다면 1번 노드부터 한 칸씩 다 확인을 하며 찾아야 한다. 또한 LinkedList는 지역성(locality of reference) 측면에서도 불리하다. 왜냐면 ArrayList는 데이터를 연속적인 묶음으로 저장하지만 LinkedList는 불연속적으로 저장 후 연결하는 방식이기 때문이다. 당연히 다음 데이터에 대한 주소를 가지고 있다고 하더라도 접근하는데 시간이 걸릴 수 밖에 .. 2022. 8. 14.
자바 동기화 | Synchronized(Monitor), Atomic Type 동기화란 공유 리소스에 대해 여러 쓰레드의 액세스를 제어하는 기능이다. 상호배제란 하나의 프로세스가 공유 자원을 사용할 때 다른 프로세스가 동일한 공유자원에 접근할 수 없도록 통제하는 것이다. Java에서 제공하는 동기화 방법으로는 1) 개체에 Lock을 걸어 상호배제를 할 수 있는 Synchronized(Monitor)와 2) non-locking 방식인 Atomic Type이 있다. 1. Synchronized Mutex 여러 쓰레드를 실행하는 환경에서 자원에 대한 접근을 통제하기 위한 동기화 기법이다. - Boolean type의 Lock변수를 사용한다. 따라서 1개의 공유자원에 대한 접근을 제한한다. - 공유 자원을 사용중인 쓰레드가 있을 때, 다른 쓰레드가 공유 자원에 접근한다면 Blocking.. 2022. 8. 14.
[Java] Comparable과 Comparator의 차이 아래 블로그 내용에서 다시 보고싶은 내용만 추렸습니다. 더 자세히 알고싶으신 분은 아래 링크로 가는걸 추천드립니다. 자바 [JAVA] - Comparable 과 Comparator의 이해 아마 이 글을 찾아 오신 분들 대개는 Comparable과 Comparator의 차이가 무엇인지 모르거나 궁금해서 찾아오셨을 것이다. 사실 알고보면 두 개는 그렇게 어렵지 않으나 아무래도 자바를 학습하면서 객 st-lab.tistory.com Comparable vs Comparator Comparable은 "자기 자신과 매개변수 객체를 비교" 한다. compareTo(T o) Comparator는 "두 매개변수 객체를 비교" 한다. Compare(T o1, T o2) Comparable은 자기 자신과 파라미터로 들어.. 2022. 8. 10.
[Java] JVM의 구조와 메모리 영역 JVM(Java Virtual Machine) : 자바 가상 머신으로 자바 바이트 코드를 실행할 수 있는 주체이며, CPU나 운영체제(플랫폼)의 종류와 무관하게 실행이 가능하다. 즉, 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실행시켜주는 역할을 한다. JVM는 크게 4가지(Class Loader, Execution Engine, Garbage Collector, Runtime Data Area)로 구분된다. 1. Class Loader 자바에서 소스를 작성하면 .java파일이 생성되는데, .java 소스를 자바컴파일러가 컴파일하면 .class파일(바이트코드)이 생성된다. 이렇게 생성된 클래스파일들을 엮어서 JVM이 운영체.. 2022. 7. 28.
[Java] String, StringBuilder, StringBuffer의 차이 String final 관련 글을 보면 String은 immutable class 중 하나라고 되어있다. String에 대해 자세히 살펴보자 String 클래스의 인스턴스는 상수 형태의 인스턴스이다. String의 인스턴스는 상수의 성격을 갖는다고 표현을 한다. String의 인스턴스에 저장된 문자열 데이터의 변경이 불가능하기 때문이다. String str = "Constant String"; 이렇게 저장된 문자열 데이터는 결코 바꿀 수 없다! 바꾸는 메소드가 제공되지 않을 뿐 아니라 문자열 데이터에 직접적인 접근도 불가능하기 때문에 바꿀 수 있는 방법이 전혀 없다. 상수 형태로 String 클래스를 정의한 이유는 무엇일까? 인스턴스의 생성은 시스템에 부담되는 요소인데 자바에서는 문자열을 표현할 때마다 .. 2022. 7. 27.
반응형