자바에는 8대 자료형이라 불리는 기본 자료형이 있다. 이 기본 자료형을 특별하게 분류하는 이유는 클래스가 아니기 때문이다. 클래스가 아니라는 것은 다른 말로 참조타입(reference type)이 아니라는 뜻이다. 당장 적당한 예시가 떠오르지 않지만, 이 기본 타입들에 대해 객체로 표현해야 하는 경우가 있는데 문제는 참조타입이 아니기 때문에 객체를 생성하지 못하는 문제가 있다. 그래서 Java에는 Wrapper(래퍼) 라고 부르는 클래스가 존재한다. 이 클래스들은 기본 자료형을 참조타입으로 객체를 생성할 수 있도록 해준다. 기본 타입 (primitive type) 래퍼클래스 (Wrapper class) byte Byte short Short int Integer long Long float Float d..
프로그래밍 언어/Java
자바에서 인터페이스를 사용하는 이유가 무엇일까? 아마 인터페이스를 처음 접해보는 분들이 많이 궁금해 하는 부분일거라고 생각한다. 그냥 그 기능을 클래스로 구현해도 될 것 같은데 번거롭게(?) 인터페이스까지 사용해서 또 인터페이스에 대한 학습도 해야하기 때문이다. 이세상 모든건 그게 왜 필요한지를 알면 이해하는데 도움이 많이 된다. interface라고 쓰는 이 인터페이스는 결론부터 얘기하면 '공동 작업시 충돌을 방지하기 위해서'라고 한다. 다른 많은 이점이 있지만, 처음 내가 배울 당시 인터페이스 사용 이유는 공동 작업을 할때 유연함을 위해서다. 다음과 같은 상황을 생각해보자. A씨는 필기도구를 사용해서 글씨를 쓰는 프로그램을 개발하는 프로젝트를 진행하고 있다. 그러던 중 같은 팀의 연필을 개발하는 김개..
Q > 예를 들어 int[] a = new int[5]가 있으면 이 배열도 객체라는데 무슨말인지 잘 모르겠습니다. int라는 이름의 클래스가 있다는 말과 동일하나요? Integer Wrapper 클래스와 연관성은 없는 것 인가요? 알기 쉽게 설명해주세요. A > 배열을 객체라고 부른다. 그 이유가 무엇일까? 보통 객체를 생성한다라고하면 클래스의 객체를 많이 떠올린다. 그렇다고 클래스부터 설명을 할 수는 없는 노릇이다. 클래스에 대해서는 안다고 가정하고 클래스와 객체와의 관계에 대해 생각해보자. 클래스는 자료형이다. 이 사실을 잊어선 안된다. 왜냐면 자료형은 그 자료가 가진 형태를 나타내는 것이기 때문에 스스로는 사용될 수 없다. 누군가가 그 형태를 가지는 실체를 만들어 내야만 사용할 수 있다. 이런 관점..
나는 개인적으로 클래스와 객체를 설명할 때 붕어빵 틀을 비유하는걸 싫어한다. 마음에 들지 않는다. 내가 배울 당시 이렇게 배우지 않았을 뿐만 아니라 개인적으로 잘 와닿지도 않았다. 그래서 내가 배운 방법으로 클래스란 무엇이며 이 클래스와 객체와의 관계를 어떻게 이해하면 좋은지 정리해보려 한다. 클래스는 우리가 일상 생활속에서 볼 수 있는 모든 것들을 표현할 수 있는 도구라고 생각하는 것도 좋은 발상이다. 클래스를 구성하고 있는 큰 두가지 개념이 있다. 하나는 멤버필드라는 개념이며 다른 하나는 멤버 메서드라는 개념이다. 멤버 필드란, 그 클래스가 표현하고자 하는 대상이 가지는 속성들을 의미한다. 높이, 색상, 속도, 속력, 방향, 무게 등 일반적인 사물들이 가질 수 있는 모든 속성들을 말한다. 멤버 메서드..
java 개발을 하려면 환경변수를 설정해야한다. 아니 더 정확히는 명령 프롬프트에서 컴파일하고 실행하려면 환경변수를 설정해야 한다. 명령 프롬프트는 cmd창으로 알고 있는 보통 검정색 있어보이는 화면을 말한다. 우선 환경변수라는것이 무엇인지부터 알아보자. IT(정보기술) 용어로, OS의 셸(shell) 등에 설정되어 있다. 변수의 이름과 의미는 미리 정해져 있기 때문에 환경변수를 읽으면 시스템의 설정을 어느 정도 알 수 있다. OS의 환경변수는 시스템의 실행파일이 놓여 있는 디렉토리의 지정 등 OS 상에서 동작하는 응용소프트웨어가 참조하기 위한 설정이 기록된다. 응용소프트웨어로부터는 시스템 콜(system call:프로그래밍 언어에서 지원하지 않는 기능에 대하여 운영체계의 루틴을 호출하여 이용하는 것)이..
자바에는 문자열을 처리하기 위한 클래스로 String, StringBuilder, StringBuffer 클래스가 있다. 단순히 문자열을 처리하기 위함이라면 (예를 들면 System.out.println("문자열"); 이런 경우) 어떤 것을 사용해도 별다른 차이는 없다고 알고 있다. 하지만 문자열을 더하는 (+) 연산을 할 경우에 퍼포먼스상의 차이가 발생한다. 백번 듣느니 한 번 보는게 낫다. 실제로 아래와 같은 예제는 많은 곳에서 흔히 볼 수 있는 예제일 것이다. package xxxelppa.tistory.com; public class StringTest { public static void main(String[] ar) { long StartTime = 0; long EndTime = 0; St..
정규표현식 자체만으로도 정말 많은 이야기를 할 수 있지만. 기본적인 정규표현식의 개념과 언제 사용하면 좋은지에 대해서는 어느정도 알고 있다고 가정한다. (나중에 기회가 된다면 정규표현식에 대해서 정리를 할 계획인다.) 자바에서 정규표현식을 사용하기 위해서는 두 개의 라이브러리를 import해야 한다. import java.util.regexp.Matcher; import java.util.regexp.Pattern; 바로 util package에 있는 클래스 이다. 두 개의 클래스를 import 했다면, 다음처럼 작성해보자. // 비밀번호 유효성 검사식1 : 숫자, 특수문자가 포함되어야 한다. String regExp_symbol = "([0-9].*[!,@,#,^,&,*,(,)])|([!,@,#,^,&..
답답하면 니들이 뛰라는 말이 있다. 그래서 정리해봤다. javaFX를 사용해서 MDI (Multi Document Interface)를 개발해야할 경우가 간혹 생길수 있다. 검색을 해보았지만 마땅히 내가 원하는 스타일이 없었다. 그렇다고 이제 와서 javaFX를 (나는 처음부터 한 번 쭉 훑어 봤지만)처음부터 볼 수는 없는 노릇이다. 갑자기 javaFX를 사용하게 되어서 아주 급하게 공부를 하고 있었는데, 사용하지 않게 될 가능성이 높아졌다. 그래서 지금까지 알아본 내용이 너무(?) 아까워서 나름의 정리를 해보려 한다. 우선 javaFX가 무엇인지 간략하게 살펴보는 것으로 시작한다. javaFX는 RIA (Rich Client Application)을 개발하기 위한 것으로, 크로스 플랫폼을 지원하는 그래..