DAY+6 배열(기본, 특징)

2020. 8. 28. 14:49Web_Back-end/JAVA_선행

◎ 배열을 이용하는 이유

 ▷ 많은 데이터를 처리할 수 있다. → ex) 1000명의 성적을 처리하는 프로그램, 성적을 저장하는 변수를 만들려고 할 때

 ▷ 자바는 "동일한 자료형"의 변수를 여러개 저장할 수 있는 저장장소이다.

◎ 배열 선언 방법 (배열이란 객체이다)

  1.  배열의 참조변수 선언하기 int[] s; //여기서 s가 참조변수
  2.  배열 생성하기 s = new int[10]; //10은 배열의 개수, 크기
  3.  한번에 작성가능 int[] s = new int[10]; //but! int s[10]; 선언과 동시에 크기를 정할 수는 없다.

◎ 배열 특징

  1. 자동으로 숫자는 0, 문자는 null, Boolean 은 false 로 초기화
  2. 배열의 크기를 변수로 선언가능 ex) int size = 10; int[] s = new int[size];
  3. 배열의 크기는 한 번 생성되면 변경할 수 없다. (크기 변경 배열 : ArrayList - 나중에 추가할 예정)

※ 배열의 크기를 생성한 수에는 [ ] 안에는 크기가 못들어옴 ∴ 처음 생성한 [ ] 이후에 [ ] 안에는 인덱스만 들어감

◎ 배열 요소 접근

  • 배열의 인덱스는 0부터 시작이다
  • 배열을 사용할 때, 인덱스 범위를 지키지 않으면 오류
  • 크기가 10인 배열 -> int s[] = s[0], s[1], s[2] ... s[9] 인덱스는 0부터 시작
  • 값 저장&출력 방법 -> 저장: s[0] = 80; 출력: print(s[0]); ===> 모두 인덱스로 접근

◎ 반복문과 배열

  • 배열과 반복문은 쌍둥이같은 존재이다
  • 배열의 크기를 구하는 함수 >> length

◎ 배열의 초기화

  • 연산자 new 생략가능
  • 배열의 크기 지정할 필요 없음
  • 배열의 참조변수 선언 -> 배열생성 -> 초기값저장 // 한번에 진행
    • ex) int[] s = new int[5]; 를 int[] s = {10,20,30,40,50}; 이렇게 한번에 진행
    • 주의 int[] s; 
    • s = new int[5]; 맞음
    • s = {10,20,30,40,50};  틀린표현

< 예제풀기 >

출처 : 어서와 JAVA는 처음이지_INFINITY BOOKS

//10크기의 배열을 선언
		int size = 10;
		int[] seat= new int[size];
		//모든 반복문을 while문으로 감싼다
		//while문이 break나올때까지 계속 반복->조건에 true
		while(true) {
		System.out.println("---------------------");
		//1~10까지 출력-좌석번호
		for(int i=0; i<10; i++) {
			System.out.print(i+1+" ");
		}
		System.out.println("\n---------------------");
		//seat배열을 모두 0(자동 초기화값)으로 출력-배열에 값이 없는상태
		for(int i=0; i<seat.length; i++) {
			System.out.print(seat[i]+" ");
		}
		System.out.println("\n---------------------");
		System.out.print("원하시는 좌석번호를 입력하세요(종료는 -1): ");
		Scanner input = new Scanner(System.in);
		int user = input.nextInt();
		//사용자 값을 받고나서 if문으로 경우를 나눔
		//if1번 user값이 음수일경우-시스템종료
		if(user<0) {
			System.out.println("시스템을 종료합니다.");
			break;
		}
		//if2번 user값==seat인덱스 번호 일때, 값이 0이면 1로 바꿔줌-예약되었다는 뜻
		if(seat[user-1]==0) {
			seat[user-1]=1;
			System.out.println("예약되었습니다."+seat[user-1]);
		}
		//if2번이 아니면 즉, 배열값이 이미 1이면(예약됨) 예약불가출력
		else {
			System.out.println("이미 예약된 자리입니다.");
		}
		}

Console 창 예시 ▼

더보기

 

2번 좌석예매-다시 2번좌석예매시도-종료