JAVA/JAVA 국비지원 수업 정리

JAVA 7일차 수업 log
깝몬 2023. 5. 8. 17:06

05-2단원

※배열 타입

 

int sco1 = 20;
int sco2 = 21;
int sco3 = 22;
...
int sco50 = 100; // 모든 변수를 선언하기

같은 종류의 데이터를 모두 선언하기엔 모두의 이름을 정해주기에 너무 많은 선언이 필요하다.

 

이때 필요한것이 배열인데

 

int sco[] = {20, 21, 22, ... , 100}; // 아까와 같은 내용
// 이렇게 만들어진 배열은
sco[1] = 20;
sco[2] = 21;
sco[3] = 22;
...
//과 같은 선언과 동일하다.

이와 같은 내용으로 선언을 하여 sco라는 변수내에 배열을 생성한다.

이를통해 반복적인 선언을 줄이고 같은 종류의 데이터를 묶어줄수 있다. >> 다른 종류도 묶어줄수 있는것이 콜렉션

 

★요약

배열이란 동일 타입의 데이터를 연속된 공간에 나열, 각 데이터에 index를 부여해 놓은 자료구조

 

 

※ stack영역 과 heap영역

 

문자열타입에서의 영역

String name; // String 타입의 name이라는 변수를 선언함으로서 Stack에 name을 할당시킨다.
// 이때 name의 값은 초기값(default)
name = "코딩"; // name이라는 변수에 "코딩"이라는 문자열을 할당한다. 여기까지는 Stack 영역

 

 

배열에서의 영역

int sco1 = 0;
int sco2 = 1;
int sco3 = 2; 
// 이 데이터들은 모두 Stack 영역에 따로 저장되기때문에 메모리를 상대적으로 많이 차지한다.

int[] scores; // int변수 배열 선언 아직 배열의 값은 default이다. << stack 영역!
//heap영역에 index가 아직 할당되지 않았어서 null상태라고 부른다.
//가리키는곳 pointer가 없어 처리불가능상태임. garbage상태
//stack영역은 변수의 이름만으로도 접근할수 있는 영역이다.

scores = new int[3] // (int변수 배열공간을 3개 생성) 후 (scores 에 대입( = 연산자)) << heap 영역!
//heap영역은 변수의 이름 뿐만이 아니라 주소(index 번호)까지도 필요하다.

scores = new int[] {40, 50, 60}; // 3개의 영역에 순서대로 40, 50, 60이라는 값을 대입해준다.
System.out.println(scores[0]);// 제일 첫번째 index는 0이다.
//(stack 영역의 scores를 찾아서)<Stack영역> 
//(해당하는 index를 참조하여 데이터를 가져온다. )<heap영역>
// 40 출력
System.out.println(scores[1]);// 50 출력
System.out.println(scores[2]);// 60 출력

 

변수의 이름을 기억해주는 영역이 stack , 이름에 해당하는 index를 기억해주는 영역이 heap이라고 생각해야겠다.

 

 

따라서 선언된 배열은 이러한 상태가 되며, 차지하는 데이터의 크기도 알 수 있다.

※2차원배열

//다차원배열 (p190) : 행과 열로 구성된 배열을 2차원 배열이라고 한다.
//행 = row = (줄) < DB에서는 레코드라고도 부름
//열 = column = (칸) < 
public class ArrayEx04_p190 {

	public static void main(String[] args) {
		
		
		int[] mathScores = 	{10,20,30,40,50};
		System.out.println("mathScores="+mathScores);
		System.out.println("mathScores.length="+mathScores.length);
		
		int[] kormathScores = {20,30,40,50,60};
		System.out.println("kormathScores="+kormathScores);
		System.out.println("kormathScores.length="+kormathScores.length);
		
		int[][] scores = {	{10,20,30,40,50},
							{20,30,40,50,60},
							{30,40,50,60,70}
							};
		
		System.out.println("scores[0]="+scores[0]);
		System.out.println("scores[1]="+scores[1]);
		System.out.println("scores[2]="+scores[2]);
		System.out.println("scores[0].length="+scores[0].length);
		//length는 저장된 배열의 길이 , length()는 문자열의 길이
		
		for(int i=0;i<scores.length;i++){
			System.out.println("scores["+i+"]="+scores[i]);
				for(int j=0;j<scores[i].length;j++ ) {
					System.out.println("scores["+i+"]["+j+"]="+scores[i][j]);}
		}
		
		int[][] scores1= { 	{10,20,30},
							{20,30,40},
							{30,40,50,60,70}}; // 가변배열 = 배열의 갯수가 항상 같지는 않다.
		
		for(int i=0;i<scores1.length;i++){
			System.out.println("scores1["+i+"]="+scores1[i]);
				for(int j=0;j<scores1[i].length;j++ ) {
					System.out.println("scores1["+i+"]["+j+"]="+scores1[i][j]);}
		}
	}

 

'JAVA > JAVA 국비지원 수업 정리' 카테고리의 다른 글

JAVA 10일차 수업  (0) 2023.05.11
JAVA 9일차 수업  (2) 2023.05.10
JAVA 8일차 추가공부 log  (0) 2023.05.09
JAVA 8일차 수업 log  (0) 2023.05.09
JAVA 6일차 수업 log  (0) 2023.05.04