유정잉

3일 Java [ for문 중첩 , 배열 Array , 다차원 배열 , 열거 타입 ] 본문

네이버 클라우드 부트캠프/복습 정리

3일 Java [ for문 중첩 , 배열 Array , 다차원 배열 , 열거 타입 ]

유정♡ 2024. 2. 22. 18:07

[ 반목문 for 문 중첩 ? ]  for 문은 또 다른 for 문을 내포할 수 있는데, 이것을 중첩된 for 문이라고 한다. 이 경우 바깥 for문이 한번 실행할 때마다 중첩된 for문은 지정 횟수만큼 반복하고 다시 바깥 for 문으로 돌아간다. 

중첩 for문을 활용한 

 

열이 가변적일때, 행을 기준으로 공통수식을 뽑아 조건식에 넣는다.

행(i)변수를 이용해 열(j) 변수값이 나오도록 공통수식을 뽑는다.

행은 5개 고정 열은 가변적. 행은 고정 열이 가변적일 때 행을 기준으로 공동수식을 뽑아 조건식에 넣는다. 행 변수를 이용해 열 변수 값이 나오도록 공통수식을 뽑는다

Q. 밑에를 출력해라.
*
**
***
****
*****

반복 for문을 활용한 * 찍기.
int n = 1; 의 위치에 따른 결과의 차
for문 응용
아스키코드를 활용한 중첩 for

[ for - each 문 ? ] 자바는 배열 및 컬렉션을 좀 더 쉽게 처리할 목적으로 for-each문을 제공한다. 카운터 변수와 증감식을 사용하지 않고, 항목의 개수만큼 반복한 후 자동으로 for문을 빠져나간다.

 for ( 타입변수 : 배열 ) {
        실행문;
 }

가져올 항목이 존재할 경우 배열->타입변수->실행문;
가져올 항목이 없는 경우 배열->빠져나감

for-each 문 활용

 


[ 자바의 데이터 타입] 은 크게 기본타입 primitive type과 참조 타입 reference type 으로 분류된다. 참조 타입이란 객체 object의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입이 있다. 기본 타입으로 선언된 변수와 참조 타입으로 선언된 변수의 차이점은 저장되는 값이다. 기본 타입으로 선언된 변수는 값 자체를 저장하고 있지만, 참조 타입으로 선언된 변수는 객체가 생성된 메모리번지를 저장한다. 변수들은 모두 스택 stack 이라는 메모리 영역에 생성된다.

 

[ null과 NullPointerException ? ] 참조 타입 변수는 아직 번지를 저장하고 있지 않다는 뜻으로 null 값을 가질 수 있다. 자바 프로그램 실행 도중에 발생하는 오류를 예외 Exception라고 부른다. 참조 변수를 사용하면서 가장 많이 발생하는 예외 중 하나는 NullPointerException이다. 변수 null인 상태에서 객체의 데이터나 메소드를 사용하려 할 때 이 예외가 발생한다.

 

[ Strig 문자열 타입 ? ] String 변수에 문자열 리터럴을 대입하는 것이 일반적이지만, new 연산자로 직접 String 객체를 생성하고 대입할 수도 있다. new 연산자는 새로운 객체를 만드는 연산자로 객체 생성 연산자라고 한다.

String name 1 = "홍길동";

String name 2 = "홍길동";

String name 3 = new String "홍길동";

=> name1 과 name2는 동일한 문자열 리터럴로 생성된 객체를 참조하기 때문에 name1==name2의 결과는 true,
    name3는 new 연산자로 String 객체를 별도로 생성했기 때문에 name1==name3의 결과는 false 가 나온다.

 

[ Array 배열 타입 ? ] 많은 양의 값을 다루는 좀 더 효율적인 방법. 배열은 연속된 공간에 값을 나열시키고, 각 값에 인덱스 index를 부여해 놓은 자료구조이다. 인덱스는 대괄호 [ ] 와 함께 사용하여 각 항목의 값을 읽거나 저장하는데 사용된다. 배열의 특징으로 배열은 같은 타입의 값만 관리하고, 배열의 길이는 늘리거나 줄일 수 없다. 

 

