복소수(Complex Number)는 실수부(real part)와 허수부(imaginary part)를 함께 가지는 수입니다. 복소수는 일반적인 숫자처럼 더하기, 빼기, 곱하기, 나누기를 할 수 있으며, 이때 각각의 실수부끼리, 허수부끼리 독립적으로 연산이 수행됩니다.
예를 들어 두 복소수를 더할 때는 첫 번째 수의 실수부와 두 번째 수의 실수부를 더하고, 허수부도 마찬가지 방식으로 서로 더하면 됩니다.
자바 코드 예제
아래 예제에서는 자바 클래스를 활용해 복소수를 표현하고, 두 복소수의 덧셈을 구현합니다.
public class Demo{
double my_real;
double my_imag;
public Demo(double my_real, double my_imag){
this.my_real = my_real;
this.my_imag = my_imag;
}
public static void main(String[] args){
Demo n1 = new Demo(76.8, 24.0),
n2 = new Demo(65.9, 11.23),
temp;
temp = add(n1, n2);
System.out.printf("The sum of two complex numbers is %.1f + %.1fi", temp.my_real,
temp.my_imag);
}
public static Demo add(Demo n1, Demo n2){
Demo temp = new Demo(0.0, 0.0);
temp.my_real = n1.my_real + n2.my_real;
temp.my_imag = n1.my_imag + n2.my_imag;
return(temp);
}
}실행 결과
The sum of two complex numbers is 142.7 + 35.2i
코드 동작 원리
Demo 클래스 정의: Demo라는 이름의 클래스에는 double 타입의 필드 두 개인 my_real(실수부)과 my_imag(허수부)가 선언되어 있습니다. 생성자는 이 두 값을 매개변수로 받아 객체를 초기화합니다.
덧셈 메서드(add): add 메서드는 두 개의 Demo 객체를 매개변수로 받습니다. 메서드 내부에서 임시(temp) 객체를 새로 생성한 뒤, 첫 번째 객체와 두 번째 객체의 실수부를 서로 더해 임시 객체의 실수부에 저장하고, 허수부 역시 같은 방식으로 더해 저장합니다. 최종적으로 이 임시 객체가 반환됩니다.
main 메서드: main 함수 안에서는 Demo 클래스의 인스턴스 두 개(n1, n2)를 각각 생성합니다. 그다음 add 함수를 호출하여 두 복소수의 합을 구하고, 그 결과를 main 함수 내에서 생성된 임시 객체에 할당합니다.
결과 출력: 마지막으로 System.out.printf를 사용하여 계산된 결과를 콘솔에 출력합니다. 출력 형식은 "%.1f + %.1fi"로 지정되어 소수점 첫째 자리까지 표시되며, 허수부 뒤에는 'i'가 붙어 복소수 형태로 나타납니다.
마무리
이처럼 자바에서는 별도의 내장 복소수 타입이 없더라도, 클래스와 객체를 활용하면 복소수를 손쉽게 표현하고 사칙연산을 구현할 수 있습니다. 위 예제의 add 메서드를 확장하면 뺄셈(subtract), 곱셈(multiply) 등 다른 연산도 유사한 방식으로 추가할 수 있습니다. 복소수 연산은 신호 처리, 전기 공학, 과학 계산 분야에서 널리 활용되므로, 객체지향 프로그래밍 연습 겸으로 직접 구현해 보는 것도 좋은 학습 방법입니다.