"자바는 객체지향적 언어이다" 라는 말을 들어보신 적이 있을겁니다. 사실 객체라는 용어는 실생활에서 접하기보단 이렇게 코딩을 하면서 많이 접하게 됐었는데요, 그 때마다 아 객체는 이런거지! 오브젝트는 이런거지! 하고 스스로 명확한 정의를 내린 적은 없었습니다. 그러다가 강의를 보면서 자바 공부를 하고 있었는데, 강사님께서 말씀을 하셨습니다. 자바 개발자라면, 객체지향을 자기 만의 언어로 표현할 줄 알아야한다. 저는 자바 개발자라고 생각해왔었는데... 아니었나봅니다. 오늘은 객체지향 프로그래밍이란 무엇인가 함께 알아보고 진정한 자바 개발자로 함께 성장해나갔으면 좋겠습니다. 객체지향 프로그래밍과 클래스 단위 프로그래밍 객체지향에 관한 정의를 내릴 때 저는 스스로 혼란스러웠던(?) 경험이 많습니다. 누군가는 ..
자료구조란? 자료 구조는 데이터가 어떤 구조로 저장되고, 또 어떻게 사용되는지를 나타냅니다. 우리가 평소에 선언하여 사용하던 변수나 배열 같은 것이 자료구조에 해당합니다. 오늘은 이 자료 구조가 정확히 어떤 것이고, 또 왜 중요한 지에 대해 쉽게 알아보도록 하겠습니다! 그러기 위해서, 자료구조의 개념을 우리가 잘 아는 동화인 이야기에 빗대어 알아보는 시간을 가져보려 합니다. 여우의 음식은 어디에 담아야 할까? 여우와 두루미가 서로 음식을 준비한 뒤 바꾸어 먹기로 약속을 하였습니다. 그래서 여우는 두루미를 위한 식사로 두부를 준비하였네요! 1번 네모난 그릇, 2번 동그란 그릇, 3번 컵 중 어느 용기에 담아가는 것이 좋을까요? 이렇게 음식을 담을 때 어느 용기에 담을 지 고민하는 것 처럼, 데이터를 담을 ..
자바에서 소수를 표현할 때 보통 double 이나 float 형식의 자료형을 사용합니다. 자바 관련 강의를 듣는데 강사님께서 이런 말씀을 하시더라구요. double과 float 대신 BigDecimal 자료형을 사용하세요! 왜 이런 말씀을 하시고 왜 double 과 float 대신 BigDecimal을 사용해야 하는지 알아봅시다. 부동소수점 연산의 정확도 문제 float 나 double은 부동소수점으로 값을 표현하다 보면, 소수점 이하의 값이 정확하게 표현이 안되는 오류가 발생합니다. double a = 1.03; double b = 0.42; System.out.println(a - b); // 결과 0.6100000000 위에서 보여지는 코드와 같이 연산이 실행되면, 연산의 기댓값인 0.61이 출력되..
자바 개발자들은 자바 코드를 작성합니다. 그리고 그 자바 코드를 컴퓨터가 알아듣고 의도에 맞게 동작합니다. 이 두 과정 사이에 자바 코드를 컴파일하고 실행하기 위해 실제로 동작하는 작업들과 관련해서 등장하는 플랫폼 독립성이라는 중요한 개념을 살펴보고자 합니다. 플랫폼 독립성 모두들 아시다시피 컴퓨터는 0과 1만을 알아듣습니다. 우리는 그것을 기본 명령이라고 부르는데, 이런 기본 명령들을 운영체제가 알아듣고 그에 맞게 동작하게 됩니다. 자바나 파이썬 같은 언어들도 결국은 0과 1로 변환되어 운영체제를 위한 기본 명령의 형태로 바뀌어야 합니다. 하지면 여기서 운영체제에 따른 기본 명령이 다르기 때문에, Windows 환경에서의 명령과 Unix 환경에서의 명령, Linux 환경에서의 명령까지 전부 다릅니다. ..