본문 바로가기
Framwork/Java기초

Chapter 5. 배열과 문자열

by 김엉배 2022. 10. 23.
728x90
반응형

1. 1차원 배열

 

  •  배열 선언 및 생성
자료형[] 배열명 = new 자료형[배열의 크기];
또는
자료형 배열명[] = new 자료형[배열의 크기];
int[] score; //배열명을 score를 선언한다. int score[]라고 해도 된다.
score = new int[5] // 배열 score 공갼 5개를 실제로 만든다.

 

  • 배열 초기화
int[] score = {90, 85, 92, 75, 88};
int[] score = new int[]{90, 85, 92, 75, 88};
잘못된 초기화
int[] scroe;
socre = {90, 85, 92, 75, 88}; //에러

올바른 초기화
int[] score;
score = new int[] {90, 85, 92, 75, 88};

 

  • 배열 출력하기
public class Code_64 {
	public static void main(String[] args)
	{
		int[] score = {90, 85, 92, 75, 88};
		for (int i = 0; i < score.length; i++)
			System.out.println("score[" + i + "] = " + score[i]);
	}

}

//결과값
score[0] = 90
score[1] = 85
score[2] = 92
score[3] = 75
score[4] = 88

- score.length는 배열 score의 크기를 말한다. 즉 배열. length라고 하면, 배열의 길이를 알려준다.

 

import java.util.Arrays;

public class Code_65 {
	public static void main(String[ ] args) {
		int[ ] score = {90, 88, 95, 82, 75, 100, 85};
		System.out.println(Arrays.toString(score));
	}

}
//결과값
[90, 88, 95, 82, 75, 100, 85]

- import.java.util.Arrays;를 추가하면 Array.toString() 메소드를 수행하며, 이 메소드를 수행하면 루프를 이용하지 않고 배열을 통째로 출력할 수 있다.

 

 

  • 한 줄에 배열 여러 개 선언하기
int[] data;
int data[];

- 배열을 선언할 때 배열 기호[]를 배열명 앞에 붙이거나 뒤에 붙이거나 같은 표현이다.

//data1, data2, data3 모두 정수 배열로 선언한다.
int[] data1, data2, data3;

int[] data1;
int[] data2;
int[] data3;
//data1만 배열로 선언하고, data2와 data3은 정수가 된다.

int data1[], data2, data3;

int[] data1;
int data2;
int data3;

 

  • 배열의 참조값 이해하기
