프로그래밍/Java 15

[Java] 자바 자료형(primitive, reference) 에 대한 고찰 - 자바 Integer에 캐시가 있다고?

자바 자료형에 대한 고찰 - 자바 Integer의 캐시기능 참조링크 원문: https://medium.com/@njnareshjoshi/java-integer-cache-why-integer-valueof-127-integer-valueof-127-is-true-e5076824a3d5 Java Integer Cache — Why Integer.valueOf(127) == Integer.valueOf(127) Is True posted by Naresh Joshi on November 25, 2018 medium.com https://nulpointerexception.com/2018/01/06/int-vs-integer-java-application-memory-usage/ 초반부 내용은 다음 원문을 번..

[JDBC] MySQL 드라이버 Class.forName()의 비밀 - 로드만 했을 뿐인데 getConnection()이 가능하다고?

도대체 JDBC드라이버는 Class.forName()으로 로딩만 했을 뿐인데 어떻게 DriverManager 에서 사용이 되는 것일까? Class.forName의 호출 Class 클래스는 JVM에서 동작할 클래스들의 정보를 묘사하기 위한 일종의 메타 클래스이다. 객체의 참조 카운트가 0가 되면 해당 인스턴스는 더 이상 가리키는 참조 변수가 없는 것이므로 GC의 대상이 된다. 그런데 JDBC는 생성시키고 끝난다. 그러면 GC가 되지 않도록 하는 무언가가 있다고 한다. JDBC 드라이버와 같이 인스턴스를 별도로 관리하지 않는 대부분의 클래스의 경우, 그 클래스가 스스로의 인스턴스를 정적 블록을 통해 생성하고 관리한다. 정적 블록을 갖는 클래스들은 Class.forName() 만 호출해도 초기화가 수행된다. ..

[Java] 추상클래스(Abstract Class)와 인터페이스(Interface)에 대한 고찰

추상 클래스(Abstract Class)란 미완성 설계도라고 할 수 있다. 자동차에 비유하면 완성되지 않은 자동차라고 할 수 있다. 차체만 있고 아직 바퀴를 달지 않은 그 상태를 미완성이라고 할 수 있다. 바퀴가 없으면 달릴수가 없으니 이것은 자동차라고 아직은 말 할 수가 없다. 마찬가지로 추상 클래스는 객체를 생성할 수 없다. (즉, 바퀴를 달게 하지 않은 설계도로는 자동차를 만들 수 없다.) 추상클래스의 선언은 class 앞에 abstract를 붙이면 된다. 그리고 추상 클래스는 추상메서드를 포함하고 있고 여느 클래스와 마찬가지로 생성자와 멤버변수도 가질 수 있다. 여기서 인터페이스(interface)와 비교를 해보자. 인터페이스는 추상 클래스에서 더 추상화 된 것이다. 그래서 모든 메서드는 publ..

[Java] 람다(Lamda)식과 함수형 인터페이스 (Functional Interface)

람다식 (Lamda Expression)JDK 1.8 부터 추가된 람다 식은 많은 변화를 가져다 주었다. 람다식이란 메서드를 하나의 식으로 표현해주는 간편한 기능이다. 예를들어, 123456789int max(int a, int b) { return a > b ? a : b;} (int a, int b) -> { return a > b ? a : b ;} (int a, int b) -> a > b ? a : b (a, b) -> a > b ? a : bcs 위의 max함수를 람다식으로 표현하면 밑에 3가지가 될 수 있다. 람다식에 선언된 매개변수는 추론이 가능한 경우 생략할 수 있다고 한다. 람다식은 런타임 때 익명 객체를 생성하기 때문에 대입 되는 값에 따라 자동인식이 되기 때문이다. 그리고 함수 몸체..

반응형