본문 바로가기

Java

(6)
String은 왜 불변 객체로 만들었을까? Java에서 String은 불변 객체다. 이전글 : https://riverblue.tistory.com/42?category=929398 Java String, StringBuilder, StringBuffer 자바에서 문자열 클래스는 대표적으로 String, StringBuilder, StringBuffer가 있다. 사실 String밖에 다루지 않아봐서 잘 몰랐는데 좋은 경험을 하게 되어서 나머지 두 클래스도 다뤄야 겠다고 생각했다. St riverblue.tistory.com 근데 한번도 왜 불변으로 만들었는지, 불변이 뭐가 좋은지 생각해본적이 없다. 그래서 이유를 좀 찾아보게 되었고 나름대로 정리한 생각을 기록해본다. 참고 : https://www.baeldung.com/java-string-im..
StringBuilder 살짝 까보기 (생성자, append) StringBuilder (Buffer도 마찬가지)를 몇번 사용했지만, 어떻게 생긴지에 대해서 생각해본적이 없어서 살짝 까보려고한다. 참고로 jdk는 1.8 StringBuilder는 추상클래스인 AbstractStringBuilder을 상속받고있다. 이름부터만 봐도 StringBuilder에 대해서 정의한 클래스라는게 느껴진다. StringBuilder 생성자 일부분 public StringBuilder() { super(16); } /** * Constructs a string builder with no characters in it and an * initial capacity specified by the {@code capacity} argument. * * @param capacity the..
Java String CompareTo 메서드 Java를 쓰면서 String 비교 메서드를 사용하는데 equals()는 많이 사용했지만 CompareTo는 써보지 않았다. 그래서 String의 CompareTo()에 대해서 정리를 해보려 한다. 참고 문서 : https://www.w3schools.com/java/ref_string_compareto.asp Java String compareTo() Method Java String compareTo() Method ❮ String Methods Example Compare two strings: String myStr1 = "Hello"; String myStr2 = "Hello"; System.out.println(myStr1.compareTo(myStr2)); // Returns 0 becaus..
Java 데이터 타입 Primitive type(기본형) Reference Type(참조형) 자바에서 변수의 데이터 타입은 크게 원시 타입이라고도 불리는 Primitive Type(기본형)과 Reference Type(참조형)으로 나뉜다. 영어로 말해서 뭘 말하는 건지 모를 수 있으니 알아두자 Primitive Type 기본형 자바 메모리 영역중 스택 영역에 실제 값이 할당되는 기본 데이터 타입들이다. 자바에서 데이터 타입의 최소 크기는 1byte다. boolean : 논리형 1byte true 또는 false char : 문자형 2byte 유니코드 문자데이터 byte : 정수형 1byte -2^7 ~ 2^7-1 short : 정수형 2byte -2^15 ~ 2^15-1 int : 정수형 4byte -2^31 ~ 2^31-1 long : 정수형 8byte -2^63 ~ 2^63-1 float :..
Java String, StringBuilder, StringBuffer 자바에서 문자열 클래스는 대표적으로 String, StringBuilder, StringBuffer가 있다. 사실 String밖에 다루지 않아봐서 잘 몰랐는데 좋은 경험을 하게 되어서 나머지 두 클래스도 다뤄야 겠다고 생각했다. String과 (StringBuilder, StringBuffer)의 차이 String과 StringBuilder/StringBuffer의 차이는 String 클래스는 immutable(불변), StringBuilder와 StringBuffer 클래스는mutable(가변)적인 클래스라는 차이가 있다. 불변/가변은 자바의 Heap메모리 영역과 관련이 있다. 자바에서 객체들은 Heap영역에 메모리를 할당을 받게되는데, String처럼 불변 속성의 클래스인 경우 값이 변하면 기존에 할..
JVM 가비지 컬렉터(GC) Garbage Collector JVM (Java Virtual Machine) 어떠한 운영체제나 CPU 아키텍처 환경에서도 자바 바이트 코드를 실행 할 수 있도록 만들어진 자바 가상 머신이다. 자바 컴파일 후 나오는 class 파일이 자바 바이트 코드를 담고있다. JVM 구조 JVM은 크게 4가지로 구성되어있다. Class Loader : 컴파일러(javac)에 의해 만들어진 자바 바이트 코드를 Runtime Data Areas로 적재를 수행한다. Execution Engine : Runtime Data Areas에 적재된 자바 바이트 코드를 기계어로 변경하고 이를 실행한다. 하나읽고 하나 실행하는 인터프리터 방식과 이를 보완한 JIT(Just-In-Time) 방식이 있다. Runtime Data Areas : 운영체제로부터 메모리를..