본문 바로가기

자바

[Java] 인스턴스 멤버와 this 인스턴스(instance) 멤버란 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소드를 말하는데, 이들을 각각 인스턴스 필드, 인스턴스 메소드라고 부른다. 우리가 지금까지 작성한 모든 필드와 메소드는 인스턴스 멤버들이었다. 인스턴스 필드와 메소드는 객체에 소속된 멤버이기 때문에 객체 없이는 사용할 수 없다. Car 클래스에 gas 필드와 setSpeed() 메소드가 다음과 같이 선언되어 있다고 가정해보자. public class Car { // 필드 int gas; // 메소드 void setSpeed(int speed) { ... } } gas 필드와 setSpeed() 메소드는 인스턴스 멤버이기 때문에 외부 클래스에서 사용하기 위해서는 우선 Car 객체를 생성하고 참조변수 myCar 또는 yo.. 더보기
[Java] 클래스의 구성 멤버 (2) 메소드 메소드는 객체의 동작에 해당하는 중괄호 { } 블록을 말한다. 중괄호 블록은 이름을 가지고 있는데, 이것이 메소드 이름이다. 메소드를 호출하게 되면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행된다. 메소드는 필드를 읽고 수정하는 역할도 있지만, 다른 객체를 생성해서 다양한 기능을 수행하기도 한다. 메소드는 객체 간의 데이터 전달의 수단으로 사용된다. 외부로부터 매개값을 받을 수도 있고, 실행 후 어떤 값을 리턴할 수도 있다. 메소드 선언 메소드 선언은 선언부(리턴타입, 메소드이름, 매개변수선언)와 실행블록으로 구성된다. 메소드 선언부를 메소드 시그너처(signature)라고도 한다. 리턴 타입 리턴 타입은 메소드가 실행 후 리턴하는 값의 타입을 말한다. 메소드는 리턴값이 있을 수도 있고 없을.. 더보기
[Java] 클래스의 구성 멤버 (1) 클래스에는 객체가 가져야 할 구성 멤버가 선언된다. 구성 멤버에는 필드(Field), 생성자(Constructor), 메소드(Method)가 있다. 이 구성 멤버들은 생략되거나 복수 개가 작성될 수 있다. 필드 필드(Field)는 객체의 고유 데이터, 객체가 가져야 할 부품, 객체의 현재 상태 데이터를 저장하는 곳이다. 자동차 객체를 예로 들어 보면 제작회사, 모델, 색깔, 최고 속도는 고유 데이터에 해당하고, 현재 속도, 엔진 회전 수는 상태 데이터에 해당한다. 그리고 차체, 타이어는 부품에 해당한다. 따라서 자동차 클래스를 설계할 때 이 정보들은 필드로 선언되어야 한다. 필드 선언 필드 선언은 클래스 중괄호 { } 블록 어디서든 존재할 수 있다. 생성자 선언과 메소드 선언의 앞과 뒤 어떤 곳 에서도 .. 더보기
[Java] 클래스 클래스란? 현실에서 객체는 갑자기 하늘에서 떨어지는 것이 아니라, 설계도를 바탕으로 만들어진다. 예를 들어 사람들이 자동차를 이용하기 위해서는 먼저 공장에서 설계도를 보고 자동차를 만들어야 한다. 객체지향 프로그래밍에서도 마찬가지다. 메모리에서 사용하고 싶은 객체가 있다면 우선 설계도로 해당 객체를 만드는 작업이 필요하다. 자바에서는 설계도가 바로 클래스(class)이다. 클래스에는 객체를 생성하기 위한 필드와 메소드가 정의되어 있다. 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(instance)라고 한다. 자동차 객체는 자동차 클래스의 인스턴스인 셈이다. 그리고 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다. 하나의 클래스로부터 여러 개의 인스턴스를 만들 수 있는데, 이것을 동일한 설계도.. 더보기
[Java] 참조 타입 (3) 열거타입 데이터 중에는 몇 가지로 한정된 값만을 갖는 경우가 흔히 있다. 예를 들어 요일에 대한 데이터는 월, 화, 수, 목, 금, 토, 일 이라는 일곱 개의 값만을 갖고, 계절에 대한 데이터는 봄, 여름, 가을, 겨울 이라는 네 개의 값만을 가진다. 이와 같이 한정된 값만을 갖는 데이터 타입이 열거 타입(enumeration type)이다. 열거 타입은 몇 개의 열거 상수 중에서 하나의 상수를 저장하는 데이터 타입이다. 열거 타입 선언 열거 타입을 선언하기 위해서는 먼저 열거 타입의 이름을 정하고 열거 타입 이름으로 소스 파일을 생성해야 한다. 열거 타입 이름은 관례적으로 첫 문자를 대문자로 하고 나머지는 소문자로 구성한다. 만약 여러 단어로 구성된 이름이라면 단어 첫 문자는 대문자로 하는것이 관례이다.. 더보기
[Java] 참조 타입 (2) 배열 타입 배열이란? 변수는 한 개의 데이터만 저장할 수 있다. 따라서 저장해야 할 데이터의 수가 많아지면 그만큼 많은 변수가 필요하다. 예를들어 학생 30명의 성적을 저장하고, 평균값을 구한다고 가정해보다. 먼저 학생 30명의 성적을 저장하기 위해 변수 30개를 선언해야 한다. int score1 = 83; int score2 = 90; int score3 = 87; ... int score30 = 75; 그리고 평점을 구하기 위해 변수들을 모두 더해야한다. int sum = score1; sum += score2; sum += score3; ... sum += score30; int avg = sum / 30; 위와 같은 방법은 매우 비효율적이고 지루한 코딩이 된다. 만약 더 많은 학생들의 성적을 처.. 더보기
[Java] 참조 타입 (1) 데이터 타입 분류 프로그램이 하는 일은 결국 데이터를 처리하는 것 이다. 따라서 데이터를 얼마나 잘 다루느냐가 좋은 프로그램을 작성할 수 있는 관건이 된다. 데이터를 잘 다루기 위해서는 자바에서 지원하는 데이터 타입에 대해서 제대로 이해할 필요가 있다. 자바의 데이터 타입에는 크게 기본 타입(원시 타입)과 참조 타입으로 분류된다. 기본 타입이란 ,정수, 실수, 문자, 논리 리터럴을 저장하는 타입을 말한다. 지금까지 우리는 기본 타입으로 변수를 선언하고 데이터를 저장하는 연습을 했다. 이번 장부터는 참조 타입에 중점을 두려고 한다. 참조 타입이란 객체의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입을 말한다. 기본 타입으로 선언된 변수와 참조 타입으로 선언된 변수의 차이점은 저장되는 값이.. 더보기
[Java] 반복문 반복문은 어떤 작업이 반복적으로 실행되도록 할 때 사용되며, 반복문의 종류로는 for문, while문 do-while문이 있다. for문과 while문은 서로 변환이 가능하기 때문에 반복문을 작성할 때 어느 쪽을 선택해도 좋지만, for문은 반복 횟수를 알고 있을 때 주로 사용하고, while문은 조건에 따라 반복할 때 주로 사용한다. while문과 do-while문의 차이점은 조건을 먼저 검사하느냐, 나중에 검사하느냐일 뿐 동작 방식은 동일하다. 반복문 for문 프로그램을 작성하다 보면 똑같은 실행문을 반복적으로 실행해야 할 경우가 많이 발생한다. 다음 코드를 살펴보자. int sum = 0; sum = sum + 1; sum = sum + 2; sum = sum + 3; sum = sum + 4; s.. 더보기