본문 바로가기

자바 기초

자바 Class 클래스 - Do it! 자바프로그래밍기초 여러 클래스 중 상황에 따라 다른 클래스를 사용해야 할 때, 반환받는 클래스가 정확히 어떤 자료형인자 모를 때 등 모르는 클래스의 정보를 사용할 경우에 사용하는 것이 Class 클래스이다. Class 클래스를 선언하고 클래스 정보를 가져오는 방법은 3가지가 있다. 1. Object 클래스의 getClass() 메서드 사용하기 String s = new String(); Class c = s.getClass(); // getClass() 메서드의 반환형은 Class 2. 클래스 파일 이름을 Class 변수에 직접 대입하기 Class c = String.Class; 3. Class.forName("클래스이름") 메서드 사용하기 Class c = Class.forName("java.lang.String"); .. 더보기
자바 clone() 메서드 - Do it ! 자바프로그래밍기초 clone() 메서드는 객체 원본을 유지해 놓고 복사본을 사용한다거나, 기본 틀의 복사본을 사용해 동일한 인스턴스를 만들어 복잡한 생성 과정을 간단히 하려는 경우에 사용한다. protected Object clone(); clone() 메서드는 위와 같이 Object 클래스에 선언되어 있으며 객체를 복사해 또 다른 객체를 반환해준다. package object; class Point { int x; int y; Point(int x, int y) { this.x = x; this.y = y; } public String toString() { return "x = " + x + ", y = " + y; } } class Circle implements Cloneable { // 객체를 복제해도 된다는 의.. 더보기
자바 hashCode() 메서드 - Do it ! 자바프로그래밍 기초 해시(hash)는 정보를 저장하거나 검색할 때 사용하는 자료구조이다. 정보를 어디에 저장할 것인지, 어디서 가져올 것인지 해시 함수를 사용하여 구현한다. 해시 함수는 객체의 특정 정보(키 값)를 매개변수 값으로 넣으면 그 객체가 저장되어야 할 위치나 저장된 해시 테이블 주소(위치)를 반환한다. 따라서 객체 정보를 알면 해당 객체의 위치를 빠르게 검색할 수 있다. // 자바에서는 인스턴스를 힙 메모리에 생성하여 관리할 때 해시 알고리즘을 사용한다. hashCode = hash(key); // 객체의 해시 코드 값(메모리 위치 값)이 반환됨 package object; class Book { int bookNumber; String bookTitle; Book (int booknum, String title.. 더보기
자바 Object 클래스, toString, equals - Do it! 자바프로그래밍기초 Object 클래스는 모든 자바 클래스의 최상우 클래스이다. 즉 모든 클래스는 Object 클래스로부터 상속을 받는다. 생각해보면 우리가 클래스를 만들 때 extends Object 코드를 작성한 적이 없는데, extends Object가 자동으로 쓰이기 때문이다. Object 메서드는 여러가지가 있는데, 재정의할 수 있는 메서드도 있고 그렇지 않은 메서드도 있다. toString() 메서드 이름처럼 객체 정보를 문자열로 바꾸어 준다. 인스턴스 정보를 문자열로 반환해주고, toString()의 원형은 생성된 인스턴스의 클래스 이름과 주소 값을 보여준다. Object 클래스를 상속받은 모든 클래스는 toString()을 재정의할 수 있고, String이나 Integer 등 여러 JDK 클래스에는 toStr.. 더보기
자바 인터페이스 - Do it! 자바프로그래밍기초 인터페이스는 클래스나 프로그램이 제공하는 기능을 명시적으로 선언하는 역할을 하고, 추상 메서드와 상수로만 이루어져 있다. 인터페이스 역할 인터페이스는 메서드의 선언부만 있는데 왜 사용할까? 인터페이스는 클라이언트 프로그램에 어떤 메서드를 제공하는지 미리 알려주는 명세 또는 약속의 역할을 한다. 예를 들어, AA 인터페이스를 구현한 A 클래스가 있고 이 클래스를 사용하는 B프로그램이 있다고 가정하자. AA 인터페이스에는 구현할 추상 메서드가 모두 선언되어 있고, 어떤 매개변수를 사용하고 어떤 자료형 값이 반환되는지가 선언되어 있을 것이다. 그렇다면 B프로그램에서는 A 클래스의 구현 코드를 모두 살펴보지 않고 AA 인터페이스의 선언부만 봐도 A 클래스를 어떻게 사용할 지 알 수 있는 것이다. 그리고 B 프로.. 더보기
자바 추상클래스 - Do it! 자바프로그래밍기초 '추상클래스'란 '추상메서드'를 포함하는 클래스입니다. 그럼 추상메서드가 뭐냐? 추상메서드는 구현 코드(함수 몸체)가 없는 메서드입니다. 중괄호 {}로 감싼 부분을 함수의 구현부라고 하고, 이 부분이 없는 함수를 추상함수라고 합니다. 그리고 이 추상함수를 포함하는 클래스를 추상클래스라고 합니다. public abstract int add(int x, int y); 위 코드처럼 선언만 하며, abstract 예약어를 사용합니다. public abstract class Computer { public abstract void display(); public abstract void typing(); public void turnOn() { System.out.println("전원을 켭니다."); } publ.. 더보기
자바 메서드 오버라이딩, 클래스 형 변환 - Do it ! 자바프로그래밍기초 상위클래스에서 정의한 메서드가 하위 클래스에서 구현할 내용과 맞지 않을 경우에 하위클래스에서 이 메서드를 재정의할 수 있다. 즉. 하위 클래스에서 매서드를 재정의하는 것을 '메서드 오버라이딩'이라고 한다. 오버라이딩 조건 : 반환형, 메서드 이름, 매개변수 개수, 매개변수 자료형이 반드시 같아야한다. public class Customer { ... int bonusPoint; double bonusRaio; ... public int calcPrice(int Price) { bonusPoint += price * bonusRatio; return price; } ... } public class VIPCustomer extends Customer { ... double saleRatio; ... pub.. 더보기
자바 ArrayList - Do it! 자바프로그래밍기초 자바는 객체 배열을 좀 더 쉽게 사용할 수 있도록 객체 배열 클래스 ArrayList를 제공한다. ArrayList 클래스는 객체 배열을 관리할 수 있는 멤버 변수와 메서드를 제공하는데 사용법을 알아두면 편리하게 사용할 수 있다. 주요 메서드로는 boolean add(E e) : 요소 하나를 배열에 추가한다. E는 요소의 자료형을 의미 int size() : 배열에 추가된 요소 전체 개수를 반환 E get(int index) : 배열의 index 위치에 있는 요소 값을 반환한다. E remove(int index) : 배열의 index 위치에 있는 요소 값을 제거하고 그 값을 반환한다. boolean isEmpty() : 배열이 비어있는지 확인한다. ArrayList는 java.util 패키지에 구현되어.. 더보기