직역하면 '자바를 실행하기 위한 가상 기계(컴퓨터)'라고 할 수 있다.Java 는 OS에 종속적이지 않다는 특징을 가지고 있다. OS에 종속받지 않고 실행되기 위해선 OS 위에서 Java 를 실행시킬 무언가가 필요하다. 그게 바로 JVM이다.
JVM은 크게 아래와 같이 이루어져 있다.클래스 로더(Class Loader) 실행 엔진(Execution Engine) 런타임 데이터 영역 (Runtime Data Area).
Call By Value 말 그대로 값에 의한 호출이다. 일반적으로 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시공간이 생성된다. (종료 시 해당 공간 사라짐)
자바를 사용할때 기본 자료형(Primitive Object) 다음으로 가장 많이 사용되는 객체는 String 클래스라고 생각된다. 때로는 이런 String 자료형을 기본 자료형이라고 착각할 때도 많다(몇몇 다른 언어에서 문자열이 기본 자료형인것도 혼동에 한몫 한다).
🧹Java는 Java가 청소해줘! C/C++의 경우 프로그래밍을 할 때 메모리 누수를 막기 위해 사용하지 않는 객체의 메모리를 개발자가 직접 해제 해줘야 했다. 하지만 Java에서는 그 역할을 다른 누가 해준다. 바로 Garbage Collection , GC이다.
Java GC가 어떤 방식으로 참조되지 않는 객체를 찾는지 살펴보자 Heap 안 객체 참조 방식 JVM에서 메모리 영역인 런타임 데이터 영역(runtime data area)은 크게 Thread 영역과 Heap영역, Method 영역으로 나눌 수 있다.
세상에는 다양한 데이터가 존재한다. 대표적으로 숫자와 문자가 있다. 사람의 경우 1234.567 이라는 숫자가 실수이고 '.'을 기준으로 연산을 해야한다는 것을 알고 있지만 컴퓨터는 1234.567 이라는 숫자만 보고는 이것이 정수인지 실수인지 심지어는 문자인지 알 수
여느때와 같이 평화롭게 개발하던 중 갑자기 equals()에 대한 궁금증이 생겼습니다.== 연산자는 비교하고자 하는 두개의 대상의 주소값을 비교하는데 반해 String클래스의 equals 메소드는 비교하고자 하는 두개의 대상의 값 자체를 비교한다.