Language/Java

Language/Java

JVM(Java Virtual Machine)

JVM JVM(Java Virtual Machine)은 쉽게 말하면 '자바를 돌리기 위한 기계'라고 생각하시면 됩니다. 우선 JVM까지 가기 전에 저희가 짠 자바코드가 어떻게 실행되는지 알아봅시다. 출처 : http://www.ntu.edu.sg/home/ehchua/programming/java/j1a_Introduction.html 자바로 코드를 자면 Java Compiler에 의해 컴파일이 됩니다. 이를 통해 .java 파일이었던 것이 .class파일로 바뀌는데요. 이는 바이트코드로 바꿔주는 과정입니다. 저희가 짠 코드와 기계가 이해하는 코드의 중간 언어라고 볼 수 있습니다. 그리고 이 바이트코드가 JVM를 통해 기계가 이해하는 언어로 되는 것입니다. 사실 JVM만으로는 실행시킬 수 ..

Language/Java

제네릭(Generic)

자바에서 Collection을 사용하다보면 안에 Element의 타입을 종종 보곤하는데요. 이 부분을 '제네릭'이라고 합니다. 그럼 이 제네릭을 왜 쓰는 것일까요? 다음과 같은 사용자가 만든 클래스가 있다고 생각해봅시다.1 public class CastingDto implements Serializable { private Object object; public Object getObject() { return object; } public void setObject(Object object) { this.object = object; } } 그리고 몇 개의 객체를 생성해보겠습니다. public class GenericSample { public static void main(String..

Language/Java

예외처리

예외처리 오늘 수업시간에 '예외처리'와 관련하여 배웠습니다. 이때까지 미션을 진행해오면서 이에 관한 깊은 이해없이 예외처리를 사용해왔었는데요. 오늘 Pair 프로그래밍에서 주어진 미션들을 해결해 나가면서 여러모로 많은 것들을 배울 수 있는 시간이었습니다. 미션 순서대로 하나씩 정리하면서 개념도 추가적으로 설명하겠습니다. 미션1. PointTest에서 Point에 대한 exception테스트를 추가한다. x, y 값이 0미만, 24초과에 대한 에러 테스트를 추가한다. 첫번째 미션은 JUnit4를 사용하는 테스트코드에서 예외발생했을 때 어떻게 테스트하는지입니다. 간단하게 테스트 코드에서 @test이라는 Annotation옆에 (expected = 예외명.class) 붙여주면 됩니다. 이 부분은 문법적인 내용..

Language/Java

enum

enum 오늘 수업시간에 리팩토링을 통해 enum, 익명 클래스, 람다(lamda)의 개념을 배울 수 있었습니다. 하지만 오늘 주제가 enum인 만큼 enum 위주로 정리해보도록 하겠습니다. 먼저 리팩토링 할 코드입니다. import java.util.List; public class FigureFactory { Figure getInstance(List points) { if (points.size() == 2) { return new Line(points); } if (points.size() == 3) { return new Triangle(points); } if (points.size() == 4) { return new Rectangle(points); } throw new IllegalArg..

Language/Java

인터페이스(Interface)

인터페이스(Interface) 오늘 수업시간에는 인터페이스에 대해서 다루었습니다. 인상 깊었던 내용, 그리고 기억해둘 내용 중점으로 정리하겠습니다. 인터페이스가 뭘까요? 사전적 의미로 아래와 같은 뜻이 있습니다. 서로 다른 두 시스템, 장치, 소프트웨어 따위를 서로 이어 주는 부분. 또는 그런 접속 장치. 실생활에서 찾아볼 수 있는 흔한 예로 콘센트가 있는데요. 콘센트는 서로 각기 다른 것(전기와 전자기기) 사이에서 연결하게 해주죠. 또 자바에서도 찾아볼 수 있는데요. Connection.java라는 클래스입니다. 이 클래스는 DB와 프로그램 사이에서 서로를 연결해주는 역할을 합니다. 왜냐하면 수많은 DB의 종류가 있고 수많은 프로그램이 있는데 이 각기 다른 연결을 따로따로 Custom화하면 너무나 많은..

Language/Java

상속(Inheritance)

상속(Inheritance) 오늘 수업시간에 상속에 대해 배울 수 있는 기회였습니다!! 음.. 까먹기 전에 인상 깊었던 내용 위주로 정리해보도록 하겠습니다. 상속이 뭘까? 제가 이해하는 상속은 어떤 클래스에 구현된 변수, 메서드를 좀 더 확장하여 사용하는 방법입니다. 이 때 이미 구현된 부분을 부모클래스, 이를 받아 확장하려는 클래스를 자식클래스라고 합니다. extends 예약어를 사용하면 부모클래스를 받으면 부모클래스에 선언된 모든 변수와 메서드를 사용할 수 있습니다. 부모클래스에서 선언된 변수와 메서드를 또 한 번 선언할 필요없이 자식클래스에서 사용이 가능하므로 불필요한 중복을 줄일 수 있습니다. 그럼 불필요한 중복을 줄이기 위한 방법으로 상속 말고는 다른 방법은 없을까? 수업시간에 이러한 질문에 대..

Brad Lee
'Language/Java' 카테고리의 글 목록