목록Java (44)
각진 세상에 둥근 춤을 추자
여러 참조 자료형을 사용할 수 있도록 프로그래밍하는 것을 '제네릭(Generic) 프로그래밍'이라고 한다. 제네릭에서는 여러 참조 자료형을 사용해야 하는 부분에 Object가 아닌 'T'와 같이 하나의 문자로 표현한다. 그리고 객체를 생성할 때, T 자리에 구체적인 자료형을 적는다. 즉, Box 클래스 안에 저장되는 구체적인 자료형 대신, T라는 타입 매개 변수로 표시한 것이다. 이렇게 되면 Box로 생성된 객체는 어떤 타입의 데이터든 저장할 수 있다. 제네릭 클래스(generic class)는 타입을 변수로 표시한다. 이것을 타입 매개 변수 (type parameter)라고 하는데 타입 매개 변수는 객체 생성 시에 프로그래머가 결정한다. 3D 프린터 클래스 예제를 통해 제네릭 프로그래밍을 이해해 본다...
자바의 모든 클래스와 인터페이스는 컴파일 되고 나면 class 파일로 생성된다. 예를 들어 a.java 파일이 컴파일 되면 a.class 파일이 생성되고 이 class 파일에는 클래스나 인터페이스에 대한 변수, 메서드, 생성자 등의 정보가 들어 있다. 클래스의 정보를 사용할 경우 클래스가 정확히 어떤 자료형인지 알 필요가 있다. Class 클래스를 선언하고 클래스 정보를 가져오는 방법은 다음과 같이 세 가지가 있다. // 1. Object 클래스의 getClass( ) 메서드 사용하기 String s = new String(); class c = s.getClass(); // 2. 클래스 파일 이름을 Class 변수에 직접 대입하기 Class c = String.Class; // 3. Class.forN..
이차 방정식의 근을 구하는 공식이다. 각 a,b,c의 값을 입력한 후 해당 근의 공식에 대입하여 x의 값을 구한다. package sub06; import java.util.Scanner; public class Test11 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("a값 입력: "); int a = sc.nextInt(); System.out.print("b값 입력: "); int b = sc.nextInt(); System.out.print("c값 입력: "); int c = sc.nextInt(); int x1 = (-b +(int) Math.sqrt(b*b - 4*a..
정수와 같은 기초 자료형을 객체로 포장하고 싶은 경우, 랩퍼 클래스(Wrapper Class)를 사용한다. 랩퍼 클래스는 여러 가지 유용한 메소드를 제공한다. 특히, 저장된 값을 다른 자료형으로 변환하는 메소드를 제공하기도 한다. // 객체를 매개변수로 받는 경우 public void setValue (Integer i) {...} // 반환 값이 객체인 경우 public Integer returnValue() {...} Wrapper 클래스의 종류는 다음과 같다. 기본형 Wrapper 클래스 boolean Boolean byte Byte char Character short Short int Integer long Long float Float double Double 대표적인 Integer 클래스를 ..
1. 문자 → 아스키 코드 package ch11_1; public class ASCTest { public static void main(String[] args) { String str = "ASC#2!"; for (int i=0; i
1. 문자열 → char [ ] String(문자열)을 char[] 로 변환하여 리턴한다. public char [] toCharArray() 예제 package ch11_1; public class toCharArrayTest { public static void main(String[] args) { // 문자열 String str = "ABC"; // 문자열을 char[]로 변환 char [] charArr = str.toCharArray(); // char[] 출력 for ( int i=0; i
String 클래스는 문자열을 구성하는 문자들을 내부에 저장한다. String 안에 저장된 문제에는 0부터 시작하는 번호가 매겨져 있는데 이를 인덱스(index)라고 한다. 자바 API 문서의 String 클래스에는 여러 메소드들이 있다. 자바에서 문자열을 선언하는 방법은 두 가지가 있다. (1) 생성자의 매개변수로 문자열을 생성 (원칙) String str1 = new String("abc"); (2) 문자열 상수를 가리키는 방식 (많이 사용하는 방법) String str2 = "def"; (1) length() 메소드: 문자열이 길이를 반환 // 객체 생성 String s = "Hello World!"; // 12가 반환됨 int size = s.length(); (2) charAt() 메소드: 객체..
java.lang 패키지 자바 프로그램을 구현하기 위해 사용하는 클래스는 java.lang 패키지에 속해 있다. 예를 들면 String 클래스의 전체 이름은 java.lang.String이고, Integer 클래스의 전체 이름은 java.lang.Integer이다. 이와 같이 java.lang 패키지에는 기본적으로 많이 사용하는 클래스들이 포함되어 있다. 자바 프로그래밍에서 외부 패키지에 선언한 클래스를 사용할 때는 import문으로 클래스가 어느 패키지에 속해 있는지 선언해야 한다. java.lang 패키지에는 대표적으로 String 클래스도 속해있다. 하지만 실제 String 클래스를 쓰면서 import java.lnag.String; 이라는 문장을 쓰지 않는다. 왜냐하면 java.lang 패키지는 ..
인터페이스를 사용하면 다형성을 구현하는 확장성 있는 프로그램을 만들 수 있다. 즉 클라이언트 프로그램을 많이 수정하지 않고 기능을 추가하거나 다른 기능을 사용할 수 있다. 이를 이해하는 예제 프로그램을 만들어 본다. [예제 시나리오] 고객 센터에는 전화 상담을 하는 상담원들이 있다. 일단 고객 센터로 전화가 오면 대기열에 저장된다. 상담원이 지정되지 전까지 대기 상태가 된다. 각 전화를 상담원에게 배분하는 정책은 다음과 같이 여러 방식으로 구현할 수 있다. 1. 순서대로 배분하기: 모든 상담원이 동일한 상담 건수를 처리하도록 들어오는 전화 순서대로 상담원에게 하나씩 배분한다. 2. 짧은 대기열 먼저 배분하기: 고객 대기 시간을 줄이기 위해 상담을 하지 않는 상담원이나 가장 짧은 대기열을 보유한 상담원에게..
여러 프로그래머들이 독립적으로 클래스를 작성하고, 이 클래스들을 합쳐서 하나의 소프트웨어를 완성한다고 한다. 이때 클래스들을 연결하려면 클래스 간의 상호작용을 기술하는 일종의 규격이 있어야 한다. 그래야 클래스들이 서로 잘 접속될 수 있다. 이러한 규격을 인터페이스(interface)로 정의한다. 구현 코드가 없는 인터페이스 인터페이스는 클래스 혹은 프로그램이 제공하는 기능을 명시적으로 선언하는 역할을 한다. 즉 추상 메서드와 상수로만 이루어져 있다. 구현 코드가 없기 때문에 당연히 인터페이스로 인스턴스를 생성할 수 없다. 그렇다면 구현 코드가 없는 인터페이스는 어떻게 사용할까? 인터페이스를 만들어 본다. 패키지에서 마우스 오른쪽 버튼 클릭 - New - Interface 클릭 인터페이스 이름은 Cacl..