toString() toString()은 Object 클래스로부터 오버라이딩 해서 사용된다. 일정한 형태의 반환값을 제시할 수 있다. 여러 가지 데이터 타입을 섞을 수도 있다. 카드의 종류와 숫자를 구현하는 간단한 예시를 보자. class Card { String kind; // 종류 int number; // 숫자 Card(String kind, int number){ this.kind = kind; this.number = number; } // 인스턴스 변수 값 초기화 생성자 } 인스턴스 변수 kind와 number를 선언하고 이를 초기화 하는 생성자를 만들었다. 이제 메인 메서드를 통해 Card 클래스의 객체를 생성하고 값을 출력 한다. class CardToString { public stati..
자바 개발 툴인 JDK에는 기본적으로 제공되는 모듈(Module)들이 있다. 프로그래밍에서 모듈이란 프로그램을 구성하는 단위 구성요소다. 일종의 부품이랄까. 보통 클래스와 라이브러리로 구성된다. 기본으로 제공하는 기능이 있으면 감사히 쓰면 된다. 그중 활용도가 높은 메서드인 equals(Object obj)를 정리한다. Class Object의 존재 자바에는 상속이라는 개념이 있다. 클래스 간 상속을 통해 구성 요소나 기능을 받아오는 개념이다. B라는 이름의 클래스가 A 클래스를 상속받는 걸 class B extends A {} // B 클래스가 A 클래스를 상속받음 이렇게 표현한다. 그런데 프로젝트 내에 존재하는 모든 클래스의 조상이 되는 클래스가 있다. Object 클래스다. Object 클래스는 따..
자바에서 서로 다른 데이터 타입 간 표현이나 연산을 위해 데이터의 타입을 바꿔야 하는 경우가 있다. 데이터의 타입을 바꾸는 걸 형변환이라고 한다. 기본형 형변환 : int String 기본형 타입 간 형변환 중 int와 String 간의 형변환이 자주 사용된다. int -> String 자바에서는 서로 다른 데이터 타입 데이터가 연산되면 크기가 더 작은 데이터 타입이 큰쪽의 데이터 타입으로 자동 변환된다. String(12 byte)은 int(4 byte) 보다 크다. 이런 특성을 감안해 연산자를 사용하면 간단하게 형변환 가능하다. Ex) String s = 100 + ""; // 100은 "100"으로 변환 String -> int 이 경우 자바가 기본적으로 제공하는 Integer 클래스의 parseI..
다형성(polymorphism) 다형성은 자바 개발에서 상당히 많이 활용되는 문법이다. 상속과 관련이 깊다. 여러 가지 형태를 가질 수 있는 능력 이라고 정의된다. 이렇게 보면 좀 추상적인데, 실제 코드 작성에서 사용되는 개념에 비추어 정확히 표현하면 조상 클래스의 참조 변수로 자손 클래스의 객체를 다룰 수 있는 특징 이다. Ex) class Tv { boolean power; // 전원 int channel; // 채널 void power(){power = !power;} // 전원 on/off void channelUp(){++channel;} // 채널 올리기 void channelDown(){--channel;} // 채널 내리기 } class SubtitleTv extends Tv { // Tv..
클래스에 멤버 변수를 선언할 때 다른 클래스에서 접근할 수 없도록 private 접근 제어자를 활용한다. 그럼에도 다른 클래스는 해당 클래스의 멤버 변수를 참조할 수 있다. getter와 setter를 통해서다. private을 통한 정보은닉 접근 제어자를 private으로 선언하면 같은 클래스끼리만 접근이 가능하다. 캡슐화라고도 부르는데, 요는 다른 클래스에서 접근하지 못하게 하기 위해서다. 다른 클래스와의 접근은 public 접근 제어자 형태의 getter, setter메서드가 담당한다. getter와 setter는 반드시 정해진 형식대로 작성해야 한다. public void set변수명(타입 변수) { this.변수 = 변수; } // setter 형식 public 타입 get변수명() { retu..
현재 시간을 출력하기 위해서는 Date() 메서드를 활용하면 된다. Date() 는 자바가 기본적으로 제공하는 메서드다. java.util.Date를 import해 사용할 수 있다. import java.util.Date; public class DateTest { public static void main(String[] args) { Date d = new Date(); // 실행한 날짜와 시간을 가지고 있는 객체 생성 System.out.println(d); } } 출력값 Fri May 07 21:51:30 KST 2021 이런 형식은 보기가 좀 어색할 수 있다. 평소 보는 형식으로 출력하기 위해 SimpleDateFormat()을 활용한다. 이를 위해 java.text.SimpleDateForma..
상속 자바에서 상속은 기존의 클래스를 재사용하기 위해 사용된다. class A { int x; int y; } class B extends A { // B클래스가 A클래스를 상속받음 int z; } A 클래스를 상속받은 B 클래스는 선언한 z와 함께 x, y를 사용할 수 있다. A를 조상 클래스, B는 자손 클래스라고 부른다. 오버라이딩 상속과 함께 따라오는 개념이 오버라이딩이다. 오버라이딩은 덮어 씌운다는 뜻인데, 자바에서 상속받은 메서드의 내용을 변경하는 걸 말한다. class Point { int x; int y; String getLocation() { return x + y; } } class Point3D extends Point { int z; String getLocation() { ret..
자바에서 생성자를 선언할 때 해당 클래스에서 선언한 인스턴스 변수들을 초기화해준다. Ex) Car 클래스에 model, color, year, speed의 인스턴스 변수를 선언한 경우 이처럼 생성자에서 받는 데이터 값을 this.인스턴스 변수에 넣어주는 방식으로 초기화 작업을 진행한다. 생성자가 선언한 변수명과 인스턴스 변수명이 다르면 참조변수 this를 사용하지 않아도 되지만 이름이 동일한 경우에 구분을 위해 사용한다. this.model은 파란색으로 model은 연한 황색(?)으로 표현되고 있다. this 뒤에 오는 변수는 해당 클래스에서 선언한 인스턴스 변수라는 것을 알 수 있다. 인스턴스 변수 초기화 작업은 직접 손으로 코딩을 해도 상관없지만 이클립스는 편리한 자동화 기능을 제공한다. 화면 우클릭..
자바는 여러 클래스를 만들 수 있고 각 클래스에 선언된 변수를 다른 클래스에서 사용할 수 있다. 우선 용어의 정의부터 명확히 해야 혼동을 막을 수 있다. 자바에선 객체를 생성하는 행위를 설명할 때 객체, 변수, 인스턴스, 클래스 등 묘하게 비슷한 뉘앙스를 풍기는 단어를 섞어서 사용하기 때문이다. 변수는 값을 저장할 수 있는 공간이다. 예를 들어 int a = 1; a는 메모리에 1이라는 값을 넣는 그릇. 변수다. 비교적 일반적이고 포괄적인 의미라고 볼 수 있다. 객체(object)는 객체지향 프로그래밍에서 사용되는 개념이다. 어떤 대상이나 개념을 하나의 단위로 묶어내는 걸 말한다. 속성과 기능으로 이루어진다. 예를 들어 자동차는 모델, 연식, 색상, 속도 등의 속성을 가지고 있다. 속력을 높이고 줄이는 ..
main 메서드는 자바(Java)로 구현된 프로그램이 시작될 때 가장 먼저 실행되는 메서드다. public static void main(String[] args){ } 메서드라는 개념이 그리 쉬운 내용이 아님에도 자바에 입문한 초보자가 "Hello World"를 출력하기 위해 가장 먼저 마주치는 코드이기도 하다. 코드에 담긴 의미를 모르고 사용하지만 초보자도 메서드 문법을 공부하다보면 메인 메서드의 의미를 알게된다. 왜 이름이 메인 메서드일까. 메서드란 기능을 수행하는 함수들의 모음이다. 메서드명() 방식으로 표현한다. 때문에 main(String[] args)은 main이라는 이름의 메서드, 메인 메서드로 불리는 것이다. 맨 앞에서부터 보면 public은 접근제어자를 의미한다. 접근 제어자란 변수, ..