쌍용 강북 교육센터 국비학원 Day 9일차
배열 (Array)
배열이란?
동일한 데이터타입을 가지는 여러개의 데이터를 저장할 수 있는 데이터 타입을 말한다. 그리고 배열 또한 객체라는 것을 꼭 기억하도록 하자
1. 배열의 선언 - ex) int [ ] Arr ; or int Arr [ ] ;
2. 선언되어진 배열을 메모리에 할당을 해준다.
배열의 인덱스는 0부터 1씩 증가한다. 배열의 저장된 데이터를 표현할때는 배열명 [인덱스번호] 로 나타낸다.
배열로 선언된 변수에는 자동적으로 초기값이 들어간다. 정수는 0, 실수는 0.0, char는 ' ', String 을 포함한 객체는 null 이 들어간다.
3. 선언된 배열에 값 넣어주기
new int [ ] 은 생략 가능하다.
for each 문 ( 확장된 for 문이라고도 한다)
for ( 데이터타입 + 지역변수명 : 배열이나 컨테이너 값 ) { 반복 실행문 }
배열의 길이만큼 배열의 인덱스 값을 순차적으로 요소 값(변수) 에 전달 한다.
for each 문은 따로 반복회수를 명시적으로 주는 것이 불가능하고, 1스탭씩 순차적으로 반복할때만 사용가능하다는 제약이 있다.
가변인자 ( 가변 파라미터, 파라미터 가변인수 사용하기 )
메소드의 파라미터를 오버로딩을 해도 되지만 단순히 파라미터만 가변일 경우 ... ( 변수명 ) 을 이용해서 정해진 개수만큼 받지않고 가변적으로 여러개 받을 수 있다. 가변인자는 내부적으로 배열을 생성해서 사용하기 때문에 배열이라고 생각하고 사용한다.
가변인자를 오버로딩해서 사용할 때, 컴파일러는 어떤 메소드를 사용 해야하는지 구분을 못한다. 그러므로 컴파일 에러가 난다. 가능하면 가변인자를 사용한 메소드는 오버로딩을하지 않는 것이 좋다.
숫자를 입력했을때 긴 숫자는 구분하기 쉽게 000,000,000 처럼 중간중간에 콤마를 추가해주는 프로그램이다.
입력값을 캐릭터 배열에 담고 그 배열에 추가될 콤마 갯수만큼의 추가된 빈 배열을 선언 후 그 배열의 뒤에서부터 인덱스가 4의 배수일때마다 컴마를 추가하는 코드이다. 인덱스 값을 뒤에서부터 읽어와서 변경해주는 로직이 머릿속으로만 생각해서 이해하다 보니까 조금 복잡하고 이해하기가 어려웠다.
위같은 코드를 라이브러리로 사용해 다르게 작성한 코드이다. 이렇게만 보니 정말 깔끔하고 가독성이 좋아졌다. 다만 저 라이브러리를 사용하려고해도 이해하고 알고있어야 사용하겠지....? 라이브러리를 만드시는 분들은 정말 천재가 아닐까 ... 생각이 든다.
로또번호 출력하는 프로그램
설명 전 내가 만들어본 코드이다. 단순히 랜덤 메소드로 배열 6개 담아 출력하면 되는줄 알았는데 하나 놓치고 있던게 있었다. 같은 번호가 나올수도 있다는거다. 그 경우의 수를 다시 반복 해야하는 로직을 추가 해야한다.
for문 안에서 랜덤한 값을 idx에 넣고 idx를 중복을 체크하는 배열에 담아 그 값이 중복 됐을경우 반복문을 증감시키지 않고 다시 반복하게 만드는 로직. 점점 로직이 복잡해지고 많아지니 뭐가 뭔지도 이해하기 어려워진다. 오늘은 여기까지.
'Java' 카테고리의 다른 글
쌍용강북교육센터 국비 학원 Day 11일차 Java (String 클래스) (0) | 2023.01.16 |
---|---|
쌍용강북교육센터 국비 학원 Day 10일차 Java (회원관리 프로그램, 2차원 배열) (0) | 2023.01.13 |
쌍용강북교육센터 국비 학원 Day 8일차 Java (조건문, 반복문 문제 Quiz) (0) | 2023.01.12 |
쌍용강북교육센터 국비 학원 Day 7일차 Java (다중 for문, label, while, do while) (0) | 2023.01.10 |
쌍용강북교육센터 국비 학원 Day 6일차 Java (equals, for문) (0) | 2023.01.09 |