Java/개념

    Optional

    자바 8에서 추가된 키워드입니다. 어떠한 작업의 결과로 null이 왔을 때, 이를 처리하기 위해서는 보통 if문을 사용하여 체크합니다. College Ahn = College.student(1234567, "ddings"); Integer age = Ahn.getAge(); if(age != null){ /* do something */ } 이런식으로 null을 체크하게되면, 컴파일 타임에 IDE가 알려주지 않기 때문에 사용자가 실수로 빠트리는 경우 + 코드 작성 시의 번거로움이 생깁니다. 한 두개의 경우는 별로 신경쓰이지 않더라도 null체크를 해야하는 값이 많아지면 많아질수록 사용자가 실수할 확률은 점점 상승하며, 코드의 가독성은 하락할 것으로 예상됩니다. Optional Optional을 사용하게 ..

    Stream

    Stream 자바 SE 8 버전에 추가된 기능으로 Collection에 저장되어있는 데이터를 탐색하고, 선별하여 최종적인 결과를 만들어내는 과정을 좀 더 간편하게 표현할 수 있는 방법입니다. Classes to support functional-style operations on streams of elements, such as map-reduce transformations on collections. 오라클 자바 docs에서는 컬렉션의 map에서 특정 데이터를 골라내는 것과 같은 연산을 함수스타일로 지원해주는 클래스라고 말하고있네요. 스트림은 데이터를 담고있는게 아니라, 데이터가 흐를 수 있는 통로에 해당하는 개념이며 스트림내의 모든 연산은 보통 한번만 수행되며 스트림연산을 거치더라도 원본데이터의 ..

    리플랙션

    어떤 기능을 가졌을까 리플랙션은 JVM에서 실행중인 애플리케이션의 런타임 동작을 제어하고 수정할 수 있는 기능입니다. 클래스의 필드목록이나 메소드목록, 상속하고있는 클래스 등등에 대한 정보를 알아낼 수 있으며 이를 런타임에 수정하는 것 또한 가능합니다. 리플랙션은 private 접근지시자를 포함한 모든 멤버에 접근이 가능한 것처럼 강력한 기능을 지니고있어서 사용시에 주의가 필요합니다. 사용하는 방법 리플렉션은 특정 클래스의 인스턴스나, FQCN, 클래스명 등을 이용하여 사용할 수 있습니다. package me.ddings73; public class Child extends Parent{ public int A; } package me.ddings73; public class App { public st..

    클래스로더

    클래스파일을 읽는 과정 로딩 링크 초기화 로딩(Loading) 클래스 로더가 .class 파일을 읽고나서 알 수 있는 정보들을 메모리에 저장하는 단계. .class파일에서 알 수 있는 정보는 다음이 존재한다. 클래스 메소드 변수 인터페이스 Enum FQCN (Fully Qualified Class Name) ex : java.lang.String 메소드와 변수는 클래스내부에 존재하며, 인터페이스와 Enum은 전부 클래스의 일종이라고 볼 수 있기 때문에 로딩이 종료되면 클래스타입의 객체를 Heap 영역에 저장한다. Class Loader ( 클래스 로더 ) 클래스를 읽어들이는 일을하며, 클래스의 타입과 경로에 따라 특정 클래스를 로드하는 ClassLoader 가 결정된다. 클래스로더를 알아내기 위해서 ge..

    바이트코드?

    ByteCode 바이트코드란 가상컴퓨터에서 돌아가는 실행프로그램을 위한 이진 표현법입니다. 자바의 JVM을 학습하게 되면서 알게 된 개념으로, 기계어로 변환되기 이전에 JVM에서 동작하기위해 생성되는 .class 파일이 이 바이트코드에 해당합니다. D:\IdeaProjects\JavaLearn\src\main\java\me\ddings73>javap -c App.class Compiled from "App.java" public class me.ddings73.App { public me.ddings73.App(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."":()V 4: return public static void main(j..