ch06. 배열

09Roalwlzm01·2022년 9월 25일

Java

목록 보기
4/15

6.0 배열

같은 타입의 여러 변수를 하나의 묶음으로 다루는 것

int score1, score2, score3
int score[] = new int[3];
  • 배열의 선언과 생성
    - 선언
    : int[] score // 자바
    : int score[] // C언어 계열
    - 생성
    : int[3] score = new int[3];
    : int score[3] = new int[3];
    - 초기화
           // 1번째 방법
           int score[3] = new int[3];
           int score[0] = 100;
           int score[1] = 10;
           int score[2] = 150;
           // 2번째 방법
           int[] score = {100, 10, 150}
           // 3번째 방법
           int[] score = new int[]{100, 10, 150}

배열특징

  • 자료구조 : 자료 조직/관리/저장
    배열 튜플 리스트 해쉬 스택
  • 같은 데이터타입 : 데이터타입이 다르면 안 됨
  • 맨 앞(순열) : 순서가 앞에서부터 시작
  • 변경불가 : 한 번 결정되면 변경할 수 없음

6.1 배열 선언

  • 데이터타입 뒤에 [ ] 가 들어가면 모두 배열 변수로 선언된 것
  • 배열은 반드시 사용하기 전 선언과 초기화가 먼저 이루어져야 함
  • 배열도 참조자료형으로 위치정보를 참조하는 자료형
    참조형으로 변함, null->초기화(기본형 빼고 다 씀)
  • 인덱스번호로 초기화하는 방법 (길이가 5개인 배열 객체 생성)
  • 둘이 다름(" " : 빈문자열이 있는 것 / null : 값 자체가 존재하지 않는 것
  • 사용방법

에러의 세 종류

1. 컴파일단계 에러 - 문법 오류

: run하기 전 상태의 오류

2. 런타임단계 에러(치명적) - 실행 오류

: run 후 오류

3. 컨텍스트(문맥) 단계 오류


6.2 배열 사용

  • 로또번호 뽑는 프로그램

    (이어서) 내림차순

6.3 다차원 배열

  • 배열 안의 배열 (n차원 배열이라 부름)
  • 다차원 배열
    - int[][] scores; //2차원 배열
    • int[][][] scores //3차원 배열
int [5][3] score = 
	{
    	{100,100,100},
        {100,100,100},
        {100,100,100},
        {100,100,100},
        {100,100,100},
    }




6.4 배열 복사 (잘 안씀)


6.5 향상된 for문


6.6 참조자료형

String a = "mega";
String b = "mega";
a==b → True 
String c = new String("mega");
String d = new String("mega");
c==d → False

c와 d는 참조하고 있는 메모리 주소가 다름
이때 equals 메서드를 사용하면 문자열값 자체는 같다고 나옴


문제

  • 02
  • 03
  • 04
  • 쌤이 주신 문제
 int n = new Scanner(System.in).nextInt();
        int divider = 10;
        int radix = 1;

        //n이 몇번째 자릿수 인지 확인 alg
        while (true) {
            if(divider>n) break;
            else {
                divider *= 10;
                radix++;
            }
        }
        int[] number = new int[radix];
        divider = 10;
        //12345
        for(int i=0;i<radix;i++){
            if(i==0) {
                number[i] = n%divider;
            }
            else{
                number[i]=(n%(divider*10))/divider;
                divider *= 10;
            }
        }

        for(int a:number)
            System.out.print(a);
  • 복습

0개의 댓글