[Java] 배열(Array)과 String 클래스의 사용법
Java 개발에서 배열과 String 클래스는 자주 사용되는 중요한 데이터 구조입니다. 배열은 여러 개의 값을 효율적으로 다룰 수 있도록 도와주고, String 클래스는 문자열을 쉽게 처리할 수 있게 해줍니다. 이 두 가지는 기본적이지만, Java 개발에서 매우 중요한 역할을 하므로 제대로 이해하는 것이 필요합니다. 이 글에서는 배열의 선언과 사용법, 그리고 String 클래스의 다양한 기능들을 살펴보겠습니다
본론: 배열(Array)과 String 클래스의 사용법
1. 배열(Array)의 사용법
배열은 동일한 데이터 타입의 값들을 연속적으로 저장할 수 있는 자료형입니다. 여러 개의 값을 다루기 위해 개별 변수를 많이 선언할 필요 없이 배열 하나로 여러 값을 처리할 수 있습니다. 예를 들어, 학생들의 점수나 과일의 이름을 저장할 때 배열을 사용하면 편리합니다.
배열 선언 및 메모리 할당
배열을 선언하는 방법은 다음과 같습니다:
데이터타입[] 배열명;
int[] num; // int 타입의 배열 num 선언
배열의 메모리 할당(크기 지정)
배열의 크기를 지정하고 메모리를 할당하려면 new 키워드를 사용합니다:
배열명 = new 데이터타입[배열 크기];
num = new int[3]; // 크기가 3인 int 배열 생성
배열을 선언과 동시에 메모리 할당을 할 수도 있습니다:
int[] num = new int[3]; // 선언과 동시에 메모리 할당
배열 초기화
배열의 각 요소는 개별적으로 값을 할당할 수 있습니다. 예를 들어:
num[0] = 10;
num[1] = 20;
num[2] = 30;
배열의 크기 범위는 0부터 배열 크기-1까지입니다. 배열의 범위를 벗어나면 ArrayIndexOutOfBoundsException 오류가 발생할 수 있습니다. 예를 들어, 위의 배열에서 num[3] = 40;은 오류를 일으킵니다.
이차원 배열
이차원 배열은 행과 열로 구성된 배열입니다. 예를 들어, 2행 3열의 배열을 만들 때는 아래와 같이 선언합니다:
int[][] num = new int[2][3];
행 [0,0][0,1][0,2] // 0행
[1,0][1,1][1,2] // 1행
// 0열 1열 2열
이 배열의 각 요소는 2차원 구조로 저장됩니다. 각 행에 대한 인덱스는 0부터 시작하고, 각 열도 0부터 시작합니다.
배열 값 미리 지정하기
배열의 값을 선언 시 바로 지정할 수도 있습니다.
1차원배열
int[] num = new int[5];
num[0] = 10;
num[1] = 20;
num[2] = 30;
num[3] = 40;
num[4] = 50;
int[] num = {10, 20, 30, 40, 50};
2차원배열
int[][] num = new int[2][3];
num[0][0] = 10;
num[0][1] = 20;
...
num[1][2] = 60;
int[][] num = {{10, 20, 30}, {40, 50, 60}};
향상된 for문 사용하기
배열의 요소를 반복적으로 처리할 때는 향상된 for 문을 사용하면 유용합니다. 예를 들어:
for(변수선언 : 배열) {
배열의 요소만큼 반복할 문장;
...
}
String[] args1 = {"김사과", "반하나", "오렌지", "이메론"};
for (String s : args1){
System.out.print(s + " ");
}
int[] args2 = {1, 3, 5, 7, 9};
for (int i : args2) {
System.out.println(i);
}
위의 예시처럼 배열을 간편하게 반복할 수 있습니다.
2. String 클래스의 사용법
String 클래스는 Java에서 문자열을 처리하는 주요 클래스입니다. 문자열을 비교하거나 변환할 때 자주 사용됩니다. 문자열을 다룰 때는 String 클래스의 다양한 메소드를 활용할 수 있습니다.
문자열 선언과 초기화
String 변수는 아래와 같이 선언하고 초기화할 수 있습니다:
변수 선언 및 값 지정
String 변수명 = "문자열";
String str = "apple";
문자열 비교
문자열을 비교할 때는 == 연산자와 equals() 메소드를 사용합니다. ==는 메모리 주소를 비교하고, equals()는 값을 비교합니다.
public class String1 {
public static void main(String[] args) {
String str1 = new String("apple");
String str2 = new String("apple");
String str3 = "apple";
String str4 = "apple";
System.out.println(str1 == str2); // false (주소 비교)
System.out.println(str1.equals(str2)); // true (값 비교)
System.out.println(str3 == str4); // true (리터럴은 같은 객체를 참조)
System.out.println(str3.equals(str4)); // true (값 비교)
}
}
String 클래스의 주요 메소드
- concat(): 문자열을 이어붙이는 메소드입니다.
String str1 = "Hello";
String str2 = "World";
System.out.println(str1.concat(" " + str2)); // 결과: "Hello World"
- indexOf(): 특정 문자의 인덱스를 찾는 메소드입니다. 찾을 수 없으면 -1을 반환합니다.
String str1 = new String("Java");
String str2 = "Programming";
System.out.println(str2.indexOf("p")); // 찾지못함. -1
System.out.println(str2.indexOf("P")); // 0
System.out.println(str2.indexOf('P')); // 0
System.out.println(str2.indexOf("gra")); // 문자열의 시작 인덱스. 3
- trim(): 문자열의 앞뒤 공백을 제거합니다.
String str3 = new String(" 자바 ");
String str3 = new String(" 자바 ");
System.out.println(str3 + "🤤"); // 자바 🤤
System.out.println(str3.trim() + "🍔"); // 자바🍔
- toLowerCase() / toUpperCase(): 문자열을 소문자 또는 대문자로 변환합니다.
String str = "Java";
System.out.println(str.toLowerCase()); // 결과: "java"
System.out.println(str.toUpperCase()); // 결과: "JAVA"
- length(): 문자열의 길이를 반환합니다.
String str = "Programming";
System.out.println(str.length()); // 결과: 11
- substring(): 문자열의 일부를 추출하는 메소드입니다.
String str = "Programming";
System.out.println(str.substring(3)); // 결과: "gramming"
System.out.println(str.substring(3, 6)); // 결과: "gra"
- parseInt(): 문자열을 정수로 변환합니다.
String str = "100";
int number = Integer.parseInt(str);
System.out.println(number + 200); // 300. 문자열을 정수형으로 변환되어서 연산이 일어남.
배열과 String 클래스는 Java에서 자주 사용되는 기본적인 요소들입니다. 배열을 사용하면 여러 개의 데이터를 효율적으로 처리할 수 있고, String 클래스는 문자열을 다룰 때 필요한 기능들을 제공합니다. 배열과 문자열을 적절하게 활용하면 코드의 가독성을 높이고, 프로그램을 더욱 효율적으로 만들 수 있습니다.
Java 개발을 하면서 배열과 문자열을 잘 다루는 능력은 매우 중요하므로, 위에서 설명한 내용을 충분히 익히고 다양한 실습을 통해 연습하는 것이 좋습니다.