java 4

[TIL] JAVA에서 0.1을 100번 더하면 왜 10이 아닐까? (JAVA)

오늘 프로그래밍 1주차 강의를 듣는데 강사님께서 이런 질문을 던지셨다." float는 4byte만 쓰는데 어떻게 long 보다 더 넓은 범위를 표현 가능한가요? " 해답은 간단하다 정수와는 다르게 실수는 '부동소수점'을 사용하기 때문이다. 🟡 부동소수점이란? - IEEE 754 표준 기반부동소수점은 2진수를 사용해 소수를 표현한다.그중  IEEE 754 표준을 따르는 단정도 부동 소수점은 32bit로 구성되며, 구조는 아래와 같다.부호비트: 1bit지수: 8bit (바이어스 127를 사용. 지수+127해서 2진수로 변환해야함)가수(유효 숫자): 23bit  🟡 2진수로 표현할 수 없는 소수계산 방법은 따로 검색해보면 나오기도 하고, 여기서는 계산방법이 중요한게 아니기 때문에 생략하겠다.여튼 여기에서의..

TIL/JAVA 2024.11.11

[TIL] 최대공약수(GCD)와 최소공배수(LCM) 효율적으로 구하기 (JAVA)

오늘의 데일리 루틴 문제는 '최대공약수와 최소공배수'이다.https://school.programmers.co.kr/learn/courses/30/lessons/12940 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 내가 아는 최대공약수, 최소공배수 구하는 방식을 적용해서 풀어보았는데, 아무리 생각해도 좀 유치한가 싶기도하고, 분명 이것보다 더 효율적인 방법이 있을텐데..하는 찝찝한 마음을 떨쳐버릴 수가 없어서 정보를 찾아보았다. 아래는 내가 초기에 작성한 코드이다.초등학생이 최소공배수, 최대공약수 구하듯이 한땀한땀 정성스럽게 비교해가며 구한다.최소공배수는 브루트 포스를 사용했는데, 수를 하나씩 넣어..

TIL/JAVA 2024.11.08

[TIL] 인터페이스 - 다중 상속 (JAVA)

드디어 다형성 부분을 끝냈다. 추상 클래스, 순수 추상 클래스, 인터페이스 등 여러 흥미로운 내용을 학습했다. 오늘은 그중에서도 가장 인상 깊었던 '다중 상속'에 대해 정리해보겠다. JAVA의 상속을 공부할 때 'JAVA는 다중 상속을 지원하지 않는다.' 라고 배웠었다.그런데 이제 와서 다중 상속(구현)이 된다니 이게 무슨 소린가 싶었다. 🫠(정말 흥미로워..)차근차근 알아보도록 하자.1. 다이아몬드 문제자바에서 `extends` 대상은 단 하나로 제한된다. 즉, 자식은 하나의 부모만 선택할 수 있다.아래 그림과 같은 경우는 금지된다.위 그림과 같이 Child가 다중 상속을 사용한다고하자. 또한 부모 클래스 모두 순수 추상 클래스가 아니라고 가정한다.Child는 부모로부터 sing()이라는 기능을 호출..

TIL/JAVA 2024.10.30

[TIL] static 메서드에서 인스턴스 기능을 사용할 수 없는 이유

강의에서 정적 메서드가 인스턴스의 기능을 사용할 수 없는 이유를 다음과 같이 설명했다.'인스턴스의 기능을 사용하려면 참조값을 알아야한다. 하지만 정적 메서드는 참조값 없이 호출되기 때문에 인스턴스의 기능을 사용할 수 없다.' 음... 두 번째 줄이 어딘가 잘 이해가 가지 않았다.🤔  강의도 반복해서 듣고, 여기저기 검색해본 뒤 나름의 결론을 아래에 다시 정리해보았다.🟡 일반적으로 static메서드에서는 인스턴스 메서드와 인스턴스 변수를 사용할 수 없다.이유는 static 메서드와 인스턴스의 '생성 시점'이 다르기 때문이다.static 메서드/변수JVM이 .class 파일을 메모리에 올릴 때 생성. 즉, 프로그램 실행 시 메서드 영역에 생성된다.인스턴스 메서드/변수`new` 연산자로 생성자를 호출했을 ..

TIL/JAVA 2024.10.29