JVM, JDK, JRE, JIT
2022. 7. 18. 23:05
자바
자바의 철학 Write Once, Run Anywhre ⇒ WORA 한 번 쓰고 모든 곳에서 실행한다. 자바 가상 머신(JVM, Java Virtual Machine) 자바 프로그램이 어느 기기, 어느 운영체제 상에서도 실행 가능하게 만들어 줌 자바 프로그램의 메모리를 효율적으로 관리 & 최적화 자바 런타임 환경(JRE, Java Runtime Environmnet) JRE = 자바 클래스 라이브러리, 자바 가상 머신(JVM) + 자바 클래스 로더 클래스 로더, 클래스 라이브러리를 통해 작성한 자바 코드를 라이브러리와 결합한 후 JVM에 넘겨 실행시킨다. JRE는 그 자체로 특별한 기능을 한다기보다는 JVM이 원활하게 잘 작동할 수 있도록 환경을 맞춰주는 역할을 한다. 자바 개발 키드(JDK, Java ..
Call by Value와 Call by Reference
2022. 7. 14. 20:35
자바
메서드에 인수를 전달하는 두가지 모드 Call by value란, 값을 호출하는 것을 의미. 매개변수로 전달받은 값을 복사하여 처리합니다. 즉 전달받은 값을 변경하여도 원본은 변경되지 않는다 Call by reference란 참조에 의한 호출을 의미. 매개변수로 전달받은 값을 직접 참조합니다. 즉 전달받은 값을 변경할 경우 원본도 같이 변경된다 그렇다면 자바의 참조형은 Call by reference일까? 결론적으로 말하자면 Call by Value이다. 자바에서 기본(Primitives) 변수는 실제 값을 저장하는 반면 비기본(Non-Primitives) 변수는 참조하는 객체의 주소를 가르키는 참조변수를 저장한다. 값과 참조 모두 Stack 메모리에 저장된다. 자바의 인수는 항상 값으로 전달된다. 메서..
String의 특징
2022. 7. 14. 20:23
자바
String는 불변 객체(immutable object)이다. 불변 객체란, 객체가 생성된 후 내부의 상태가 변하지 않고 계속 유지되는 객체를 말한다. 즉 변수가 한 번 할당되면, 해당 객체의 참조를 변경할 수도, 내부의 상태를 수정할 수도 없다. 1. String Pool Java는 String Pool을 이용해서 같은 객체를 공유한다. 이는 String이 불변이기 때문에 가능하다. String s1 = "Java"; Stromg s2 = "Java"; s1 = "C++"; 위 예시에서 s1, s2는 “Java”라는 값을 갖는 String Pool 내부의 하나의 String 객체를 바라보고 있다. 그리고 s1이 값을 “C++”이라고 바꾼다면 s1은 String Pool 내부의 다른 객체를 바라보게 된다..
equals()와 hashCode()
2022. 7. 14. 20:06
자바
equals() 클래스 Obejct에 대한 equals 메소드는 객체에 대해 등가 관계를 구현한다. 즉 null이 아닌 참조 값 x 및 y가 동일한 객체를 참조하는 경우에만 true를 반환한다. class Person { private int age; private String name; public Person(int age, String name) { this.age = age; this.name = name; } } public static void main(String[] args) { Parent person = new Parent(19, "lala"); Parent person1 = new Parent(19, "lala"); System.out.println(person.equals(perso..