목록자바/JAVA (16)
영권's
Optional은 자바8에서 새로 추가된 인터페이스이다. Optional이 나오게 된 이유 null을 반환하면 별도의 null 처리를 해야하며 null 처리를 무시하고 반환된 null 값을 어딘가에 저장하면 언젠가 NPE가 발생한다. 그것도 근본적인 원인, 즉 null을 반환하게 한 실제 원인과는 전혀 상관없는 코드에서... null 값을 참조하려고 하는 경우 NPE 가 나오게 된다. 이런 에러는 보통 if(progress != null)과 같이 조건문을 사용해서 해결하게 된다. 하지만 이런 방법은 사람이 코딩하는데 있어서 에러를 만들기 쉬운 코딩 방법중 하나이다. 해결하는 방법은 아주 간단하지만 근본적인 이유를 해결하는 것이 아니다. (사람이 코딩하는 것이기 때문에 실수를 해서 널 체크를 하지 않을 수..
java 프로그래밍이란 java와 c/c++의 차이점 java와 c/c++의 가장 큰 차이점은 실행 환경이다. java에서의 개발: 컴파일 혹은 컴파일 + jar압축 자바는 링크 과정이 없이 컴파일러가 바로 바이트 코드를 생성 c/c++에서의 개발: 컴파일 + 링크 java 언어의 장단점 장점 운영체제에 독립적이다. JVM에서 동작하기 때문에, 특정 운영체제에 종속되지 않는다. 객체지향 언어이다. 객체지향적으로 프로그래밍 하기 위해 여러 언어적 지원을 하고있다. (캡슐화, 상속, 추상화, 다형성 등) 객체지향 패러다임의 특성상 비교적 이해하고 배우기 쉽다. 자동으로 메모리 관리를 해준다. JVM에서 Garbage Collector라고 불리는 데몬 쓰레드에 의해 GC(Garbage Collection)가 ..
자바를 이용하여 개발하는 개발자라면 누구나 자바 바이트코드가 JRE 위에서 동작한다는 사실을 잘 알고 있습니다. 이 JRE에서 가장 중요한 요소는 자바 바이트코드를 해석하고 실행하는 JVM(Java Virtual Machine)입니다. JRE는 자바 API와 JVM으로 구성되며, JVM의 역할은 자바 애플리케이션을 클래스 로더(Class Loader)를 통해 읽어 들여서 자바 API와 함께 실행하는 것입니다. 가상 머신 가상 머신(virtual machine)이란 여러 가지로 정의할 수 있지만, 프로그램을 실행하기 위해 물리적 머신(즉, 컴퓨터)와 유사한 머신을 소프트웨어로 구현한 것을 말한다고 할 수 있다. 지금은 비록 빛이 바랜 목표이긴 하나 자바는 원래 WORA(Write Once Run Anywh..
업 캐스팅과 다운 캐스팅에 대해서 알아보겠습니다. 먼저 업 캐스팅과 다운 캐스팅을 알기 위해서는 상속 관계를 알아야 합니다. 자바에서는 자식클래스를 new인스턴스를 이용하여 객체 생성하면 개발자가 명시를 해주지 않더라도 JVM에서 자동으로 자식 객체의 디폴트 생성 자안에 있는 super() 키워드로 상속받은 부모 클래스의 객체가 먼저 heap 메모리에 객체가 생성되고 나서 자식 클래스 객체가 생성이 됩니다. 위 사진을 보면 Cat cat = new Cat(); 으로 먼저 자식 객체를 생성해주고 부모 타입인 Animal 타입으로 객체를 받으려고 하는데 이때 Cat객체를 가리키는 참조 변수를 이용하여 Animal객체를 사용할 수 있게 됩니다. 결국 참조변수 cat과 animal은 같은 주소 값을 같게 되지만..