본문 바로가기

Programming42

JAVA 클래스 멤버 알가가기 필드의 구분 클래스의 필드(field)란 클래스에 포함된 변수(variable)를 의미합니다. 클래스 내에서 필드는 선언된 위치에 따라 다음과 같이 구분됩니다. 1. 클래스 변수(static variable) 2. 인스턴스 변수(instance variable) 3. 지역 변수(local variable) 예제 class Car { static int modelOutput; // 클래스 변수 String modelName; // 인스턴스 변수 void method() { int something = 10; // 지역 변수 } } 클래스 변수와 인스턴스 변수는 초기화를 하지 않아도 변수의 타입에 맞게 자동으로 초기화될 것입니다. 하지만 지역 변수는 사용하기 전에 초기화하지 않으면, 자바 컴파일러가 오류를 .. 2022. 2. 15.
JAVA 제어자 알아가기 패키지(package) 자바에서 패키지(package)란 클래스와 인터페이스의 집합을 의미합니다. 이렇게 서로 관련이 있는 클래스나 인터페이스를 함께 묶음으로써 파일을 효율적으로 관리할 수 있게 됩니다. 또한, 협업 시 서로 작업한 클래스 사이에서 발생할 수 있는 이름 충돌 문제까지도 패키지를 이용하면 피할 수 있습니다. 자바에서 패키지는 물리적으로 하나의 디렉터리를 의미합니다. 따라서 하나의 패키지에 속한 클래스나 인터페이스 파일은 모두 해당 패키지 이름의 디렉터리에 포함되어 있습니다. 이러한 패키지는 다른 패키지를 포함할 수 있으며, 이때 디렉터리의 계층 구조는 점(.)으로 구분됩니다. 다음 예제는 자바에서 가장 많이 사용되는 패키지 중 하나인 String 클래스의 패키지 이름입니다. 예제 java... 2022. 2. 15.
JAVA 메소드와 생성자 알아가기2 메소드 시그니처(method signature) 메소드 오버로딩의 핵심은 바로 메소드 시그니처(method signature)에 있습니다. 메소드 시그니처란 메소드의 선언부에 명시되는 매개변수의 리스트를 가리킵니다. 만약 두 메소드가 매개변수의 개수와 타입, 그 순서까지 모두 같다면, 이 두 메소드의 시그니처는 같다고 할 수 있습니다. 메소드 오버로딩(method overloading) 메소드 오버로딩(overloading)이란 같은 이름의 메소드를 중복하여 정의하는 것을 의미합니다. 자바에서는 원래 한 클래스 내에 같은 이름의 메소드를 둘 이상 가질 수 없습니다. 하지만 매개변수의 개수나 타입을 다르게 하면, 하나의 이름으로 메소드를 작성할 수 있습니다. 즉, 메소드 오버로딩은 서로 다른 시그니처를 갖.. 2022. 2. 15.
JAVA 메소드와 생성자 알아가기 1 메소드(method) 자바에서 클래스는 멤버(member)로 속성을 표현하는 필드(field)와 기능을 표현하는 메소드(method)를 가집니다. 그중에서 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있습니다. 메소드의 사용 목적 클래스에서 메소드를 작성하여 사용하는 이유는 중복되는 코드의 반복적인 프로그래밍을 피할 수 있기 때문입니다. 또한, 모듈화로 인해 코드의 가독성도 좋아집니다. 그리고 프로그램에 문제가 발생하거나 기능의 변경이 필요할 때도 손쉽게 유지보수를 할 수 있게 됩니다. ※ 메소드를 작성할 때는 되도록 하나의 메소드가 하나의 기능만을 수행하도록 작성하는 것이 좋습니다. 메소드 정의 클래스에서 메소드를 정의하는 방법은 일반 함수를 정의하는 방법과 크게 .. 2022. 2. 15.
JAVA 클래스 알아가기 객체 지향 프로그래밍(OOP, Object-Oriented Programming) 객체 지향 프로그래밍에서는 모든 데이터를 객체(object)로 취급하며, 이러한 객체가 바로 프로그래밍의 중심이 됩니다. 객체(object)란 간단히 이야기하자면 실생활에서 우리가 인식할 수 있는 사물로 설명할 수 있습니다. 이러한 객체의 상태(state)와 행동(behavior)을 구체화하는 형태의 프로그래밍이 바로 객체 지향 프로그래밍입니다. 이때 객체를 만들어 내기 위한 설계도와 같은 개념을 클래스(class)라고 합니다. 클래스(class) 자바에서 클래스(class)란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용됩니다. 자바에서는 이러한 설계도인 클래스를 가지고, 여러 객체를 생성하여 사용하게 됩니다. 클래.. 2022. 2. 15.
JAVA 배열 알아가기2 다차원 배열(multi-dimensional array) 다차원 배열이란 2차원 이상의 배열을 의미하며, 배열 요소로 또 다른 배열을 가지는 배열을 의미합니다. 즉, 2차원 배열은 배열 요소로 1차원 배열을 가지는 배열이며, 3차원 배열은 배열 요소로 2차원 배열을 가지는 배열이고, 4차원 배열은 배열 요소로 3차원 배열을 가지는 배열인 것입니다. 2차원 배열(two dimensional array) 2차원 배열이란 배열의 요소로 1차원 배열을 가지는 배열입니다. 자바에서는 2차원 배열을 나타내는 타입을 따로 제공하지 않습니다. 대신에 1차원 배열의 배열 요소로 또 다른 1차원 배열을 사용하여 2차원 배열을 나타낼 수 있습니다. 따라서 자바에서 2차원 배열은 다음과 같은 문법으로 선언할 수 있습니다. 문.. 2022. 2. 14.
JAVA 배열 알아가기 1 메모리 구조 모든 자바 프로그램은 자바 가상 머신(JVM)을 통해서 실행됩니다. 자바 프로그램이 실행되면, JVM은 운영 체제로부터 해당 프로그램을 수행할 수 있도록 필요한 메모리를 할당받습니다. 이렇게 할당받은 메모리를 JVM은 용도에 따라 다음과 같이 구분하여 관리합니다. 메소드(method) 영역 메소드(method) 영역은 자바 프로그램에서 사용되는 클래스에 대한 정보와 함께 클래스 변수(static variable)가 저장되는 영역입니다. JVM은 자바 프로그램에서 특정 클래스가 사용되면 해당 클래스의 클래스 파일(*.class)를 읽어들여, 해당 클래스에 대한 정보를 메소드 영역에 저장합니다. 힙(heap) 영역 힙(heap) 영역은 자바 프로그램에서 사용되는 모든 인스턴스 변수가 저장되는 영.. 2022. 2. 14.
JAVA 제어문 알아가기 제어문(control flow statements) 자바 프로그램이 원하는 결과를 얻기 위해서는 프로그램의 순차적인 흐름을 제어해야만 할 경우가 생깁니다. 이때 사용하는 명령문을 제어문이라고 하며, 이러한 제어문에는 조건문, 반복문 등이 있습니다. 이러한 제어문에 속하는 명령문들은 중괄호({})로 둘러싸여 있으며, 이러한 중괄호 영역을 블록(block)이라고 합니다. 조건문(conditional statements) 조건문은 주어진 조건식의 결과에 따라 별도의 명령을 수행하도록 제어하는 명령문입니다. 조건문 중에서도 가장 기본이 되는 명령문은 바로 if 문입니다. 자바에서 사용하는 대표적인 조건문의 형태는 다음과 같습니다. 1. if 문 2. if / else 문 3. if / else if / else.. 2022. 2. 14.
JAVA 타입 알아가기 변수(variable) 변수(variable)란 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미합니다. 즉, 변수란 데이터(data)를 저장할 수 있는 메모리 공간을 의미하며, 이렇게 저장된 값은 변경될 수 있습니다. 변수의 이름 생성 규칙 자바에서는 변수뿐만 아니라 클래스, 메소드 등의 이름을 짓는데 반드시 지켜야 하는 공통된 규칙이 있습니다. 자바에서 이름을 생성할 때에 반드시 지켜야 하는 규칙은 다음과 같습니다. 1. 변수의 이름은 영문자(대소문자), 숫자, 언더스코어(_), 달러($)로만 구성할 수 있습니다. 2. 변수의 이름은 숫자로 시작할 수 없습니다. 3. 변수의 이름 사이에는 공백을 포함할 수 없습니다. 4. 변수의 이름으로 자바에서 미리 정의된 키워드.. 2022. 2. 14.
모르는 용어 정리 임베디드(embedded) - 전자 기기가 자동으로 기능을 수행할 수 있게 만든 내장형 칩 연산자 오버로딩 - 기본 자료형에 있는 연산자를 다시 정의(ex: +,-,*,/,등) 제네릭 프로그래밍 - 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식, 제네릭 프로그래밍은 여러가지 유용한 스포트웨어 컴포넌트들을 체계적으로 융합하는 방법을 연구하는 것으로 그 목적은 알고리즘, 데이터 구조, 메모리 할당 메커니즘, 그리고 기타 여러 소프트웨어적인 장치들을 발전시켜 이들의 재사용성, 모듈화, 사용 편이성을 보다 높은 수준으로 끌어올리고자 하는 것이다. 클래스(JAVA) - 유사한 특징을 지닌 객체들의 속성을 묶어 놓은 .. 2022. 2. 13.