Programming language/Java
-
자바의 장점은 OS에 영향을 받지 않는다는 것이 아닐까 생각한다.자바로 작성된 프로그램은 JVM만 있다면 실행이 가능하다. JVM(Java Virtual Machine)JVM이란 Java Virtual Machine(자바 가상 머신)의 약자로 자바와 OS 사이의 중계자 역할을 한다.JVM은 자바 바이트 코드(Byte Code)를 OS에 맞게 해석해준다. 이것이 자바가 OS로부터 독립적이고 JVM에 종속적이게 되는 이유이다.(바이트 코드는 기계어가 아니기 때문에 OS에서 바로 실행되지 않고 JVM이 OS가 바이트 코드를 이해할 수 있도록 해석해 주는 것이다) JVM의 메모리 구조는 아래와 같다. ① Javac(Java compiler) : 프로그램이 실행되면 Javac(Java compiler)는 ja..
[Java]JVM 메모리 구조 2018. 8. 12. -
인스턴스 처음에 객체와 인스턴스에 사이에서 혼란을 겪은 적이 있다. 객체는 인스턴스를 포함하며 객체지향 프로그래밍에서는 비슷한 의미로 사용되지만 두 단어는 분명 차이가 있다. 우선 클래스 타입으로 선언되었을 때를 객체라고 하며, 클래스가 실체화되었을 때 인스턴스라고 말한다. 내 생각에 객체와 인스턴스의 가장 큰 차이는 메모리에 할당 되느냐 안되느냐의 차이인 것 같다. 코드를 보자. 먼저 Cafe 클래스에는 두 변수와 메소드가 정의되어 있다. 1 2 3 4 5 6 7 8 9 10 11 12 package biz.test; public class Cafe{ String drink; // 음료 int pay; // 가격 public void Americano(){ drink = "Americano"; Syst..
[Java]인스턴스(Instance) 2018. 8. 9. -
개발을 하다보면 이런 에러를 마주할 때가 있을 것입니다. java.lang.ArrayIndexOutOfBoundsException 오류를 잡는 법은 에러 아래 줄을 따라 해당 소스의 라인을 찾아가면 되는데 근본적인 원인은 배열 인덱스와 관련이 있습니다. 쉽게 말해 프로그램이 배열 인덱스보다 큰 요소에 접근하게 될 때 이런 오류가 발생합니다. 예를 들어 배열을 박스라고 생각해보겠습니다. 이 박스의 공간은 세 개라고 정의합니다. 이 각각의 공간은 배열의 요소라고 불립니다. 이처럼 공간이 정의된 배열을 생성하면 배열의 요소는 기본값을 갖습니다.(int는 0, String은 null) 배열의 인덱스는 배열의 요소를 구분하는 일련번호라고 생각하면 됩니다. ※배열의 인덱스는 0부터 시작합니다. 이제 그럼 박스 안에..
[Error]java.lang.ArrayIndexOutOfBoundsException 2018. 8. 9. -
앞서 객체와 클래스에 대해 정리를 했었다.그 중간에 인스턴스에 대한 언급이 있어서 혹여 설명이 필요한 분들이 있을까해서 다시 공부도 할겸 정리를 해본다.인스턴스를 이해하기 위해서는 먼저 생성자에 대한 개념이 있어야 한다. 생성자(Constructor) 생성자는 객체가 생성될 때 실행되는 메소드이다.자세하게 말하면 클래스가 인스턴스화 될 때 클래스의 멤버 변수(멤버 필드라고도 함)를 초기화해주는 기능을 한다. 모든 클래스는 (반드시)한 개 이상의 생성자를 가진다. 커피에서 원두같은 존재(?)라고도 할 수 있을 것 같다. 이러한 생성자는 우리가 선언을 하지 않을 경우 기본 생성자(Default)로 존재한다. 객체와 클래스에서 예시로 보였던 Cafe 클래스의 기본 생성자를 만들어봤다.※생성자는 클래스와 같은 ..
[Java]생성자(Constructor) 2018. 8. 8. -
객체와 클래스 자바는 객체지향의 언어이다. 객체를 이해하기 위해서는 클래스의 개념도 알아야 한다. 또 인스턴스가 무엇인지도 알아야 한다. 객체는 뭘까. 구글링을 조금만 해봐도 객체에 대한 다양한 정보들을 얻을 수 있다. 저마다 말하는 내용이 비슷해 보이면서 달라서 헷갈릴 수 있지만 결국 그 뜻은 같다. 간단하게 객체는 클래스를 사용하여 만들어진 것이다. 즉, 클래스는 객체를 만들기위한 틀이 된다. 아래 예를 통해 이해를 조금 도와봤다. 사람들이 자주 찾는 카페. 카페에는 다양한 종류의 음료들이 있다. 커피부터 에이드, 쥬스 등등... 이러한 카페를 클래스라고 생각하자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package biz.test; public ..
[Java]객체와 클래스 2018. 8. 3. -
예전에 학교에서 프로젝트를 할 때만 해도 인터페이스를 뭔가 진행 과정(?)때문에 사용을 했었던 것 같습니다. 확실히 개념을 짚고 넘어갔어야 하는 부분이었는데 말이죠. 그래서 최대한 이해하기 쉽게 정리를 해봤습니다. 인터페이스(Interface) 인터페이스는 메소드만 선언되어 있고 실제 구현은 되어있지 않다. 우리는 인터페이스를 상속받은 클래스에서 (인터페이스에서)선언된 메소드를 가져다 입맛에 맞게 쓸 수 있다. 이는 팀 단위의 프로젝트를 하게 되면 효율적으로 사용할 수 있는 장점이 있다. 또 자바에서는 다중 상속을 허용하지 않는데 인터페이스는 인터페이스간의 다중 상속이 가능하다. 인터페이스의 메소드는 기능적인 구현이 아닌 선언만 되어있는 추상메소드이기 때문이다. 아래 샘플 코드를 보며 알아보자. PayI..
[Java]인터페이스(Interface) 2018. 7. 20.