※ 개인적인 개발 수업 정리글입니다. 꾸준히 정리할 예정이고 틀린 부분이 있다면 언제든지 댓글 환영입니다.
5장. 배열
-같은 타입의 데이터가 여러개면, 여러개의 변수가 필요함. int 변수가 100개라든가..
-대량 데이터 관리는 보통 변수로 하기 어려워서, '배열'이랑 '컬렉션' 사용
-타입 자체는 뭐든 가능하지만(String,int..) , 같은 데이터 타입으로만? 배열 저장가능?
-하나의 배열명으로 여러 데이터 관리 가능
-객체도 배열로 관리 가능
1. 배열 선언
데이터형 [ ] 배열명 ; [ ]가 뒤로 가도 됨
ex) int [ ] num ; int타입의 num이라는 변수를 배열로 만들거다.
2. 배열 생성
배열명 = new 데이터형[크기] ;
ex ) num = new int [3] ; num에 새로운 int 배열방을 3개 넣어준다.
==>int값을 담을 수 있는 방이 3개 만들어짐. 아직 초기화 안해서 int의 초기값인 0으로 저장.
방이름이 인덱스 0번부터 붙음. 0부터니까 마지막 인덱스 : 그 배열 크기-1
배열num은 값들이 있는 방을 갖고 있는 "참조변수"인거임. 값을 직접 지닌게 아님!!!
에러메시지: ArrayIndexOutOfBoundsException =>인덱스 크기 넘어섰다는거임
3. 배열 초기화
ex) num [0] = 1 ; 배열num의 인덱스0번방에 int 1값으로 초기화함;
① new 키워드 사용 - 지정된 크기만큼 [배열선언&배열생성] 필수!! &배열초기화
② 리터럴 이용 - 지정된 값의 개수만큼 자동으로 배열크기 설정. [배열선언&생성&초기화] 한꺼번에
③ new 키워드와 리터럴 혼합 - 배열선언과 생성 코드를 분리하여 작업가능.
① new 키워드 사용
for each문
이미 선언&생성&초기화된 배열을 두고,
새로운 인덱스 변수 선언&초기화;
for each문으로 i에 배열"값" 부여해줌
-배열 안에 배열 넣기 => num2방의 값 = num방의 값
잠시, 책 95쪽으로 감 ■ 파라미터로 배열 전송
┌멤버변수┐
┌기본형 데이터 int, double 등등 Call by Value ┐
ㄴchange1 함수에, num1의 값을 가져간다는거임.
┌참조형 데이터 String, 배열 등등 Call by reference ┐
ㄴchange2 함수에, num2의 주소를 가져간다는거임.
근데 그냥 주소라서, 호출되는건! n[2]=90;으로 돌아온다는거임
ㄴmain함수에 있는게 먼저 출력이 되는게 맞고, 멤버변수의 함수내용을 ★호출★하는거라, 호출됐을때부터 함수에 해당되는게 전부 뜸
-배열의 인덱스 넣으면 값을 넣는거임 ==>머선 말이고..
책85쪽 예제
책87,88쪽 예제
② 리터럴 이용 : 데이터형 [ ] 배열명 = { 값, 값2, 값3, ... }
③ new 키워드와 리터럴 혼합 : [] 안에 크기지정NONONO!!!
< ①new키워드, ②리터럴, ③new키워드 리터럴혼합 = 다 합침 >
마지막엔 foreach말고 기존에 for로 써서 출력하는것도, 까먹지 않게 다시 해보기
arrays라는 라이브러리가 지원되고 있음. arrays 임포트
필요한 java 유틸리티 한번에 임포트 시키기 : ctrl키 +shift키 + O
책232쪽
Arrays API
-[ '배열'의 정렬,최대값,최소값,배열복사,특정값으로 채우기,값출력 ]을 손쉽게 처리가능하게함.
메서드명 | 설명 |
Arrays.copyOf( 배열명, 배열.length ); | 배열을 복사하여 반환 |
Arrays.fill( 배열명, 전부 넣을 값 ); | 특정값으로 배열을 채움, start와 end 지정 가능 |
Arrays.equals( a, b ); | 배열값이 동일한지 비교하여 boolean 으로 반환 |
Arrays.sort( 배열명 ); | 배열을 정렬해서 반환, 기본은 오름차순이고 Comparator 인터페이스를 사용하여 사용자 클래스도 정렬가능. |
Arrays.toString() | for문 대신에 사용 가능한 배열 출력 방법 |
Arrays.binarySearch( 배열명, 값 ) | 특정 배열 요소의 인덱스 반환 |
Arrays.asList( 값1,값2,값3 ... ); | List list = Arrays.asList( 값1, 값2, 값3, ... ); //문자열 데이터를 지정해서, list에 저장 |
프로젝트 04Day 의 ArrayTest3
[기본형 데이터=xxx] xxx=10 정해진 데이터를 함수에 전달하는거라, 값의 복사 = Call by Value
[참조형 데이터=num] num은 주소값을 저장하는지라, 배열의 주소가 전달 =Call by Reference
ArrayTest6 Arrays API - Arrays.sort(변수) , .binarySearch(변수, "찾을값")
ArrayTest6 Arrays API - .fill( 변수, 전부넣을값 ) , .copyOf ( 변수, 길이)
System.arraycopy
int [] source = { 1,2,3,4,5,6 };
int [] destination = { 10,9,8,7,6,5,4,3,2,1 };
System.arraycopy( source, 0, destination, 0, source.length );
①배열source[0]부터, ③destination[0]에 넣는다, ②source의 길이만큼
main(String [] args) 함수에서의 배열 사용
-자바 어플리케이션이 실행될때, JVM은 String배열을 만들어서 main함수의 파라미터에 전달가능.
//java ArrayTest 7 aa bb cc
//ArrayTest7.java파일 오른쪽 클릭->Run as->Run Configurations...
//ArrayTest7.java 클릭->Argument->ProgramAruments
//->aa bb cc dd->적용하고 닫기
//4개의 문자열을 받아서 출력하면 나옴
■ 이차원 배열 ArrayTest8.java
┌ 이차원배열-정방형 ┐
이 코드가 있으면 비정방향 배열이어도 알 수 있음
그니까 꼭 외워야함
ArrayTest9.java
┌ 이차원배열-비정방형 ┐
'Govern > Eclipse SE -설치,문장,배열' 카테고리의 다른 글
07-16(금) static / 싱글톤 (0) | 2021.07.16 |
---|---|
07-15(목) 지정자 생성자 매개변수 (0) | 2021.07.15 |
07-13(화) for문,break,continue (0) | 2021.07.13 |
07-12(월) 문장 (0) | 2021.07.12 |
07-09(금) 형변환 연산자_valueOf,parseInt,전치후치,&& (0) | 2021.07.09 |