[스터디 진행 사항 ]
스터디 진행 날짜 : 22년 10월 23일
스터디 진행 장소 : 노원
스터디 진행 시간 : 오후 2시 ~ 오수 4시 (2시간)
[학습 내용 ]
오늘 노원에서 처음 Java 스터디 1회차를 진행했다. 간단하게 JAVA에 대해 알아보는 시간을 가졌다.
개발을 할 때 개발 프로젝트 규모가 커질 수록 절차지향 프로그래밍을 이용하는 것이 어려워졌다. 중간 부분 수정도 어려워지고 유지보수도 어려워졌던 상황에서 다시금 주목을 받은 것이 " 객체 지향 프로그래밍 " 이다.
# 객체 지향 프로그래밍 : 객체와 객체간의 상호 작용 을 이요한 프로그래밍
#JDK :
JAVA를 가지고 개발할 수 있는 일종의 ' Development kit ' 로 JDK를 설치하면 JVM과 JR이 함께 설치된다.
# JVM :
JAVA가 돌아갈 수 있는 가상 환경
# JR :
JAVA의 읽기 버전 - 수정 및 편집은 할 수 없음.
( 회사에서는 Java 1.8 과 Java11 많이 사용 한다고 함. )
Java 는 소스 파일을 컴파일해서 실행한다. 원래 컴파일은 기계가 이해할 수 있는 기계어로 변경해주는 것인데 Java는 컴파일 했을 때 만들어지는 .class 파일이 바이너리 파일이 아니다 ( 완벽한 기계어로 바로 바뀌는 것이 아니라는 의미이다.)
Java가 컴파일 했을 때 만들어지는 파일은 JVM에서 읽을 수 있는 형태의 컴파일 파일로 JVM에서 이 파일을 기계어로 바꿔준다.
[ java → compile → .class → JVM → 찐 기계어 ]
# 변수 (variables) :
데이터를 저장할 수 있는 공간( 저장 공간) - 공간이기에 원하는 데로 데이터를 추가하거나 삭제할 수 있다.
메모리 위에 공간이 생성된다.
(String은 int와는 메모리 관리 법이 조금 다른데, 객체의 관점이 들어간다. )
# 원시자료형 (primitive variable) : 기본 8개 data 자료형
- byte
- short
- long
- char
- boolean
- float
- double
* 원시자료형은 크기가 정해져 있고 원시 자료형이 아닌( 참조 자료형 )자료형은 크기가 정해져 있지 않음.
* 함수 더하기
float / double : double 0.1 + double 0.5 = 0.6000000 이 출력됨.
원인은 부동 소수점이 근사치를 -2진수로는 소수를 모두 표현할 수 없기때문에 오류가 발생한다.
double이 float보다 오차가 적기 때문에 double type을 많이 사용한다. 메모리가 두배나 사용되긴 하지만 이왕이면 double을 사용.
[ 부동 소수점 ]
컴퓨터에서 실수를 표현할 때 정수와 동일하게 2진수로만 표현해야 하며 대표적으로 2 가지 방식이 있다.
1. 고정 소수점 : fixed point
실수를 표현하는 가장 간단한 방식이나 표현할 수 있는 범위가 매우 적다.
소수부의 자릿 수를 미리 정하고 고정된 자릿 수의 소수를 표현하는 방식이다.
2. 부동 소수점 : floating point
실수를 가수부와 지수부로 나누어 표현하는 방식으로 표현할 수 있는 범위가 매우 크다.
C++ 에서 사용하는 E지수 표기법이 있고 IEEE 부동 소수점 방식이 있는데 IEEE 754표준을 주로 사용한다.
링크 : TCPschool.com : 부동소수점
해결법 :
String type으로 바꿔주거나 BigDecimal 방법을 이용하면 된다.
>> BigDecimal 방법 : Java 언어에서 숫자를 정밀하게 저장하고 표현할 수 있는 유일한 방법이다. 다만 속도가 느리고 기본 타입보다 사용법이 조금 불편하지만 Java를 이용해서 돈과 소수점을 다룬다면 BigDecimal은 선택이 아니라 필수이다.
참고 : 링크1
참고 : 링크2 : 소수 구하는 알고리즘
[ 다음 스터디 준비 필요 사항 ]
1. Do it Java 프로그래밍 책 구입
2. 반복문까지 예제 복습
'Programming > Java' 카테고리의 다른 글
[ JAVA 스터디 ] 2회차 복습 - 221106 (0) | 2022.11.11 |
---|---|
[ JAVA ] 예제 연습 중 궁금중 모음 (0) | 2022.10.26 |
[JAVA] 객체지향 특징 4 가지(캡슐화, 상속, 다형성, 추상화) (0) | 2022.10.21 |
JAVA의 정석 [연습문제] - Chapter04 (0) | 2022.10.14 |
java 구구단 예제 (0) | 2022.10.11 |