목록언어 (21)
Monday
JDBC 드라이버 로드 시 Class.forName()을 사용합니다. forName() 메소드는 다음과 같이 정의되어있습니다. public static Class forName(String className) throws ClassNotFoundException 위 메소드에서 반환하는 "Class" 클래스란 클래스들의 정보(클래스의 필드, 메서드, 클래스의 종류(인터페이스 등))를 담는 메타 클래스입니다. JDBC 4.0 이전에는 Class.forName("드라이버 이름")을 통해서 해당 드라이버 클래스를 메모리에 로딩하였습니다. 그 원리는 해당 클래스를 찾게되면, JVM은 해당 드라이버 클래스를 메모리에 올리게 되고 해당 드라이버 클래스는 아래와 같이 정적 초기화 블록(static { })을 통해 메모..

1. 자바 생성자 내부 동작 원리 다음과 같이 Animal 클래스가 있을 때 main 함수에서 new를 호출하면 어떻게 동작하는지 살펴보겠습니다. // Animal.java public class Animal { String name; public Animal() { this.name = "동물"; } public Animal(String name) { this.name = name; } } Main 함수 // Main.java public class Main { public static void main(String[] args) { Animal tiger = new Animal("Strong Tiger"); System.out.println(tiger.name); } } Main.class 바이트 코..
자바 Queue 함수 비교 1. 원소 추가하기 원소 추가하기 함수 offer() 원소를 추가할 수 없을 시 False 반환 add() 원소를 추가할 수 없을 시 Exception 반환 2. 원소 빼기 원소 빼기 함수 poll() 아무 원소도 없을 시 Null 반환 remove() 아무 원소도 없을 시 Exception 반환 3. 맨 위 원소 확인하기 맨 위 원소 확인하기 함수 peek() 아무 원소도 없을 시 Null 반환 element() 아무 원소도 없을 시 Exception 반환 Queue 사용 시 예외를 null 처리 할 것 인지, Exception 처리 할 것인 지 정하여 일관성있게 코딩하면 좋습니다.
중간값을 구할 때 흔히 하는 실수는 다음과 같습니다. int start = 0; int end = 10; //중간값 구하기 int mid = (start + end) / 2; //숫자가 작을 때는 아무 문제 없음 위 코드는 start, end의 값이 작을 때는 아무 오류가 나지 않습니다. 그러나, 숫자가 커지면 (start + end)가 오버플로우 되면서 예상치 못한 값을 얻게 됩니다. 해결법 1) 작은 수 + (큰 수 - 작은 수) / 2 int start = 0; int end = 10; int mid = start + (end - start) / 2; 2) bit 연산자 >>> 사용 (결과가 양수일 때만 가능) int start = 0; int end = 10; int mid = (start + e..

* 개인적인 공부 글로 틀린 정보가 있을 수 있습니다. 만약 있다면 거침없이 댓글로 알려주시면 감사하겠습니다. 목차 JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성 요소 JDK와 JRE의 차이 1. JVM 이란? JVM이란 Java Virtual Machine으로 자바의 바이트 코드를 해석하는 기계 즉, 자바 실행을 도와주는 프로그램을 말한다. 컴퓨터는 본래 0과 1만 이해한다. 하지만, 우리는 프로그래밍 언어로 프로그램을 작성해도 정상적으로 실행이 된다. 그 이유는 중간에 컴퓨터가 이해할 수 있게 0과 1로 번역해주는 무엇인가가 있기 때문이다. 정확히 말하자면 기계어로 번역되어야 컴퓨터가 이해한다. 운영체제마다 기계어는 ..