자바 47

[도서/자바의 신] #21 실수를 방지하기 위한 제네릭이라는 것도 있어요

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 실수를 방지할 수 있도록 도와주는 제네릭 실행시 발생하는 예외에 대비하기 위해서 테스트를 잘 해야 한다. 메소드 개발과 함께 JUnit과 같은 테스트 코드를 작성하는 것이 좋다. JUnit은 메소드나 클래스 같은 작은 단위를 쉽게 테스트할 수 있도록 도와주는 프레임웍이다. 형변환시 발생하는 예외를 방지하기 위해 instanceof로 하나씩 점검해야하는 단점을 보완하기 위해 Java 5부터 제네릭이라는 것이 추가되었다. 제네릭이 뭐지? 제네릭(Generic)은 타입 형 변환에서 발생할 수 있는 문제점을 컴파일시에 점검하기 위해서 만들어진 것으로 데이터타입을 일반화해준다. 클래스를 제네릭으로 선언하려면 클래스 이름 뒤에 꺾쇠 기호(..

[도서/자바의 신] #20 가장 많이 쓰는 패키지는 자바랭

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. java.lang 패키지는 특별하죠 java.lang은 import를 안해도 그 안의 클래스들을 사용할 수 있는 유일한 패키지로 자바에 꼭 필요한 여러 기능을 제공한다. java.lang에서 제공하는 인터페이스, 클래스, 예외 클래스등은 다음과 같이 나눠볼 수 있다. 언어 관련 기본 : Comparable, Class, Enum, ArrayOutOfBoundsException... 문자열 관련 : CharSequence, String, StringBuffer, StringBuilder, .... 기본 자료형 및 숫자 관련 : Boolean, Byte, Character, Double, Float, .... 쓰레드 관련 : Run..

[도서/자바의 신] #19 이쯤에서 자바의 역사와 JVM에 대해서 알아보자

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 자바의 역사 자바는 1991년에 "Green" 프로젝트가 생기면서 모태가 탄생해 "Oak"라는 이름에서 1995년 "Java"라고 바뀌면서 Write Once, Run Anywhere(WORA)를 목표로 1996년에 JDK 1.0을 출시했다. 1998년 J2SE라는 이름으로 자바의 기본 버전 명칭이 바뀌고 2006년 Java SE 6가 출시되었다. JDK의 플랫폼에 따른 차이 각 운영체제에 최적화된 JDK가 있어 어떤 OS에서 개발하든지 JDK의 버전만 맞으면 적용할 다른 OS에서 컴파일해서 프로그램을 구동시킬 수 있다. 즉, Orcale JDK로 개발하고 IBM의 JDK에서 컴파일해도 된다는 의미이다. OpenJDK는 라이선스..

[공부/Java] Java와 Kotlin

자바 객체 지향 방법론을 사용하며 여러 운영체제에서 실행될 수 있는 언어 자바의 특징 멀티 플랫폼 : JVM만 설치되어 있으면 어떤 운영체제에서도 애플리케이션을 작동시킬 수 있음 메모리 관리 : GC가 사용하지 않는 자원을 자동으로 반환 OOP : 객체 지향 방법론을 사용해 객체라는 단위로 나누고 객체들끼리 상호작용하는 방식 멀티 스레드 : Thread 클래스와 Runnable 인터페이스를 이용해 멀티 스레드를 구현 동적 로딩 : 필요한 시점에 구현한 클래스를 로딩할 수 있음 코틀린 개발자의 편의성, 간결하고 효율적인 코드 작성, 객체지향 프로그래밍과 함수형 프로그래밍의 장점을 절묘하게 조화시킨 언어 코틀린이 생겨난 배경 JetBrains라는 회사에서 만든 제품들이 70%이상 자바로 작성되어 있었는데, ..

공부/Java 2022.12.28

[공부/Java] 고정 소수점과 부동 소수점, 왜 컴퓨터는 소수 계산을 정확하게 못할까?

고정 소수점 (Fixed Point) 10진수를 2진수로 바꾼후 그걸 소수점이 정해진 곳에 넣는 방식이다. 맨 앞 1자리는 부호 비트(sign bit)라 해서 0이면 양수, 1이면 음수를 의미한다. 소수점의 위치는 미리 정해두고, 비트를 채워넣고 남은 공간은 0으로 채워준다. 이런 고정 소수점 방식은 구현하기는 편리하지만 사용한느 비트 수 대비 표현 가능한 수의 범위 또는 정밀도가 낮기 때문에 실수를 다룰 필요가 있는 범용 시스템에서는 거의 안 쓰이고, 높은 정밀도가 필요 없는 소규모 시스템에서는 간혹 쓰인다. 부동 소수점 (Floating Point) 2진수로 변환한 결과를 그대로 넣지 않고 몇가지 과정을 거친다. 정규화 (Normalization) 2진수를 1.xxx * 2^n 꼴로 변환하는 것을 말..

공부/Java 2022.12.28

[공부/Java] Runtime Data Area

Runtime Data Area는 JVM의 메모리 영역으로 자바 애플리케이션을 실행할 때 사용되는 데이터들을 적재하는 영역이다. 이 영역은 크게 Method Area, Heap Area, Stack Area, PC Register, Native Method Stack으로 나뉜다. Method Area JVM이 실행되면서 생기는 공간이다. 모든 쓰레드가 공유하는 메모리 영역으로 클래스, 인터페이스, 메소드, 필드, Static 변수 등의 바이트 코드가 저장되는 공간이다. 이 영역 안에는 Runtime Constant Pool이라는 공간도 있는데 '상수'정보가 저장된다. Class Area, Code Area, Static Area로 불려진다. Heap Area 모든 쓰레드가 공유하며, new 키워드로 생성..

공부/Java 2022.12.28

[공부/Java] static이란?

일반적으로 우리가 만드는 class는 static 영역에 생성된다. static 키워드로 만든 정적 변수와 정적 메소드의 경우는 프로그램이 종료되기 전까지 사용이 가능하다. 또한 static이라는 키워드를 통해 static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만 GC(Garbage Collector)의 관리 영역 밖에 존재해 static을 자주 사용하면 프로그램 종료시까지 메모리가 할당된 채로 존재해 시스템 퍼포먼스에 악영향을 주게 된다. Static이 저장되는 위치 Permanent vs. Metaspace Permanent JDK 8 이전까지 존재했던 메소드 영역 클래스 내부의 메타 데이터들을 저장하는 영역 Heap영역에 속하며 클래스, 메소드 메타 데이터, 정적 객체..

공부/Java 2022.12.28

[도서/자바의 신] 부록 #5 java.lang.Math 클래스

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 수학적인 계산을 위해서 꼭 필요한 Math 클래스 자바에서는 수학을 계산하는 Math라는 클래스를 제공한다. JDK 1.0에서부터는 Math를, JDK 1.3에서부터는 StrictMath클래스도 함께 제공한다. StrictMath는 어떤 OS나 어떤 시스템 아키텍처에서 수행되든지 동일한 값을 리턴해야 한다는 기준에 의해 만들어진 클래스고 Math는 시스템에 따라 결과가 달라질 수 있는 클래스이다. 하지만 대부분의 Math 클래스 내부는 StrictMath의 메소드를 호출하도록 되어 있고, StrictMath 클래스에 선언된 대부분의 메소드는 native로 선언되어 있다. Math 클래스에 선언되어 있는 상수에는 double타입인..

카테고리 없음 2022.12.27

[도서/자바의 신] 부록 #4 비트 연산자는 어떤 것일까

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. bit와 byte에 대해 다시 한번 살펴보자 컴퓨터는 기본적으로 0과 1로 처리된다. 0과 1을 나타내는 것을 1bit라 하고 8개가 모여 1byte가 된다. 1byte로는 2x2x2x2x2x2x2x2가지의 표현이 가능해 총 256가지가 된다. 8비트를 4자리씩 끊으면 4비트 2개로 16진수 2개로 1바이트를 표현할 수 있다. 비트 연산자라는 것들은 뭘까? CPU의 성능이 아주 느린 장비에 들어가는 프로그램을 작성하건, 암호화 작업과 관련된 작업을 할 때 아주 조금이라도 메모리를 줄이고 성능을 개선하기 위해서 비트 연산이 필요한 경우가 있다. 두 개의 숫자를 비교하는 비트 연산자들 & : AND 연산 | : OR 연산 (incl..

카테고리 없음 2022.12.27

[도서/자바의 신] 부록 #3 float와 double

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 부록 1,2는 JDK 설치와 이클립스 설치에 관한 내용으로 따로 포스팅하지 않는다. float는 32비트 단일 정확도, double은 64비트 이중 정확도를 갖는 숫자이다. IEEE 754에서 정의한 소수점 숫자의 표준에는 비트 크기 외에도 다음과 같은 표준이 있다. 양수와 음수 +0과 -0 양수와 음수의 무한대(infinity) 숫자가 아닌 값 (Not a Number, NaN) NaN에는 0을 0으로 나누었을 때의 값이 포함되고 Float와 Double에 각각 Float.NaN, Double.NaN으로 선언되어 있다. s * m * 2^(e-N+1) s는 부호를 나타내고, m은 1보다 크거나 같고, 2^N보다 작은 정수, e..

728x90