※ 배열 수식을 표현하는 두 가지 방식 : int[ ] a = new int[10]; int a[ ] = new int[10]; (이때 a는 변수. 후자는 헷갈리니까 전자 방식 추천)
package basic;
public class arr_sample {
public static void main(String[] args) {
int[] score;
score = new int[3];
score[0] = 80;
score[1] = 60;
score[2] = 40;
// score[4] = 20; --> 자바스크립트에서 하듯이 이렇게 지정된 범위 밖 변수를 넣으면 에러가 뜸
int sum = 0; // 지역변수는 반드시 초기화
for(int i=0; i<= 2; i++) {
sum += score[i];
}
System.out.println(sum);
}
}
※ 배열과 생성
배열의 개념
배열 선언 : int intArray [ ]; or int [] intArray;
int intArray [ ]; (배열 타입)(배열에 대한 레퍼런스 변수) (배열선언)
배열 생성 : intArray = new int[10]; ===> new 해야 생성 (그전까지는 그냥 선언) or int intArray[] = new int[10]; ===> 주로 이쪽 방식을 사용 (위의 방식은 두 줄 쓰기용)
intArray = new int [10]; (배열에 대한 레퍼런스 변수)(배열 생성)(타입)(원소 개수) or int intArray = new int [10]; (배열 타입) ===> 초기화된 값의 개수(3) 만큼의 배열 생성
보통 선언과 동시에 값을 초기화 함 :
주의) 잘못된 배열 선언 :
배열 원소 접근 : int a [ ] = new int[5]; (-> 원소가 5개인 배열 생성. 인덱스는 0~4까지 가능) a[0] = 5; (-> 원소0에 5 저장) a[3] = 6; (-> 원소3에 6 저장) int n = a [ 3 ]; (-> 원소3의 값을 읽어 변수 n에 저장. n은 6이 됨) 인덱스에 음수 불가. 범위 넘는 수 불가
배열 생성 및 초기화 과정
※ 배열 리턴
메소드에서 배열 리턴 :
※ 참고 : 하나의 배열을 다수의 레퍼런스가 참조 가능
예시)
Public class ReturnArray {
static int[] makeArray() { // 정수형 배열을 리턴하는 메서드
int b[] = new int[4]; // 4개의 원소를 가지는 배열 b생성
for(int i=0; i < b.length; i++) // 배열의 원소를 0, 1, 2, 3으로 초기화
b[i] = i;
return b; // 배열 리턴
}
public static void main(String[] args) {
int intArray[]; // 배열 레퍼런스 변수 선언
intArray = makeArray(); // 메서드(makeArray())로부터 배열 전달받음
for(int i = 0; i < intArray.length; i++)
System.out.print(intArray[i] + " "); // 배열 모든 원소 출력
}
}
배열 레퍼런스(참조) 리턴 :
※ 참고 : result : [{ orderDate }] - result라는 property의 값이 orderDate라는 객체를 가진 배열임
result[0].orderDate : orderDate - result property 배열의 0번째 인덱스인 orderDate의 값은 orderDate임
※ 배열과 일반 변수의 차이?
int -> 프리미티브 타입 (int[ ] ) [ ] a = new int [2] [ ]
int[ ] -> int array 타입 (String) [ ] b = new String [3]
※ foreach문
package basic;
import java.util.Scanner;
public class arr_sample {
public static void main(String[] args) {
// for-each문으로 array하는 법
/*int[] arr = { 10, 20, 30, 40, 50};
int sum = 0;
for (int e : arr) { // int나 string 등 변수 type 적는거 빼먹지 마라
sum += e;
}
System.out.println(sum);
String[] s_arr = { "a", "b", "c" };
String sss = "";
for (String s : s_arr) {
sss += s;
}
System.out.println(sss);*/
// 문제) 음수를 입력하거나, 입력한 수가 배열의 크기보다 커지면(인덱스가 정해진 바운드리(10)를 넘어가면) 종료, 작을 동안은 계속 입력
Scanner scan = new Scanner(System.in);
int[] arr = new int[10]; // int 10개 저장할 수 있는 배열 공간 확보를 위해 변수와 배열 선언
int ind = 0, num = 0;
do {
System.out.print("숫자를 입력하세요. 종료하려면 -1을 입력합니다. : ");
num = scan.nextInt();
if (num < 0) {
break;
}
arr[ind] = num;
ind++;
} while (ind <= arr.length -1);
scan.close();
for(int e : arr) { // 배열의 모든 원소를 개수만큼 읽어보는 반복문 - for each
System.out.print(e + "\\t"); // "\\t" -한칸씩 띄워주는 대행문자열(= tab), "\\b"백스페이스???, "\\n"줄 넘기기, ","콤마
}
}
}
댓글