본문 바로가기
728x90
반응형

Java51

[Java Basic] 15. 클래스 생성자와 초기화블럭 필자가 이전에 클래스에 대한 첫 포스팅을 진행하면서, 신호등에 대한 객체를 정의한 클래스를 예시로 들었다. 신호등 클래스를 선언하면서, 객체의 특성을 나타내는 인스턴스 변수들을 클래스 내에 미리 정의해주었다. 그리고 특성 중 변경이 필요한 내용은, 특성을 정의한 변수를 인스턴스를 통해 직접 변경을 진행해주어야 한다. 그런데, 각 신호등의 색상을 인스턴스화 한 뒤 하나씩 바꿔주려니 코드도 길어진다. 그리고 클래스 내 특성이 수 십 개 정의되어 있고, 이들을 직접 하나하나 코드로 변경해야한다면 인스턴스 변수값 변경 코드만으로도 몇 백 줄은 금방 채울 수 있을 것이다. 클래스로부터 인스턴스 생성 시, 인스턴스 특성 값을 생성과 동시에 지정할 수 있는 방법은 없을까? 또한 필자는 신호등의 인스턴스가 생성되면, .. 2022. 7. 10.
[Java Basic] 14. Java 매서드 오버로딩(Overloading)과 가변인자 Java의 일반적인 매서드는 인자의 입력값을 통해 연산을 진행하여 결과로 돌려준다(물론, 입력, 출력이 없는 매서드도 있다). 지난 포스팅 서두의 메서드 관련 내용을 이해했다면, 이제 이런 질문이 생기는 분들도 있을 것이다. "System.println() 매서드는 인자로 정수형, 실수형, 문자형 심지어 문자열도 들어가는데, 이는 어떻게 구현된 것인가요?" 1. 오버로딩(Overloading) 필자가 매서드에 들어온 정수형 인자를 화면에 출력하는 매서드를 별도로 만든다고 가정해보자. 아마 아래와 같은 형태가 될 것이다. 코드를 보면, print_test 매서드는 인자로 반드시 정수형 타입을 받도록 정의되어 있다. 따라서 123456789라는 숫자는 정상적으로 출력된다. 하지만 저 인자값을 실수로 바꾸면 .. 2022. 7. 6.
[Java Basic] 13. Java 매서드 작성, Java 클래스와 메모리 다른 프로그래밍 언어를 해 보셨던 분들이라면 프로그래밍에서 함수의 역할을 잘 알고 있을 것이다. Java의 클래스 내 매서드는 함수를 조금 다른 이름으로 부르는 명칭인데, 기존의 절차적 프로그래밍의 함수와는 약간의 차이가 있어서 아마 매서드(Method)라는 이름이 붙은것이 아닐까 싶다. 이번 포스팅에서는 매서드, 즉 Java에서의 함수 정의 방법과 필요성에 대해 알아보려 한다. 그리고, 매서드만으로는 이번 포스팅의 내용이 그닥 많지는 않기 때문에, 클래스 선언과 객체 생성 시 메모리에서 일어나는 일에 대해서도 간략하게나마 다루어보려한다. 1. Java 클래스 매서드 매서드는 클래스 내의 함수다. 클래스가 특정 객체의 특성과 행위에 대해 정의된 것이며, 특성은 멤버변수, 행위는 매서드로 정의한다고 이전의.. 2022. 7. 5.
[Java Basic] 12. Java 클래스와 객체 개요 Java는 객체지향 프로그래밍의 한 종류다. 객체 지향이란, 우리 주변에 볼 수 있는 물리적인 또는 추상적인 사물이나 개념의 특성 또는 행동을 파악하고, 이를 하나의 객체(Object)에 정의하는 프로그래밍의 한 방식이라고 필자는 정의한다. 태초에 가장 많이 사용했던 C 언어(지금도 임베디드 등에서 사용하기는 하지만)의 경우, 절차적 프로그래밍이라고 해서 마치 요리 레시피와 같이 위에서 순차적으로 코드를 실행하는 방식이었다. 하지만 절차적 프로그래밍의 경우, 실행하고자 하는 작업에 대해서는 명확히 구현할 수 있었지만, 특정 개체가 특정 행위를 하도록 만들기에는 어려움이 있었다. 가장 단적인 예로, 사람의 경우 이름과 나이, 성별이라는 특성을 가지고 "나이를 먹어간다"는 자연적인 행위를 하는 존재지만, 절.. 2022. 7. 4.
[Java Basic] 11. 입력값 받기 - System.in과 Scanner 클래스 지금까지 Java의 기본적인 내용을 포스팅하면서, 변수를 생성하고 출력하는 부분에 대해서만 예시로 많이 보여주었는데, 사용자를 위해 개발되는 프로그램을 떠올려보면 사용자로부터 값을 입력받아 동작해야하는 부분이 꽤 많다. 예를 들면 프로그램 사용을 위해 로그인을 할 때 ID나 비밀번호를 입력하거나, 프로그램 내에서 키워드를 이용하여 저장된 정보를 조회하거나 변경하는 등의 작업 등등등... 이번 포스팅에서는 Java 프로그램의 기본 사용 마지막 내용인 "키보드로 값 입력 받기"에 대해 알아보려 한다. 1. 프로그램에서 키보드로 값 입력 시 컴퓨터에서 일어나는 일들. 키보드로 값을 입력받는 것은 어떠한 과정을 통해 이루어질까? 필자가 어떠한 프로그램에서 키보드로 'Hello'를 입력하면 입력한 'Hello'라.. 2022. 7. 3.
[Java Basic] 10. 배열 4 - 다차원배열 프로그래밍 단어를 물리적 또는 수학적으로 변환해보자. 변수는 하나의 점과 같고, 연관 변수의 모임인 배열은 변수(점)가 모여 형성된 것이므로 마치 선과 같은 형태를 띈다. 선이 모이면 면이 형성되는데, 프로그래밍에서도 배열(선)이 모이면 마치 면과 유사한 형태의 결과가 출력된다. 이 면과 같은 형태는 프로그래밍에서 다차원 배열이라는 것으로 구현할 수 있다. 이번 포스팅에서는 Java 다차원 배열에 대해 간단히 알아보려 한다. 1. 다차원 배열과 메모리 할당 일반 배열. 즉 일차원 배열의 메모리 형태는 아래와 같이 나타난다. 이러한 배열이 하나 더 추가된다고 가정해보자. 만약 arr과 arr2 배열변수에 대한 연산을 진행하는 작업이 빈번하다고 하면, 이 두 변수를 하나의 배열로 묶어주는 것도 가능할 것이다.. 2022. 7. 2.
[Java Basic] 9. 배열 3 - 문자열 배열과 String 타입 지금까지 Java 배열과 관련된 2 개의 포스팅에서, 필자가 예시로 정수형 배열만 사용했는데, 문자형 타입 역시 배열로 지정할 수 있다. 문자형 배열의 경우 정수형 배열과 차이점이 몇 가지 있는데, 이번 포스팅에서는 Java의 문자열 배열과 이와 관련있는 String 타입에 대해 포스팅을 진행해보려 한다. 1. 문자형 배열 및 String 타입 생성 문자열 배열 역시 정수형 배열과 동일한 방식으로 생성하면 된다. 배열의 생성은 이 포스팅을 참고하자. 다음은 String, 문자열 타입의 생성에 대해 알아보자. String 타입 역시 배열과 마찬가지로 참조형 변수이므로, 변수 생성 시 배열과 유사한 포맷으로 진행하면 된다. 단, 문자열 리터럴 값은 반드시 쌍따옴표로 둘러쌓인 상태로 초기화를 진행해야 한다. .. 2022. 7. 1.
[Java Basic] 8. 배열 2 - 배열 관련 작업 배열은 연관있는 데이터를 묶어놓은 타입이다. 학생들의 시험 과목 점수 등 통계가 필요한 부분에서 많이 사용한다. 따라서 배열을 총합, 평균 구하기와 같이 간단한 산술 뿐만 아니라 데이터의 정렬 등의 작업에 많이 사용한다. 지난 포스팅에서 언급했듯이 배열을 다루기 위해 for문을 많이 사용하는데, 배열마다 자주 사용하는 작업을 매번 코드로 사용하기에는 번거로운 점이 많기 때문에 Java에서는 java.lang 패키지 내의 Array 클래스에 일부 작업을 수행할 메서드를 미리 구성해놓았다. 아직 패키지, 클래스, 메서드에 대한 포스팅을 진행하지 않았으나, 배열 작업을 일일히 코딩하지 않고 할 수 있는 방법이 있다고 우선 알아두면 될 듯 하다. 1. 정수형 배열 총합 구하기 지난 포스팅 마지막 부분에서 필자가.. 2022. 6. 30.
[Java Basic] 7. 배열 1 - 선언, 초기화, 생성, 향상된 for문 프로그래밍 언어에서 배열은 연관성을 가지는 데이터의 묶음이다. 예를 들어 어느 학급 세 학생의 국어, 영어, 수학 성적을 저장하고 출력해야한다고 해보자. 배열이 존재하지 않는 상태라면 아래와 같이 변수 선언을 진행해야 할 것이다. 학생 수와 과목수가 늘어난다면, 출력은 고사하고 점수 입력만으로도 상당한 시간이 소요된다. 또한 각 점수를 저장하는 변수가 메모리의 여기저기에 흩어져 저장되기 때문에 각 학생의 시험 성적 총합과 평균을 구하는 연산에서도 시간이 소요될 수 밖에 없다. 배열을 사용하면, 연관이 있는 데이터들을 조금 더 효율적으로 다룰 수 있다. Python에서 사용하는 List, Tuple, Dictionary 들도 전부 배열로부터 파생된 배열 자료형이라 보면 된다. Python을 사용해보셨던 분.. 2022. 6. 28.
[Java Basic] 6. 루프(Loop)문 - for, while 문 이번 포스팅에서는 Java의 루프문에 대해 알아보려 한다. 루프(Loop)라는 이름에서 알 수 있듯이 이 문법은 대부분의 프로그래밍에서 반복작업을 할 때 사용한다. 가장 유명한 루프문으로는 for문과 while 문이 있다. 프로그래밍 입문 시 구구단 출력 예제에서 골머리를 아프게 만드는 초급 빌런(?) 역할을 하고 있다. 뻘소리 좀 했다. 바로 시작해보자. 1. for 문 이전의 Java 포스팅에서도 계속해서 언급하는 내용이지만, Java는 C언어를 기반으로 만들어진 언어라 C와 유사한 형태를 띈다. 그래서 Python의 for 문에 익숙한 분들이라면 Java의 for 문이 매우 낯설게 느껴질 수 있다. Java에서의 for 문은 아래의 형태로 사용한다. for (통제변수선언; 통제변수에 대한 조건; 통.. 2022. 6. 27.
[Java Basic] 5. 조건식 - if, else, switch 프로그래밍 언어에서 조건 식은 분기가 필요한 부분에서 사용된다. 예를 들어, 프로그램에 정보를 입력하는 사용자의 성별을 '남', '여'로 구분하거나, 입력한 자택 전화번호를 통해 지역번호와 거주하는 행정 구역을 확인하는 등의 작업에서 말이다. 다른 프로그래밍 언어를 접해보았다면 문법적인 차이만 있을 뿐 사용하는데 큰 어려움이 없다. 하지만 처음 프로그래밍을 접하는 분들이라면... 조건식 예제를 많이 작성해보고 작성한 코드가 어떤 논리로 동작하는지 확인하면서 학습하는 것이 좋다. 컴퓨터에 숙달되지 않은 인간의 논리로는 은근히 우리가 원하는대로 컴퓨터를 일 시키기 힘들다. 각설하고.. 조건식에 대해서 알아보자. 1. Java 조건식 분기에 사용되는 문법의 종류 - if문, switch문 Java의 조건식 분.. 2022. 6. 27.
[Java Basic] 4. Java 연산자 프로그래밍에서 사용하는 연산자는 대부분 비슷비슷하다. Java의 경우 C언어로부터 파생된 언어라 최근 각광받는 Python에 비해 옛날에 사용하던 연산자가 조금 더 추가되어 있긴 하지만 원리만 제대로 기억한다면 크게 어려운 내용은 아니다. 이번 포스팅에서는 Java에서 사용하는 연산자의 구분 및 연산자 사용과 관련한 내용에 대해 작성해보려 한다. 1. Java의 연산자 Java의 연산자는 여러 종류로 나뉜다. 연산에 사용하는 피 연산자의 수에 따라 단항, 이항, 삼항 연산자로 분류할 수 있으며, 연산 기호에 따라 산술, 비교, 논리, 대입 연산자로 나뉜다. 2. 피연산자 수에 따른 연산자 종류 (1) 단항 연산자 단항 연산자는 하나의 피연산자에 연산 기호가 붙는 형태를 띈다. 주로 음수 및 양수의 선언 .. 2022. 6. 25.
728x90
반응형