public class Code_66 {
	public static void main(String[ ] args)
	{
		int[] score = new int[5];
		System.out.println(score);
		double[] data = new double[7];
		System.out.println(data);
	}

}
//결과값
[I@757942a1
[D@66d1af89

- 출력문에 배열명을 넣었을 때 나오는 값을 참조값이라고 한다.

- 출력된 결과에 [I는 정수 배열이라는 의미고, [D는 double 자료형 배열임을 알려준다.

 

  • 배열 복사하기
import java.util.Arrays;

public class Code_67 {
	public static void main(String[] args) {
		int[] original = {4, 2, 9, 7, 10, 3};
		int[] destination = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
		System.arraycopy(original, 2, destination, 4, 3);
		System.out.println(Arrays.toString(original)); // original 배열 출력
		System.out.println(Arrays.toString(destination)); // destination 배열 출력
	}

}
//결과값
[4, 2, 9, 7, 10, 3]
[0, 1, 2, 3, 9, 7, 10, 7, 8, 9]

- System.arraycopy()를 이용하면 하나의 배열에서 다른 배열로 간단하게 복사할 수 있다.

 

  • 배열에 배열 대입하기
public class Code_68 {
	public static void main(String[] args)
	{
		int data1[ ] = {4, 2, 9, 10, 1};
		int data2[ ];
		data2 = data1;
		System.out.println("data1 : " + data1);
		System.out.println("data2 : " + data2);
	}

}
//결과값
data1 : [I@757942a1
data2 : [I@757942a1

- 결과를 보면 data1과 data2가 같은 참조값을 갖는 것을 볼 수 있다.

import java.util.Arrays;

public class Code_69 {
	public static void main(String[] args)
	{
		int data1[ ] = {4, 2, 9, 10, 1};
		int data2[ ];
		data2 = data1; // 하나의 배열을 공유한다.
		data1[2] = 5000;
		System.out.println("data1 : " + Arrays.toString(data1));
		System.out.println("data2 : " + Arrays.toString(data2));
	}

}
//결과값
data1 : [4, 2, 5000, 10, 1]
data2 : [4, 2, 5000, 10, 1]

- data1을 수정하면 data2가 같이 수정되는 결과를 볼 수 있다.

 

2. 다차원 배열

 

  • 2차원 배열
자료형[][] 배열명 = new 자료형[행 크기][열 크기]
public class Code_70 {
	public static void main(String[] args)
	{
		int[][] data = {{3, 1, 7, 8},
				{9, 2, 2, 5},
				{1, 3, 5, 7}};
		for (int i = 0; i < 3 ; i++) {
			for (int j = 0; j < 4 ; j ++) {
				System.out.print(data[i][j] + " ");
			}
			System.out.println();
		}
	}

}
//결과값
3 1 7 8 
9 2 2 5 
1 3 5 7
  • 가변 배열
public class Code_71 {
	public static void main(String[] args)
	{
		int data[ ][ ] = new int[3][ ];
		data[0] = new int[4];
		data[1] = new int[5];
		data[2] = new int[3];
		for (int i = 0; i < data.length; i++) {
			for (int j = 0; j < data[i].length; j++)
				System.out.print(data[i][j] + " ");
			System.out.println( );
		}
	}

}
//결과값
0 0 0 0 
0 0 0 0 0 
0 0 0

- 다차원 배열에는 불규칙적인 배열 형태가 있다.

3.  for-each 스타일 반복문

for(자료형 변수 : 변수) {
  반복 처리할 문장
}
public class Code_72 {
	public static void main(String[] args)
	{
		int data[ ] = {4, 2, 9, 10, 1};
		for (int x : data) {
			System.out.println(x);
		}
	}
}
//결과값
4
2
9
10
1
public class Code_73 {
	public static void main(String[] args)
	{
		double[ ] score = {90.5, 88.3, 70.8, 67.2, 92.4, 80.7};
		double total = 0.0;
		double average;
		for (double s : score)
			total += s;
		average = total / score.length;
		System.out.println("average : " + average);
	}

}
//결과값
average : 81.65
public class Code_74 {
	public static void main(String[] args)
	{
		char alpha[ ] = {'A', 'B', 'C', 'D', 'E'};
		for (char x : alpha) {
			System.out.println(x + ":" + (char)(x + 32));
		}
	}

}
//결과값
A:a
B:b
C:c
D:d
E:e
public class Code_75 {
	public static void main(String[] args)
	{
		int numbers[ ][ ] = {{10, 30, 20, 15},
				{11, 5, 2, 9},
				{7, 8, 1, 13}};
		for (int[ ] num : numbers) {
			for (int x : num)
				System.out.print(x + " ");
			System.out.println( );
		}
	}

}
//결과값
10 30 20 15 
11 5 2 9 
7 8 1 13

- 2차원 배열에 대한 for-each 반복문은 다음과 같이 적을 수 있다.

 

 

4.  문자열(String)

public class Code_76 {
	public static void main(String[] args)
	{
		String s1 = "hello";
		String s2 = new String("world");
		System.out.println(s1);
		System.out.println(s2);
	}

}
//결과값
hello
world
public class Code_77 {
	public static void main(String[] args)
	{
		String s1 = new String("hello");
		String s2 = new String("hello");
		if (s1 == s2)
			System.out.println("same");
		else
			System.out.println("different");
	}

}
//결과값
different

-  문자열을 비교할 때 '==' 기호를 사용하지 말고 반드시 equals()를 사용해야 한다.

public class Code_78 {
	public static void main(String[] args)
	{
		String s1 = new String("hello");
		String s2 = new String("hello");
		if (s1.equals(s2))
			System.out.println("same");
		else
			System.out.println("different");
	}

}
//결과값
same

- 문자열의 길이를 알고 싶을 때는 문자열. length()를 이용한다.

public class Code_79 {
	public static void main(String[] args)
	{
		String name = "Alice";
		String emptyString = "";
		String space = " ";
		System.out.println(name.length( ));
		System.out.println(emptyString.length( ));
		System.out.println(space.length( ));
	}

}
//결과값
5
0
1

- 문자열들을 연결하려면 '+' 기호를 사용한다.

public class Code_80 {
	public static void main(String[] args)
	{
		String s1 = "Hello";
		String s2 = "World";
		String str1;
		str1 = s1 + s2;
		System.out.println(str1);
		String str2;
		str2 = s1 + " " + s2;
		System.out.println(str2);
	}

}
//결과값
HelloWorld
Hello World
728x90
반응형

'Framwork > Java기초' 카테고리의 다른 글

Chapter 7. 클래스와 객체(1)  (0) 2022.10.30
Chapter 6. 메소드  (0) 2022.10.26
Chapter 4. 조건문과 반복문  (0) 2022.10.09
Chapter 3. 계산을 위한 연산자  (0) 2022.10.04
Chapter 2. 변수, 자료형, 주석  (1) 2022.09.24