Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바의 정석 기초편 ch7
- jpa - 객체지향 쿼리 언어
- @Aspect
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch6
- 타임리프 - 기본기능
- 스프링 db2 - 데이터 접근 기술
- 게시글 목록 api
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch12
- 2024 정보처리기사 시나공 필기
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch3
- 자바의 정석 기초편 ch14
- 스프링 mvc1 - 서블릿
- 2024 정보처리기사 수제비 실기
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch1
- 스프링 입문(무료)
- 자바의 정석 기초편 ch8
- 스프링 mvc2 - 검증
- 스프링 db1 - 스프링과 문제 해결
- 스프링 고급 - 스프링 aop
- jpa 활용2 - api 개발 고급
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch11
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch13
Archives
- Today
- Total
나구리의 개발공부기록
자바의 정석 기초편 ch5 - 1 ~ 5 [배열, 배열의 인덱스,배열의길이,배열의초기화] 본문
유튜브 공부/JAVA의 정석 기초편(유튜브)
자바의 정석 기초편 ch5 - 1 ~ 5 [배열, 배열의 인덱스,배열의길이,배열의초기화]
소소한나구리 2023. 11. 8. 16:171) 배열
- 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것으로 많은 양의 값(데이터)를 다룰 때 유용함
- 변수는 저장공간이 각각 독립적이지만 배열은 연속적임
- 0부터 연속적으로 자동으로 번호가 붙음 저장됨 - 인덱스 생성
(1) 배열의 선언과 생성
- 배열을 다루기 위한 참조변수를 선언
- 둘다 가능하지만 java스타일 사용을 권장
- Java 스타일
- 타입 [ ] 변수이름
- int [ ] score; -> 배열기호가 타입의 일부로 본다
- C언어 스타일
- 타입 변수이름 [ ]
- int score[ ];
- 타입 [ ] 변수이름; -> 배열을 선언 (배열을 다루기 위한 참조변수 선언)
- 변수이름 = new 타입[길이]; (배열을 생성 - 실제 저장공간을 생성)
- int[ ] score;. -> int타입의 배열을 다루기 위한 참조변수 score선언
- socre = new int [5]; -> int타입의 값 5개를 저장할 수 있는 배열 생성
- Java 스타일
(2) 배열의 인덱스
- 각 요소(저장공간)에 자동으로 붙은 일련번호
- 인덱스(index)의 범위는 0 부터 배열길이 -1 까지
(3) 연습
public class ex5_intro {
public static void main(String[] args) {
int[] score; // 1. 배열 score를 선언(참조변수)
score = new int[5]; // 2. 배열의 생성(int저장공간 x 5)
int[] scroe = new int[5]; // 배열의 선언과 생성을 동시에
score[3] = 100;
System.out.println("score[0] = "+score[0]);
System.out.println("score[1] = "+score[1]);
System.out.println("score[2] = "+score[2]);
System.out.println("score[3] = "+score[3]);
System.out.println("score[4] = "+score[4]);
int value = score[3];
System.out.println("value = "+value);
}
}
score[0] = 0
score[1] = 0
score[2] = 0
score[3] = 100
score[4] = 0
value = 100
2) 배열의 길이
- 배열변수이름.length : 배열의 길이(int형 상수)
int[] arr = new int[5]; // 참조변수가 arr이고 길이가 5인 int배열
int tmp = arr.length; // arr.length의 값은 5(배열의 길이) -> tmp에 5가 저장됨
- 배열은 한번 생성하면 '실행하는 동안'에 그 길이를 바꿀 수 없음 - 실행전, 실행이 끝나고 수정
- 이유는 메모리의 저장 특성 때문 -> 배열을 메모리에 저장시 연속적으로 저장해야 하는데, 메모리의 빈 공간이 연속적으로 있다는 보장이 없기 때문
- 배열의 길이보다 더 많은 양의 데이터가 필요하게되어 더큰 크기의 새로운 배열을 생성하면 JVM이 메모리의 다른 공간에 새로운 배열크기로 요청된 공간만큼 연속된 메모리를 할당하고 기존과 동일한 코드가 실행되면 기존데이터를 복사함
- 배열의 길이를 굳이 사용하는 이유는 수정을 용이하게 하게 하고 오류 발생을 줄이기 위함임
(1) .length 사용 예제
- 아래의 코드 이미지 처럼 for문의 조건식을 i < 6으로 하드코딩하게 되면 배열의 길이가 줄어들었을 경우 에러가 발생할 수 있음
- score.length로 for문의 조건식에 배열의 길이를 입력하면 배열의 길이를 계속 변경하여도 애플리케이션을 실행 시 에러가 발생하지 않음
(2) 실습
int[] arr = new int[9]; // 길이가 9인 int배열 arr생성
System.out.println("arr.length="+arr.length);
// for(int i=0; i<10; i++) // index 범위가 벗어나서 에러 발생
for(int i=0; i<arr.length; i++) // 조건식을 인덱스길이로 설정하여 배열을 수정하여도 에러가 안남
System.out.println("arr["+i+"]="+arr[i]);
3) 배열의 초기화
- 배열의 각 요소에 처음으로 값을 저장하는 것, 값을 저장하는 행위를 초기화 라고함
(1) 배열 타입별 초기화 기본값
- 배열은 각 타입의 기본값으로 자동으로 초기화가 됨
- boolean - false
- char - '\u0000', null 문자를 나타내며 출력시 보이지 않음
- byte, short, int - 0
- long - 0L
- float - 0.0f
- double - 0.0d or 0.0
- 참조형 - null
(2) 예시
- 만약 배열의 값이 규칙이 있는 경우 반복문으로 값을 초기화 할 수 있음
- 배열의 값에 규칙이 없는경우 { }를 활용하여 직접 값을 초기화 할 수 있으며, 배열 변수를 선언과 동시에 값을 초기할 수 있음
int[] score = new int[5]; // 길이가 5인 int형 배열을 생성
score[0] = 50; // 각 요소에 직접 값을 저장
score[1] = 60;
score[2] = 70;
score[3] = 80;
score[4] = 90;
위 처럼 규칙이 있는 경우 반복문으로 생성 가능
for(int i = 0; i < score.length; i++)
score[i] = i * 10 + 50;
규칙이 불규칙할 경우
1번 - int[] score = new int[]{50,60,70,80,90};
2번 - int[] score = {50,60,70,80,90}; //new int[] 생략 가능 - 훨씬 많이 씀
단,아래처럼 두문장으로 선언과 초기화를 나눠야 할 경우가 발생하면 1번으로 해야함(드물게 발생)
int[] score;
score = new int[]{50,60,70,80,90};
** 출처 : 남궁성의 정석코딩_자바의정석_기초편 유튜브 강의
'유튜브 공부 > JAVA의 정석 기초편(유튜브)' 카테고리의 다른 글
자바의 정석 기초편 ch5 - 8 ~ 11 [배열의 활용1~4] (2) | 2023.11.09 |
---|---|
자바의 정석 기초편 ch5 - 6 ~ 7 [배열의 출력] (0) | 2023.11.09 |
자바의 정석 기초편 ch4 - 20 ~ 24 [break문, continue문, 이름붙은 반복문] (0) | 2023.11.08 |
자바의 정석 기초편 ch4 - 16 ~ 19 [while문, do-while문] (0) | 2023.11.07 |
자바의 정석 기초편 ch4 - 13 ~ 15 [for문, 중첩for문] (0) | 2023.11.07 |