본문 바로가기

분류 전체보기

(38)
[JAVA] 정규표현식(regex) [1/2] 정규표현식이란 정규표현식(Regular expressions)은 줄여서 Regex라고 합니다. 정규표현식의 사전적인 의미로는 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어입니다. Regex는 문자열에 어떤 패턴의 문자들이 있는지 찾는데 도움을 줍니다. 입력한 문자열에서 특정한 조건을 표현할 경우 일반적인 조건문은 다소 길어질 수 있습니다. 그러나 정규표현식을 이용하면 매우 간단하게 표현할 수 있습니다. 단, 그만큼 코드가 간결하여 숙지하지 않으면 이해하는 데에 어려움이 있습니다. 정규표현식의 Metacharacters Meta 문자열(Metacharacters)는 Regex의 패턴에서 어떤 문자가 특별한 의미를 갖는 것을 말합니다. 특별한 의미를 지니는 문자는 '[]'와 같은 문자이..
[JAVA] 인터페이스(Interface) 다중 상속(multiple inheritance) 자식 클래스가 다양한 부모로부터 클래스를 상속받는 것을 다중 상속이라고 합니다. 그러나 다중 상속을 할 경우 메소드 출처의 모호성 등 여러 가지 문제가 발생할 수 있습니다. 다음은 다중 상속의 문제점에 대한 설명입니다. 화살표가 상속 관계를 나타낼 때, 'ComboDrive'는 'CDBurner'와 'DVDBurner'를 상속하고 있습니다. 상속에 의해서 ComboDrive는 burn() 메소드를 호출할 수 있습니다. 그러나 어떤 부모 클래스의 burn() 메소드를 호출해야 되는지 명확하지 않은 상황입니다. 따라서 자바는 다중 상속을 지원하지 않습니다. 그럼에도 불구하고, 다중 상속은 다양한 동작을 수행할 수 있다는 장점이 있기 때문에 매우 효율적입니다...
[JAVA] 패키지(package), 클래스패스(class path), 접근지시자(Access Modifier) 패키지(package) 패키지는 클래스와 인터페이스들을 하나로 묶는 단위를 말합니다. 서로 관련이 있는 클래스나 인터페이스를 함께 묶어서 파일을 효율적으로 관리하는 것입니다. 더불어, 공동작업을 할 때 서로 작업한 클래스 사이에서 발생할 수 있는 이름 충돌 문제도 패키지를 이용하면 해결할 수 있습니다. 자바에서 패키지는 물리적으로 하나의 디렉터리를 의미합니다. 따라서 하나의 패키지에 속한 클래스나 인터페이스 파일은 모두 해당 패키지 이름의 디렉터리에 포함됩니다. 이런 패키지는 다른 패키지를 포함할 수 있으며, 이때 디렉터리는 점(.)으로 구분되는 계층 구조를 가집니다. 자바에서 기본 클래스들은 java.lang에 있고, 읽기 및 쓰기전용 클래스(입력, 출력)는 java.io에 있습니다. 다음은 가장 많이..
[JAVA] static과 final final 키워드는 static과 함께 사용하는 경우가 있습니다. final은 '최종'의 의미로 더 이상 변경이 불가능하도록 만들고, static은 '정적'이란 의미로 인스턴스 간에 데이터 공유가 필요해서 클래스 멤버로 선언할 때 사용합니다. final 멤버 변수가 반드시 상수는 아닙니다. 즉, 클래스 내/외부로 단 하나의 상수가 아니란 말입니다. 단 하나의 상수란 원주율과 같은 불변의 상수를 말합니다. 이해를 돕기 위해 다음의 예제를 살펴보겠습니다. class Student { final String name; int age; public Student(String name) { this.name = name; this.age = 20; } public void Info() { System.out.pr..
[JAVA] 상속(Inheritance) 상속(Inheritance) '상속'이란 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 말합니다. 상속을 이용하면 기존의 클래스에서 사용하던 필드와 메소드를 그대로 가져와서, 새로운 클래스를 생성할 수 있습니다. 이때 기존의 클래스와 상속받은 클래스를 아래와 같이 부릅니다. 기존의 클래스 부모 클래스(parent class) 상위 클래스(super class) 기초 클래스(base class) 상속받은 클래스 자식 클래스(child class) 하위 클래스(sub class) 파생 클래스(derived class) 상속의 장점은 아래와 같습니다. 기존의 클래스를 재활용할 수 있습니다. 자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스로 정의해 놓으면, 자식 클래스에선 해..
[JAVA] 객체, 클래스, 인스턴스 객체(Object) 객체 지향 프로그래밍(OOP, Object-Oriented Programming)에서는 모든 데이터를 Object로 취급합니다. 객체의 상태(state)와 행동(behavior)을 구체화하는 형태의 프로그래밍이 바로 객체 지향 프로그래밍입니다. 객체란 우리 실생활에 존재하는 사물에 빗대어 설명할 수 있습니다. 이 글에서는 차를 예시로 설명하겠습니다. 차(Object)를 생성하기 위해서 제작된 설계도를 클래스(class)라고 합니다. 클래스(Class) 자바에서 클래스란 객체를 정의하는 설계도라 할 수 있습니다. 클래스는 객체를 생성하는 데에 사용됩니다. 클래스에는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 수행하는 메소드(method)로 구성됩니다. 인스턴스(Instan..