배열참조변수
import java.util.Scanner;

public class Exam_01 {
	public static void main(String args[]) {
		int a=10;
		//int[] arr; //arr이라는 변수만 만들어진 것, 정확히는 Stack에다가 "배열의 주소를 저장한 참조변수"를 만든 것임. 배열의 본체는 Heap에 있다. 주소값을 Stack에 만들어진 변수 arr이 갖고 있는 것.
		//Heap에다가 뭔가 새로 만들겠습니다, Heap을 이용하겠습니다 할때의 용법은 new
		
		//new int[5]; //int형 변수 5개를 Heap에 만들겠다는 의미
		//int b = new int[5]; // 에러가 남. 자료형이 안맞음.
		//String b = new int[5]; //에러가 남. 마찬가지로 자료형이 안맞음.
		/*
		int[] arr = new int[5];
		//int[]가 배열참조변수를 생성함. """int형 배열의 주소를 저장하는 참조변수 arr""" 배열을 만든 것이 아님!!!
		//new int[5] -> int형 배열 5개를 heap에 만들었다.
		//배열참조변수는 배열과 자료형이 동일해야한다. int형이면 int[], String형이면 String[]에 담아야 한다.
		
		
		arr[0]=10;
		//배열의 첫번째칸은 0번이다.
		//5칸짜리 배열의첫번째칸(0번)에 10을 넣겠다는 의미
		arr[1]=20;
		arr[2]=30;
		arr[3]=40;
		arr[4]=50;
		
		
			
		
		//arr[5]=60; //생성한 배열의 범위(Index)를 벗어나면 예외가 발생한다.
		// [] : index 첨자
		
		//for문(반복문)을 이용해 배열에 데이터를 넣거나, 이후에 네트워크,데이터베이스를 통해 데이터를 넣기도 함(이후에~)
		
		//배열의 인덱스 숫자 = 오프셋(Offset)
		//오프셋이란 ? 기준점으로부터 얼만큼 떨어졌는가 라는 표현
		//오프셋2 = 기준점으로부터 2만큼 떨어져있다
		//오프셋5 = 기준점으로부터 5만큼 떨어져있다
		//기준점 arr[0] = 1000번지
		//arr[1] =1000번지에서 1만큼 떨어져있다 (1byte=4bit) ==> 1004번지
		//앞서 배웠던 변수들과 사용방법은 같음
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		System.out.println(arr[3]);
		System.out.println(arr[4]);
		System.out.println(arr[0]+arr[1]);
		
		int index=0;
		System.out.println(arr[index]); // int변수 index에 0이 저장되어 있으므로, arr[0]과 같음

		
		System.out.println(arr[5-3]);//배열참조함수의 index에는 연산식을 넣을 수도 있다. arr[2]
		System.out.println(arr[(int)(Math.random()*3)]); //난수도 넣을 수 있다. 
		//결과적으로 index에 숫자만 들어가면 다 ok임.
		
		
		
		Scanner sc = new Scanner(System.in);
		System.out.println(arr[Integer.parseInt(sc.nextLine())]); 
		//스캐너로 숫자값을 입력받아 index에 넣을 수도 있다. 
		*/
		//int[] arr = new int[5] {10,20,30,40,50} 이렇게 입력하는 경우 에러가 난다. 한번에 입력하는 경우 자동으로 배열을 생성하기 때문에 생성하려는 배열크기를 입력할 필요가 없다? 
		int[] arr = new int[] {10,20,30,40,50,60};
		
		//for(int i=0;i<6;i++) {
		for(int i=0;i<arr.length;i++) {
			System.out.println(arr[i]);
		}
		
		//반복문을 이용해 간단하게 출력코드가 가능해짐
		//배열의 크기만 늘어나면 for문의 범위의 숫자도 계속 바꿔줘야하는 번거로움이 있다
		//So 번거롭지 않게 동적으로 계속 변화하기 하기 위해 arr.length를 이용한다.
 		
		
		
		

	}
}

'자바 프로그래밍 > 코드' 카테고리의 다른 글

배열과 스왑(swap)기법  (0) 2020.02.12
입출력과 배열  (0) 2020.02.12
Baskin Robbins 31 Game  (0) 2020.02.11
경마 배팅 게임  (1) 2020.02.11
UP & Down Game  (0) 2020.02.11