[ 배열 변수 선언 ? ] 두가지 형태로 작성할수 있지만 관례적으로 첫번째 방법을 주로 사용한다. 1) 타입[] 변수; 2) 타입 변수[]; 배열 변수는 참조 변수이다. 참조할 배열이 없다면 배열 변수도 null로 초기화할 수 있다. 타입[] 변수 = null; 

배열에 저장될 값의 목록이 있다면, 다음과 같이 간단하게 값 목록으로 배열을 생성할 수 있다. 

 

[ 값 목록으로 배열 생성 ? ] 배열에 저장될 값의 목록이 있다면 다음과 같이 간단하게 배열을 생성할 수 있다.

                                            타입[] 변수 = { 값0, 값1, 값2, 값3 }; 

String []season = { "Spring", "Summer", "Fall", "Winter" };

season[0] = Spring

만약 season[0] = "봄"; 으로 인덱스0의 항목의 값이 변경된다면

System.out.println(season[0]); 은 봄으로 출력된다.
public class Test2 {

	public static void main(String[] args) {

		int sum = 0;
		
		int[] scores = {30,60,90}; 
		
		for(int i=0;i<scores.length;i++) {
			sum += scores[i];}
		
		System.out.println(sum);
		
	}
}

 

 

중괄호 { }로 감싼 값의 목록의 배열 변수에 대입할 때 주의할 점이 있다. 배열 변수를 미리 선언한후에는 값 목록을 변수에 대입할 수 없다.

타입[] 변수;
변수 = { 값0, 값1, 값2, 값3 };  // 컴파일 에러

타입 []변수 = { 값0, 값1, 값2, 값3 } // 이렇게 해야 함.

타입 변수 = new 타입[] { 
값0, 값1, 값2, 값3 } // 배열 선정과 동시에 new도 가능

1. int []ary={4,5,6};  // 가장 많이 쓰는 방법 1.2.3. 모두 표현 가능
2. int []ary;
     ary=new int[] {4,5,6};
3. int ary[]=new int[]{4,5,6}

 

 

[ new 연산자로 배열 생성 ? ] 값의 목록은 없지만 향후 값들을 저장할 목적으로 배열을 미리 생성할 수도 있다.

 타입[] 변수 = new 타입 [길이]  => 길이는 배열의 갯수를 나타냄.

new 연산자로 배열 생성

[ 배열 길이 ] 배열의 길이를 얻으려면 도트(.) 연산자를 사용해서 참조하는 배열의 length 필드를 읽으면 된다.

 

Q. 주어진 배열 항목에서 최대값을 출력하는 코드를 작성해보세요 (for문 이용)

     int [] array = {1,5,3,8,2};

인덱스 안에 연산기호 사용하기


 

[ 다차원 배열 ? ] 배열 항목에는 또 다른 배열이 대입될 수 있는데, 이러한 배열을 다차원배열.

변수[1차원인덱스][2차원인덱스]

 

[ 2차원 배열 ] 

이차원 배열 [ 2 ] 행 { 4, 5, 6 } 에 [ 3 ] 열 { 6 }

 

int [ ] [ ] ary = { {1,2,3,4, }, {5,6,7,8} } ;

2행 / 4열 [0] [1] [2] [3]
[0] 1 2 3 4
[1] 5 6 7 8

이차원 배열과 for 문 응용 / 행은 고정적이나 열은 가변적일때 변수[ ].length 응용

[ 2차원 배열일 때 ]

행 => 배열명.length
열 => 배열명 [행] .length


 

[ 열거 enum 타입 ]

 

참조타입 중 열거 타입은 데이터 중에는 몇가지로 한정된 값을 갖는 경우가 있다. 예를들어 월,화,수,목,금,토,일 요일은 7가지 봄,여름,가을,겨울 계절은 4가지. 이와 같이 한정된 값을 갖는 타입을 열거 타입 enumeration type 이라고 한다. 모두 대문자로 작성한다. 열거 타입 변수에는 열거 상수를 대입할 수 있는데, '열거타입.열거상수' 형태로 작성한다.

728x90