java(7)
-
JIT compiler
CS 스터디를 준비하는데 컴파일 언어의 컴파일 과정이 있어서, 인터프리터 언어와 컴파일 언어에 대해 찾아보았다. 문득 자바는 컴파일 언어 아닌가? 싶어서 검색해보았고.. JIT compiler와 JVM의 구조까지 한번 학습하는 시간을 갖게 된 것이다.. 이번 포스팅에서는 1) 인터프리터 언어와 컴파일 언어의 차이 2) 자바는 어떤 언어일까 3) JIT compiler와 JVM의 구조 를 간략하게 적어보겠다. 1) 인터프리터 언어 vs 컴파일 언어 개발자가 작성한 소스코드를 고급언어라고 한다. 둘의 큰 차이점은 고급언어를 컴파일하는지 여부다. 인터프리터 언어 인터프리터 언어는 우리가 작성한 소스코드를 컴파일 하지 않고 한 줄씩 읽으면서 실행한다. 컴파일 과정이 없으니 여기서 시간을 세이브 할 수 있겠지만 ..
2022.12.11 -
백준 12865: 평범한 배낭 [Java] - 포포
문제 이 문제는 아주 평범한 배낭에 관한 문제이다. 한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다. 준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자. 입력 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 ..
2022.10.30 -
Java - Calculator 과제 회고
스스로 Java를 이용해 객체지향적으로 Calculator를 설계하는 과제를 마쳤다. 과제를 진행하는 동안 겪은 어려움과 학습한 내용들을 간단하게 정리하고자 한다. 지금까지 독학을 하면서 다른 사람에게 내 코드를 보여준 것은 이번이 처음이다. 상당히 유익한 시간이었고 내가 갖고 있던 안좋은 습관들을 발견할 수 있었다. 고치는 것은 앞으로 나의 몫이다! 안좋은 습관들 변수명을 축약형으로 사용하는 것 sc -> scanner, comm -> command 등 풀 네이밍하는 습관을 갖자 주석을 사용하는 것 '주석을 달아야 하는 코드는 잘못된 코드다’ 라는 말을 어디선가 들은 것 같다. 클래스와 메서드 명을 명확하게 하고, 테스트 코드가 문서처럼 작성되는 것이 베스트다. 메소드 네이밍을 잘하자 checkUser..
2022.10.30 -
Java 숫자야구
수업을 따라 숫자 야구를 구현하며 객체지향적으로 코드를 작성하는 시간을 가졌다. 설계도와 로직 위 그림은 https://excalidraw.com/에서 그렸다. 강사님이 사용하시길래 들어가서 사용해봤는데 사용법이 간단해서 꽤 좋았다. 객체지향적으로 설계를 위해서는, 역할과 책임의 분리가 중요하다. 이번 실습에서는 역할(관심사)에 따라 클래스로 분리했다. 또, 변경의 여지가 있는 부분은 전부 인터페이스로 설계했다. 역할에 따라 분리한 클래스 1. Baseball Class: 핵심 비즈니스 로직을 수행 2. Input: 사용자의 입력 처리 3. Output: 결과 반환 4. Numbers: 숫자 저장 5. NumberGenerator: 랜덤한 숫자 생성 6. BallCount: 스트라이크, 볼의 개수 관리 ..
2022.10.21 -
백준 1743: 음식물 피하기 [Java] - 포포
문제 코레스코 콘도미니엄 8층은 학생들이 3끼의 식사를 해결하는 공간이다. 그러나 몇몇 비양심적인 학생들의 만행으로 음식물이 통로 중간 중간에 떨어져 있다. 이러한 음식물들은 근처에 있는 것끼리 뭉치게 돼서 큰 음식물 쓰레기가 된다. 이 문제를 출제한 선생님은 개인적으로 이러한 음식물을 실내화에 묻히는 것을 정말 진정으로 싫어한다. 참고로 우리가 구해야 할 답은 이 문제를 낸 조교를 맞추는 것이 아니다. 통로에 떨어진 음식물을 피해가기란 쉬운 일이 아니다. 따라서 선생님은 떨어진 음식물 중에 제일 큰 음식물만은 피해 가려고 한다. 선생님을 도와 제일 큰 음식물의 크기를 구해서 “10ra"를 외치지 않게 도와주자. 입력 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ ..
2022.10.19 -
Java equals()와 hashCode()
오브젝트의 동일성과 동등성 Java에서 "두 객체가 같다"라는 말은 두 가지로 해석될 수 있다. 두 개의 오브젝트가 완전히 같은(identical) 오브젝트라고 말하는 것과, 동일한 정보를 담고 있는(equal) 오브젝트라고 말하는 것은 분명히 다르다. 전자를 동일성(identity) 비교라 하고 후자를 동등성(equality)비교라고 한다. 동일성은 ==, 동등성은 equals() 메소드를 이용해 비교한다. 동일성은 하나의 오브젝트를 두 개의 레퍼런스 변수가 가리키고 있는 상태 동등성은 두 개의 다른 오브젝트가 메모리 상에 존재하나, 로직상의 정의에 따라 오브젝트 정보가 같다고 판단 equals()와 hashCode() java.lang.Object 클래스는 eqauls()와 hashCode() 메소드..
2022.10.19