전체 글
-
[Java-9] 타입변환, 형변환Java 2020. 11. 18. 22:04
Primitive Type Conversions 자바는 integer와 부동소수점 값(실수) 으로 타입을 변경할 수 있는데, 이게 사실 char형도 숫자로 표현되어 모든 유니코드에 1:1 매핑이 되기 때문에, char 타입도 타입 변환이 가능해진다. 오직 안되는거는 boolean 타입만 다른 원시타입으로 바꿀 수 없다. 타입을 변경하는데에는 2가지 종류가 있는데, ‘프로모션’ 과 ‘캐스팅’ 방식이 있다. Java in Nutshell 에서는 ‘widening conversion’, ‘narrow conversion’ 넓은 변경, 좁은 변경 이렇게 나와있다. 뭔가 ‘widening conversion’, ‘narrow conversion’ 이 좀 더 이해하기 편할 것 같은데, 차근차근 설명해 도록 하겠다...
-
[Java-8] 자바 변수 선언과 초기화Java 2020. 11. 18. 11:49
저번에는 리터럴과 각 변수의 특징에 대해서 알아보도록 하였다. 이제는 변수를 어떻게 선언하는지 그리고 초기화는 어떻게 진행되는지에 대해서 알아보도록 하자. 먼저 이 주제는 타입에대해서 얘기하기전에 먼저 설명하는게 좋지 않았을까 라는 생각을 하지만.. 각설하고 바로 얘기를 해보자. 1. 변수 선언 변수를 사용하기 위해서는 변수를 선언해야 한다. 변수를 선언하는건 간단하다. 이렇게 처음에 타입을 선언을 하고 바로 뒤에 변수 이름을 집어 넣으면 된다. 뭐 사실 변수를 ‘선언'만 하는 건 크게 어렵지 않다. 물론 여러개의 변수를 선언하는 것도 가능하다. 변수를 선언하는건 크게 어렵지 않으니, 네이밍 컨벤션에 대해서 얘기해보자 물론 여러가지 방식이 있다. 지금 설명하는 얘기는 ‘통상’적으로 말하는 자바 언어의 네..
-
[Java-7] 자바 타입의 종류 & 리터럴Java 2020. 11. 17. 14:21
프리미티브 타입과 레퍼런스 타입에 대해서 알아보고, 저번에 컴파일 과정에서 나왔던 리터럴에 대해서 알아보도록 하자. 글이 뭔가 중구난방한 것 같은 느낌은 들지만 최대한 정리하도록 하겠다. 1. Primitive Type VS Refrence Type 잠시 책에서 정확히 프리미티브 타입과 레퍼런스 타입에 대해서 설명하였다. 레퍼런스 타입 & 객체는 기본적으로 프리미티브한 값에서 데이터를 가져오게 된다. 여덟개의 원시 타입은 ‘자바언어’에 의해 정의 되어있다. 절대 ‘개발자’가 새로운 원시타입을 정의할 수 없다. 레퍼런스 타입은, 개발자가 타입을 ‘정의’할 수 있으며, 그러므로 수없이 레퍼런스 타입이 많다. 출처 : *Java in a Nutshell 먼저, 기본적으로 저번에 말했던 JVM 안에서 어떻게 이..
-
[Java-6] Java 기본 타입 (primitive)Java 2020. 11. 16. 20:21
자 이제 자바의 데이터 타입과 변수 및 배열에 대해서 설명하는 시간을 가져보도록 하자. 프리미티브 타입이란걸 알아 보기전에 타입은 알겠는데, 프리미티브는 뭘까 할 수 있다. 1. 타입은 알겠는데 프리미티브 타입은 뭐야? 구글 번역기를 돌리면 프리미티브란 단어는 ‘원어' 라는 뜻을 가지고 있다. 자바의 데이터 타입은 2가지로 구성되어있는데, 프리미티브 타입과, 레퍼런스 타입으로 구성되어있다. 이 글에서 이 둘의 차이에 대해서 다루지 않겠다. 먼저 중요한건 프리미티브 타입의 종류와 범위 그리고 기본 값 아닌가? 자 변수의 종류는 무엇이 있을까? 크게 3가지로 나눌 수 있을 것 같은데 정수 타입, 실수 타입, 논리 타입 으로 만들어 있다. 먼저 정수 타입에 대해서 얘기해보도록 하자 2. 정수 타입 정수 타입은..
-
[Java-5] JDK& JRE, 자바 실행Java 2020. 11. 11. 14:12
전 글에서는 JVM에 구조에 대해서 알아 보았다. 이제 JRE와 JDK 에 대해서 알아보도록 하자. JDK와 JRE는 무엇인가? 꽤나 길게 , JVM에 대한 두가지 포스팅을 올렸다. 이렇게 길게 설명하는게 좋을지 안좋을지 확신이 서지는 않지만 계속 이어나가도록 하겠다. 글을 쭉 읽어왔으면 java가 어떻게 실행되는지 이해 갔을거라고 확신한다. 자 그럼 JVM 이외에 JRE와 JDK에 대해서 알아보도록 하자. 1. JDK 를 왜 사용해야 할까? JDK는 자바 프로그램을 작성하고, JRE를 실행하는데 필요한 툴들을 가지고 있다. 그리고 컴파일러 (javaC) 와 자바 어플리케이션 런처, Appletiviewer 등을 포함하고 있다. 컴파이러는 자바 코드르를 바이트 코드로 변경을 해주는데 이는 JVM이 읽을 ..
-
[Java-4] JVM의 구조Java 2020. 11. 11. 12:30
전 글에서는 JVM에 대해서 간단하게 알아 보았다. 이제 JVM 구조에 대해서 알아보고 JRE와 JDK 에 대해서 알아보도록 하자. 1. JVM 구조 JVM 의 구성요소는 크게 3가지로 구성 되어있다. 클래스 로더 시스템 (Class Loader) 메모리 (Jvm Memory) 실행 엔진 (Execution Engine) 전체적인 그림이다. 1-1. 클래스 로더 시스템 이렇게 3가지의 구조로 되어있습니다. 클래스 로더 시스템은 말 그대로, 클래스를 읽어오는 시스템 구조인데, 로딩 -> 링크 -> 초기화 순으로 진행이 됩니다. 그림으로 표현하면 다음과 같은데, 자세하게 다루지는 않고, 각자 무슨 역할을 하는지 확인해보자, 로딩 시점에는 클래스가 있는지 없는지 확인하게 되는데 만약에 없을 경우, 이 시점에서..
-
[Java-3] JVM과 JIT 컴파일러란?Java 2020. 11. 10. 12:15
전 글에서는 JAVA의 바이트 코드에 대해서 알았다. 이번에는 그 바이트코드를 가지고 어떻게 실행하는지 알아보기 위해, 기본적인 JVM의 JIT 에 대해서 알아보도록 하자. 먼저 실행을 하기 위해서는 생성된 class파일을 java 명령어로 실행을 시켜주면 된다. 예) $ java test.class 또는 $ java test 를 통해서 실행 가능한데, 여기서 java 명령어를 통해서, JRE 가 등장하게 되는데, 한번 전에 말했던 JRE, JVM, JDK에 대해서 얘기해보자. JDK를 통해서 바이트 코드를 생성하고 JRE에게 던지게 된다. JRE를 사용해서 바이트코드를 JAVA명령어로 실행하게 되는데, JVM이 ‘실행’단계를 걸친다. 1. JVM에 대한 이해 JAVA가 지금까지 특정 OS에 독립적 (즉..
-
[Java-2] 바이트 코드란Java 2020. 11. 9. 21:15
전 글에서는 JAVA의 컴파일 과정을 자세하면서, 자세하지 않게 다뤄 보았다. 이번에는 컴파일이 되었을 때 생성되는 중간코드(바이트 코드) 에 대해서 알아보도록 하자. 1. 중간코드(바이트 코드)가 뭐여 도대체 JAVA가 나왔을 당시, 기존 C언어 하고는 꽤나 다른 실행 과정을 가졌다. 간단하게 살펴보면, 중간코드는 JVM 이 읽을 수 있는 언어라고 생각하면 된다. JVM에서는 이 중간 코드를 바이트코드 라고 하는데, (지금부터 중간코드를 바이트코드라고 적겠습니다.) JVM은 이 바이트코드를 읽어 들여서 컴퓨터 이해할 수 있는 언어로 변환한다. 필자의 개인적 의견 이지만, 바이트 코드는 JVM이 읽을 수 있는 언어로 정의하는 것이지만 더 재밌는 이야기를 해보자, 이것먼저 알아보도록 하자 JVM은 JAVA..