☕️ Java/기본

Method Dispatch 어떤 메소드를 호출할 것인가를 결정하고 실행하는 과정을 의미합니다. Method Dispatch의 종류에는 Static Method Dispatch와 Dynamic Method Dispatch가 있습니다. Static Method Dispatch 컴파일 시점에 호출되는 메서드가 결정되는 Method Dispatch 입니다. 코드를 통해 살펴보겠습니다. public class Dispatch { static class Service { void run(int number) {//(1) System.out.println("run(" + number + ")"); } } public static void main(String[] args) { new Service().run(1);..
구글의 리플렉션 라이브러리를 사용하여 구현한 자동 README 생성기입니다. 사용 방법은 README에 나와있으니 참고해서 사용해 주시면 감사하겠습니다. 백준 문제 이외에도 다른 사이트의 문제들에도 적용하고 싶다면 조금만 커스텀하면 되니 자유롭게 이용해주세용 https://github.com/ShinDongHun1/RM-Generator GitHub - ShinDongHun1/RM-Generator Contribute to ShinDongHun1/RM-Generator development by creating an account on GitHub. github.com
Method Signature method name(메서드의 이름) parameter types( 매개변수의 유형(매개변수의 개수와 타입) )으로 구성됩니다. Overriding은 Signature가 같은 메서드 사이에서만 발생합니다. 또한 Signature가 같은 메서드는 두 개 이상 정의될 수 없습니다. return type은 Method Signature에 포함되지 않습니다. 만약 return type이 Signature에 포함된다면 아래 코드는 오류가 발생하지 않을 것입니다. Method Type return type (반환 타입) method type parameter (메서드 타입 파라미터 (제네릭 메서드의 경우) ) parameter types (매개변수들의 타입) exception (예외)..
String Constant Pool에 대해 살펴보기 전에, 다음 하나만 참고하시라고 적어두고 시작하겠습니다. 문자열 리터럴을 통해 문자열을 생성하는 방식은 다음과 같습니다. String str = "literal";//여기서 "literal"이 리터럴 이제 시작하겠습니다. String Constant Pool String은 Java에서 가장 많이 사용되는 클래스입니다. 지금부터 JVM에서 String을 저장하는 특수한 메모리 영역인 String Constant Pool에 대해서 살펴보겠습니다. String 재사용(Interning) Java에서 String은 불변(immutable) 객체입니다. 이 덕분에 JVM은 String Constant Pool에 각 문자열 리터럴의 복사본을 하나만 저장하여, 문..
참.. 공부를 하면 할수록 그동안 몰랐던게 계속해서 튀어나옵니다.. 저는 지금까지 String만 예외적으로 new String을 조금 편하게 쓸 수 있도록 해주고, 나머지 동작방식은 동일하다고 생각했습니다 그런데 전혀 아니었습니다. 지금부터 자바에서의 String에 대해서 알아가 보도록 하겠습니다. 우선 아래 코드에서 몇개의 객체가 생성이 될 지 한번 생각해보고 진행하도록 하겠습니다. public class StringTest { public static void main(String[] args) { String str1 = new String("Hi"); String str2 = "Hi"; String str3 = "Hi"; } } 당연히 3개의 객체가 만들어지지 않을까??? 라고 생각했었는데, 사실..
상수 (Constant) 상수는 변수와 마찬가지로 '값을 저장할 수 있는 공간'이다. 그러나 변수와는 다르게 한 번 값을 저장하면, 다른 값으로 변경할 수 없다. 상수를 정의할 때는 final 키워드를 이용하여 정의한다. final int MAX_SPEED = 100; 상수는 선언과 동시에 초기화 할 필요는 없다. 초기화 하는 방법을 알아보자. 인스턴스변수로 사용된 상수 초기화 public class Constant { final int MAX_SPEED=100; final int MIN_SPEED; final int AVERAGE_SPEED; //초기화 블럭에서 초기화 { MIN_SPEED = 10; } //생성자에서 초기화 public Constant(int AVERAGE_SPEED) { this.A..
아침에 일어나 보니 제가 들어가 있는 '개발바닥'이라는 오픈카톡방에서 어떤 한 분이 다음과 같은 글을 올리셨습니다. 혹시 상속관계에서 왜 static 메서드는 오버라이딩이 되지 않는지 정확히 아시는 분 계신가요,, 제가 JVM구조를 보면서 공부한 바로는 static은 Method Area에 저장이 되고, 객체는 Heap 영역에 저장이 됩니다. 그렇다면 부모에서 정의한 static 메서드(자식에게도 같은 이름의 static 메서드 정의함)는 객체가 생성되기 전에 Method Area에 들어가는거겠죠? 이제 자식 객체를 생성하고 static 메서드를 호출하면 부모의 method가 나오게 됩니다 이건 오버라이딩이 아니라 hiding이라고 하는 것까지 알고 있습니다. 그렇다면 자식이 같은 static 메서드를 ..
자바 컴파일러 (Java compiler) 자바 컴파일러는 자바를 가지고 작성한 자바 코드를 자바 가상머신(JVM)이 이해할 수 있는 자바 바이트코드로 변환하는 역할을 수행한다. '.java' 파일을 '.class' 파일로 변환하는 것이다. 자바 컴파일러는 자바를 설치하면 javac.exe 라는 실행 파일의 형태로 설치된다. 자바 바이트코드 바이트코드란? 특정 하드웨어가 아닌 가상 컴퓨터에서 작동하는 실행 프로그램을 위한 이진 표현법. 자바 바이트코드란 자바 가상 머신(JVM)이 이해할 수 있는 언어로 변환된 자바 소스 코드를 의미한다. 자바 바이트코드의 확장자는 .class 이며, 자바 바이트 코드는 자바 가상 머신(JVM)이 설치되어 있다면 어떠한 운영체제에서도 실행될 수 있다. JVM JVM(Jav..
말 랑
'☕️ Java/기본' 카테고리의 글 목록 (3 Page)