개발/Java
-
스트링을 new 로 생성하는 것과 " " 로 생성하는 것의 차이개발/Java 2021. 7. 13. 01:06
" "로 생성한 스트링의 경우 문자열이 힙 영역에 존재하는 String Pool에 상수로서 저장되고 그 값을 꺼내씁니다. 동일한 문자열이 반복적으로 사용될 때, 문자열을 새로 생성하지 않고 String Pool에서 기존에 존재하는 상수를 꺼내옴으로써 메모리를 절약합니다. 💡 String Pool은 java6 까지는 Non-heap Area에 속한 PermGen에 위치했는데, Java7 부터 heap 으로 이동하였습니다. 반면 new로 생성한 스트링은 다른 객체들처럼 heap 영역에 객체로서 생성됩니다. 아래 테스트를 통과합니다. @Test void StringPool에서_동일한_문자열을_가져온다() { String hello1 = "hello"; // string pool String hello2 = "..
-
JVM Run-Time Data Area개발/Java 2021. 4. 6. 16:50
이전에 JVM에 대해 정리한 내용이 있는데, 좀 더 추가할 내용이 있어서 작성하였다. (Constant Pool, Static은 어디에, Heap, Garbage Collection 등..) Live-Study 1주차 정리내용 - JVM soongjamm.tistory.com/95 [live-study] 1: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. 백기선님이 진행하시는 live-study 1주차 과제 1주차 과제 목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. 학습할 것 JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 soongjamm.tistory.com JVM JVM과 추상화 Run-Time Data Areas static 변수는 어디에 저장될까..
-
[okky 질문글 답변] map에 대하여개발/Java 2021. 4. 5. 18:23
okky.kr/article/903802?note=2290174 OKKY | Map과 Hashmap의 차이는 어떤 알고리즘을 쓰느냐의 차이인가요? Map은 이진탐색트리, Hashmap은 해쉬테이블을 쓴다고 하는데, 어떤경우에 Map을쓰고 또 어떤경우에 Hashmap을 쓰는지 모르겠습니다.. 그리고 이런식으로 정의하는건 어떤의미인지 잘 파악이 안됩니다 okky.kr 질문 제목 Map과 Hashmap의 차이는 어떤 알고리즘을 쓰느냐의 차이인가요? 본문 Map은 이진탐색트리, Hashmap은 해쉬테이블을 쓴다고 하는데, 어떤경우에 Map을쓰고 또 어떤경우에 Hashmap을 쓰는지 모르겠습니다.. 그리고 이런식으로 정의하는건 어떤의미인지 잘 파악이 안됩니다..ㅠ private static Map store = ..
-
enum을 비교할 때 .equals() 말고 '==' 을 써도 된다.개발/Java 2021. 4. 5. 18:19
stackoverflow.com/questions/1750435/comparing-java-enum-members-or-equals Comparing Java enum members: == or equals()? I know that Java enums are compiled to classes with private constructors and a bunch of public static members. When comparing two members of a given enum, I've always used .equals(), e.g. public stackoverflow.com enum은 싱글톤이라 '==' 비교시 제대로 된 결과를 얻을 수 있고, equals() 보다 명확하다는 의견이 있는 것..
-
[live-study] 12. 어노테이션 (Annotation)개발/Java 2021. 2. 20. 21:25
Annotation 목표 자바의 애노테이션에 대해 학습하세요. 학습할 것 (필수) 애노테이션 정의하는 방법 @retention @target @documented 애노테이션 프로세서 어노테이션 이란? 어노테이션은 코드에 넣는 주석이라고 보면 되고, 컴파일 과정이나 실행 중 코드를 어떻게 처리할지 알려주는 메타데이터다. 이 자체는 기능을 가지지 않는다. 즉, 런타임중에 알아야하는 데이터는 못들어간다. 컴파일러 수준에서 해석되거나 완전히 정적이어야 한다. Spring MVC 에서 @GetMapping(변수) 가 불가능하다. 컴파일 과정이나 실행 중 코드를 처리하는 것은 보통 다음 3가지 이다. 컴파일러가 문법 오류를 체크할 수 있도록 정보 제공 (@Override) 소프트웨어 개발 툴이 빌드나 배치시 코드를..
-
[live-study] 11. enum개발/Java 2021. 2. 20. 21:24
live-study 11주차 목표 자바의 열거형에 대해 학습하세요.학습할 것 (필수) enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet enum enum(열거형) 이란? enum은 계절 이나 요일 처럼 하나의 집합을 상수로 정의할 수 있는 특별한 데이터 타입이다. 상수를 정의한다고 해서 서로 아무 관련이 없는 상수들을 정의해놓는 것은 바람직 하지 않다. 예를 들어 JAVA_VERSION 과 OS_VERSION 를 묶는 것은 바람직 하지 않다. 정의한 상수는 하나의 타입이 되어 type-safety하게 코드를 작성할 수 있게 해준다. enum 정의하는 방법 클래스나 인터페이스와 같은데, class/interface 키워드 대신..
-
[live-study] 10. 멀티쓰레드개발/Java 2021. 1. 23. 13:02
멀티쓰레드 프로그래밍 프로세스(Process)와 스레드(Thread)란 무엇인가? 스레드를 알기 전에, 프로세스를 먼저 알아야 한다. 프로세스는 운영체제에서 실행중인 (보통)하나의 응용 프로그램 단위를 말한다. 하나의 응용 프로그램을 실행하면 운영체제로부터 그에 필요한 메모리를 할당받아 독립적인 공간을 가지고 있다. 스레드는 프로세스가 가지는 작은 프로세스이자 하나의 실행 환경이라고 볼 수 있다. 프로세스는 최소 하나의 스레드를 가지며, 자원을 공유한다. (메신저에서 파일을 보내는 것, 메세지를 보내는 것 각각이 스레드라고 볼 수 있다.) 프로세스 내부에서 이러한 스레드가 여러개 존재하면 멀티 스레드이다. Main 쓰레드 우리가 자바 애플리케이션을 실행시키면 가장 먼저 main() 메소드를 실행시킨다. ..
-
[live-study] 9: 예외 처리개발/Java 2021. 1. 14. 18:01
live-study 목표 자바의 예외 처리에 대해 학습하세요. 학습할 것 (필수) 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차이는? 커스텀한 예외 만드는 방법 예외 처리 예외(Exception) 란? 사용자의 잘못된 조작이나, 개발자의 잘못된 코딩으로 발생하는 프로그램 오류다. 예외가 발생하면 프로그램이 곧장 종료된다. 그러나 예외 처리를 하면 프로그램을 종료하지 않고 실행 상태를 유지할 수 있다. 에러(Error)와의 차이점 컴퓨터 하드웨어 오작동이나 고장으로 인한 프로그램 실행 오류는 에러라고 한다. 에러가 발생하면 JVM 실행에..