월루를 꿈꾸는 대학생

CH5 배열 본문

Programing/Java

CH5 배열

하즈시 2021. 3. 12. 14:38
728x90

 

1. 배열 

 

1.1 배열이란?

 

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

 

** 서로 다른 타입의 변수로는 구성 X 

 

int [] score = new int[5];  // 5개의 int값을 저장할 수 있는 배열 생성 

 

- 배열은 각 저장공간이 연속적으로 배치되어 있다

 

 

1.2 배열의 선언과 생성 

 

https://core9090.tistory.com/63

 

타입 변수이름 [] ;

변수이름 = new 타입[길이];

 

-> int score[] = new int[5];

 

1) int 형 배열 참조변수 score를 선언 

2) 연산자 new에 의해 메모리의 빈 공간에 5개의 int형 데이터 저장할 공간 생성 

3) 배열요소는 자동적으로 int의 default값인 0으로 초기화

4) 연산자 = 에 의해서 배열의 주소가 int형 배열 참조변수 score에 저장 

 

https://slidesplayer.org/slide/14789172/

1.3 배열의 길이와 인덱스 

- 배열의 요소 : 배열의 각 저장공간 

- 인덱스 : 배열의 요소마다 붙여진 일련번호 

 

인덱스의 범위는 0부터 '배열길이 -1'까지 

 

** 배열의 길이가 5일 때 index를 5 사용하면 에러 

 

배열의 길이 

- 배열의 길이는 int범위의 양의정수 ( 0도 포함) 이다

 

배열이름.length

- 배열이름.length를 통해 배열 길이에 대한 정보를 획득

 

** 조건식이나 반복문에 사용시 배열의 길이를 직접 사용하기 보단 배열이름.length라는 걸 통해 배열의 길이가 변경되어도 자동적으로 변경된 배열의 길이를 사용하도록 하는 것이 좋다 

 

 

1.4 배열의 초기화

 

- 배열은 선언시 default 값으로 초기화 되기에 각 배열의 원소에 값을 넣어줘야한다 

 

https://slidesplayer.org/slide/14789172/

 

배열의 출력 

 

-Arrays.toString(배열이름)

배열의 모든 요소를 출력형식과 같이 문자열로 만들어 반환

 

 

참조변수 arr을 출력시 타입@주소 형식으로 나타남

 

 

1.5 배열의 복사

- 배열을 한 번 생성하면 그 길이를 변경할 수가 없다

- 즉 큰 배열을 새로 만들고 기존의 배열을 복사하는 방법

 

기존의 arr는 참조변수가 더 이상 참조하지 않기에 나중에 삭제되고

결국 크기가 10인 배열만 참조변수 arr, temp가 가리키게 됨 

 

 

 

System.arraycopy() 를 이용한 배열 복사 

 

- for문을 통한 복사는 배열 하나하나 접근해서 복사이지만 arraycopy()sms 지정된 범위 값들을 통째로 복사

 

즉 배열의 복사는 for문 보다 System.arraycopy()가 효율적 

 

for(int i=0 ; i <num.length ; i++ ) 
	{
    	newNum[i] = num[i];
	}
    
System.arraycopy( num, 0 , newNum, 0, num.length );

-> num[0]에서 newNum[0]으로 num.length개의 데이터를 복사 

 

 

1.6 배열의 활용 

 

총합과 평균

최대값과 최소값

섞기

임의의 값으로 배열 채우기

정렬하기

빈도수 구하기 

 

 

임의의 값으로 배열 채우기 

 

 

정렬하기 

 

 

 

* 참조변수.charAt(숫자) == ' 문자' -> 문자열에서 해당 숫자에 대응 하는 문자를 추출

 

* 배열로 조건 만들 때 숫자가 0부터 시작하기 때문에 -1 하는 거 잊지 않기

 

* public static void main ( String[] args )

-> str = args[0] ->  실행시 java 이름 여기서부터 문자열이 배정 ∨

-> str = args[1] ->  실행시 java 이름 [a] [1] 두번째 단어 주소가 배정 

 

 

 

2. String 배열 

 

2.1 String 배열의 선언과 생성 

 

String [] name = new String[3];
// 3개의 문자열 담을 수 있는 배열 생성 

* 해당 string 배열은 default 값이 null 

 

https://hunit.tistory.com/154

 

 

String 배열은 실제 객체가 아닌 객체의 주소가 배열에 저장되어 있다 

 

https://jjunji.tistory.com/29

 


2.3  char 배열과 String 클래스 

- String 클래스가 char 배열에 여러 기능을 추가하여 확장한 것 

 

즉 String 클래스는 char 배열에 기능 ( 메서드)를 추가한 것 

 

https://slidesplayer.org/slide/11513179/

 

 

 

 

2.4 커맨드 라인을 통해 입력받기 

 

- Scanner 클래스의 nextLine() 외에 입력받을 수 있는 방법 -> 커맨드라인 

- 프로그램 실행시 클래스 이름 뒤에 공백으로 문자를 구분하여 여러 개의 문자열을 프로그램에 전달 가능 

 

 

3. 다차원 배열 

- 2차원 이상의 배열 사용가능 

 

타입 [][] 변수이름 ;

int [][] score = new int[4][3];

https://m.blog.naver.com/ahn128/221363324922

2차원 배열의 인덱스 

 

https://kldp.org/node/161244

 

int [][] arr = {
					{1,2,3},
                      			{4,5,6}
				};

 

위와 같이 초기화 하는 것이 보기도 좋고 이해도 쉬움 

 

https://cremazer.github.io/java-Array/

 

 

3.3 가변 배열 

- 배열 마지막 차수의 길이를 지정하지 않고 추후 지정함으로써 고정이 아닌 유동적인 배열을 구성가능 

 

 

int [][] score = new int[5][];

score[0] = new int[3];
score[1] = new int[4];
score[2] = new int[2];
score[3] = new int[1];
score[4] = new int[7];

https://linuxism.ustd.ip.or.kr/941

 

 

 

728x90

'Programing > Java' 카테고리의 다른 글

ch 6-1 객체지향  (0) 2021.03.21
ch5 배열 백준 알고리즘  (0) 2021.03.13
ch 4 조건문과 반복문 _ 알고리즘  (0) 2021.03.07
ch4 조건문과 반복문  (0) 2021.03.07
연산자  (0) 2021.02.27