지금까지 우리가 배웠던 배열은 고정배열이다. 고정배열이라 함은 처음부터 배열의 크기가 정해져 있는 배열을 의미한다.
그리고 이번 게시글에서는 JAVA 자바의 동적 배열에 대해 기록하여보자.
JAVA 자바의 동적 배열은 배열에 값을 저장하면 자동으로 크기가 늘어나는 배열을 의미한다.
즉 만약 고정배열을 사용할경우 int su = new int[3];이라 하면 값을 3가지만 입력을 할수가있는데 동적배열은 배열의 수에 상관없이 입력을 할수가있는것이다. 데이터가 늘어난다면 다시 지웠다가 다시 생성할 필요없이 임의대로 늘어나는 배열을 의미한다.
우리가 항상 마주치는 동적배열은 아래와 같은 배열이기도 하다.
아래와 같이 수정을 하여도 전혀 상관이 없다.
이렇게 우리는 확인 할수가 있다. 동적 배열이 main 메소드에서도 사용이 되고 있다는것을.
값을 이렇게 넣어도 전혀 문제가 되지않는다. 계속 배열의 값이 늘어나고 동적 배열이기때문에 무한대로 만들어 낼수가 있다.
하지만 값을 선언 하였다고하여 바로 호출을 하게되면 아래와 같은 에러 메시지가 호출이된다.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at j0718.ArrayDynamic.main(ArrayDynamic.java:7)
이렇게 에러가 나오는 이유는 선언은 했으나, 선언된 동적 배열안에 어떠한 값도 입력이 되지 않았기때문에 오류가 나는것이다. 그렇다면 값은 어떻게 입력을 해야하는가?
Program Arguments 상자 안에 입력 하고싶은 값을 띄어 쓰기를 구분으로 데이터 값을 순서에 맞게 입력해주면된다.
그리고 Apply를 누른후 Run 키를 클릭, 값은 입력이 되고 호출구문을 다시 재실행 하여 결과를 확인할 수 가있다.
추가 적인 예제로 str~ str3 까지의 합계를 구하여 sum = 60으로 출력을 하고싶다면 어떻게 해야할까?
일반적인 형변환 방식으로는 에러가 발생한다. 그러한 이유는, String str = x [0]; 에서의 String 은 기본형이 아닌 참조형으로 (int)(변수이름)으로 형변환이 되지않는다. 즉 우리는 새로운 형변환 방법을 알아보는것이 좋다.
우리는 API 를 통해 형변환 메소드를 찾아보아야 한다. 메소드를 찾을땐 위 사진을 참고하면 된다.
1. java.lang 패키지를 기본으로 찾아본다. 이것은 가장 기본적인 프로그램 작성에 관련된 메소드이고 우리는 String (문자열)을 Integer(정수)로 바꿔주는 메소드를 찾아야한다.
2. 찾고자 하는 메소드의 성격을 파악한다. 매개변수가 필요한지의 여부 그리고 갯수, 자료형 및 반환형의 유무가 고려대상이고 Integer에서 매개변수(문자열), 반환형은 정수인 값을 찾아라.
3. 찾고자하는 메소드가 맞다면 일반, 정적메소드인지 파악한다.
만약 정적 메소드라면
int 결과값 = 클래스명.정적메소드명(~)
10 = Integer.parseInt("10") <==자바스크립트일때엔 parseInt("10"), Number("10")
일반 메소드라면
int 결과값 = 객체명.일반메소드명(~)
으로 문자열은 숫자값으로 변환을 한다.
추가적으로
문자열을 입력 => next() => 단어중심으로 문자열을 입력 받을때 사용
문자열을 입력2 => nextLine() => 홍길동 테스트 => 공백인식 O, 한문장을 불러올때 사용한다.
그렇다면 숫자열을 문자열로 만드는 구문은 무엇일까?
숫자열을 문자열로 만드는 기법 ==> String.parse(변수명)
댓글