지금까지 여러 문자, 즉 문자열을 저장할 때 String 타입의 변수를 사용했다. 사실 문자열이라는 용어는 '문자를 연이어 늘어놓은 것'을 의미하므로 문자배열인 char배열과 같은 뜻이다.
그런데 자바에서는 char배열이 아닌 String클래스를 이용해서 문자열을 처리하는 이유는 String클래스가 char배열에 여러 가지 기능을 추가하여 확장한 것이기 때문이다.
그래서 char배열을 사용하는 것보다 String클래스를 사용하는 것이 문자열을 다루기 더 편리하다.
String 클래스는 char배열에 기능(메서드)를 추가한 것이다.
C언어에서는 문자열을 char배열로 다루지만, 객체지향언어인 자바에서는 char배열과 그에 관련된 기능들을 함께 묶어서 클래스에 정의한다.
char배열과 String클래스의 한 가지 중요한 차이가 있는데, String객체(문자열)는 읽을 수만 있을 뿐 내용을 변경할 수 없다는 것이다.
String str = "Java";
str = str + "8"; // "Java8" 이라는 새로운 문자열이 str에 저장된다.
System.out.println(str); // "Java8"
위의 코드에서 문자열 str의 내용이 변경되는 것 같지만, 문자열은 변경할 수 없으므로 새로운 내용의 문자열이 생성된다.
String 클래스는 상당히 많은 문자열 관련 메서드들을 제공하지만 지금은 가장 기본적인 몇가지만 살펴보고 나머지는 String클래스(심화)라는 이름의 글에서 다룰것이다.
Scanner클래스의 nextLine()외에도 화면을 통해 사용자로부터 값을 입력받을 수 있는 간단한 방법이 있다. 바로 커맨드 라인을 이용한 방법인데, 프로그램을 실행할 때 클래스 이름 뒤에 공백문자로 구분하여 여러 개의 문자열을 프로그램에 전달 할 수 있다.
만일 실행할 프로그램의 main메서드가 담긴 클래스의 이름이 MainTest라고 가정한다면 다음과 같이 실행할 수 있다.
c:\jdk11\work\ch>java MainTest abc 123
커맨드 라인을 통해 입력된 두 문자열은 String배열에 담겨서 MainTest클래스의 psvm메서드의 매개변수(String[] args)에 전달된다.