[JAVA] 변수의 스코프(범위) / 배열

형이·2023년 7월 7일
0

JAVA

목록 보기
5/19
post-thumbnail

📝 Day 4

🖥️ 1. 변수의 스코프 (변수의 범위)

📌 자신보다 하위 블록으로는 침투할 수 있다

	int num = 100;
	if( num = 100 ){
		System.out.println(num);        // 오류 없음
	}
	------------------------------------------------
	int num = 100;
	for( int i = 0; 1<10; i++ ){
		System.out.println(num + i);    // 오류 없음
	}

📌 자신이 선언된 블록 밖으로는 빠져나갈 수 없다

	int num = 100;
	if( num == 100 ){
		int result = num + 100;
	}
	System.out.println(result);
    // 오류 발생 (result가 if 블록 안에서 생성되었으므로 사용 불가)
	----------------------------------------------------------
	for( int i=0; i<10; i++ ){
		...
	}
	System.out.println(i);
    // 오류 발생 (i가 for문을 위한 괄호 안에서 사용되었으므로 사용 불가)

📌 블록 안에서 선언된 변수는 블록 밖에서 존재하는 동일한 이름의 변수와는 이름만 동일할 뿐 다른 값으로 인식된다

	int target = 100;
	if( target == 100 ){
		int num = target + 100;
	} else {
		int num = target - 100;
	}

🖥️ 2. 배열

2-1. 배열이란

📎 변수를 그룹으로 묶는 형태의 한 종류로써 사물함 같은 형태를 갖는다

📎 하나의 배열 안에는 같은 종류(테이터형)의 값들만 저장할 수 있다

2-2. 배열을 만드는 방법

  • 배열의 선언
    데이터형[] 배열 이름;
  • 배열의 생성 : 변수를 저장할 수 있는 사물함을 생성
    배열 이름 = new 데이터형[크기];
	ex)

	int[] grade;		// 여러개의 int형 변수를 저장할 수 있는 배열 생성
	grade = new int[3];	// 배열의 칸을 세 칸으로 할당 (= index 3개)
  • 배열의 선언과 크기 지정에 대한 일괄 처리
    데이터형[] 배열이름 = new 데이터형[크기];
  • 배열 생성의 예
    int[] grade = new int[3];

2-3. 배열의 모양

📎 생성된 배열은 사물함과 같이 각각의 칸에 값들이 저장되고, 각각의 칸은 0부터 일련 번호가 지정된다. (일련번호 = 배열의 인덱스)

2-4. 배열의 값을 저장하기

📎 배열은 값을 저장할 수 있는 공간일 뿐, 그 자체가 값은 아님

📎 값이 대입되지 않은 경우, 숫자형은 0 / boolean형은 false / String형은 null이 자동으로 대입

📎 배열 안에 값을 저장하기 위해서는 인덱스 번호를 사용하여 각각의 칸에 직접 값을 대입해야 한다

	배열이름[인덱스 번호] = 값;

    ex) 둘리의 점수를 배열로 표현

	int[] grade = new int[3];
	grade[0] = 75;
	grade[1] = 82;
	grade[2] = 91;

2-5. 배열의 크기 설정과 값 할당에 대한 일괄처리

📎 배열의 크기를 지정하면서 괄호 "{ }" 안에 배열에 포함될 각 항목들을 콤마(,)를 사용해 나열하면 배열의 생성과 값의 할당을 일괄 처리

📎 이때는 배열의 크기를 별도로 지정하지 않으며, "new 데이터형[ ]" 부분은 생략 가능

	데이터형[] 배열이름 = new 데이터형{값1, 값2, ...};
			or
	데이터형[] 배열이름 = {값1, 값2, ...};

2-6. 배열값 사용하기

📎 배열 안에 저장되어 있는 값들을 사용하여 연산이나 출력 등의 처리를 위해서는 배열에 부여된 인덱스 값을 통해서 데이터에 접근

	System.out.println( grade[2] );   // 인덱스 2에 있는 값 출력
	System.out.println( grade[0] );   // 인덱스 0에 있는 값 출력

2-7. 배열과 반복문

  • 배열의 특성
    - 0 ~ (배열 크기 -1)만큼의 인덱스 값을 순차적으로 갖는다
  • 특성을 활용한 배열의 데이터 처리
    - 일정 범위를 갖고 순차적으로 증가하는 인덱스 값의 특성을 활용하면 반복문 안에서 배열의 값을 할당하거나 할당된 값을 읽어들이는 처리가 가능하다.
	int[] grade = new int[]{100,100,90};

	for( int i = 0; i<3; i++ ){
		System.out.println(grade[i]);
	}

2-8. 배열의 크기 (길이)

📎 배열의 길이를 얻기 위해서는 "배열이름.length" 형식으로 접근한다.

	ex) grade 라는 배열을 생성한 경우 배열의 길이

	int size = grade.length;
	-----------------------------------------
	int[] grade = new int[]{100,100,90};

	for( int i = 0; i<grade.length; i++ ){
		System.out.println(grade[i]);
	}

2-9. 배열의 종류

  • 1차 배열
    📎 한 줄만 존재하는 사물함 같이 구성된 배열
    📎 행에 대한 개념이 없고 열에 대한 개념만 존재하기 때문에 "배열이름.length"는 몇 칸인지를 알아보는 기능이 된다
  • 2차 배열
    📎 1차 배열의 각 칸에 새로운 배열을 넣는 형태
    📎 1차 배열의 각 칸은 "행"이 되고, 각각의 칸에 추가된 개별적인 배열은 "열"의 개념이 되어 행렬을 구성'

2-10. 2차원 배열의 생성

📌 2차원 배열 선언

 📎 데이터 타입의 이름 뒤에 대괄호 "[ ]"를 행과 열에 대하여 각각 지정

  데이터형[][] 배열 이름;

📌 2차원 배열의 크기 할당

 📎 행과 열에 대한 크기를 명시

  배열이름 = new 데이터형[행][열]

📌 2차원 배열의 선언과 할당의 일괄 처리

 데이터형[][] 배열이름 = new 데이터형[행][열];

📌 2차원 배열의 선언, 크기 할당, 값의 대입에 대한 일괄 처리

 📎 2차원 배열의 경우 블록 괄호"{}"를 2중으로 겹쳐서 2차원 배열을 표현

 📎 행과 열의 구분에는 콤마(,)가 사용

 📎 컴파일러가 블록 괄호"{}"의 요소를 파악하면 행, 열의 크기가 산출될 수 있으므로 배열의 크기 설정을 위한 "[][]"에는 배열의 크기를 명시하지 않는다

	데이터형[][] 배열이름 = new 데이터형[][]{
		{0행 0열의 값, 0행 1열의 값, ..., 0행 n열의 값},
		{1행 0열의 값, 1행 1열의 값, ..., 1행 n열의 값},
		...
		{n행 0열의 값, n행 1열의 값, ..., n행 n열의 값},
	};

2-11. 행과 열에 대한 인덱스를 통하여 값을 대입

배열이름[행][열] = 값;

2-12. 배열의 길이

📌 행의 길이

 📎 1차 배열의 길이는 2차 배열에서는 행의 크기로 조회

  int rows = grade.length;

📌 열의 길이

 📎 열의 길이는 각 행에 대하여 개별적으로 조회해야 한다

  int cols = grade[행].length;

0개의 댓글