변수는 한개의 데이터만 저장할 수 있지만, 여러개의 데이터를 넣고 싶을 때는 어떻게 할까요???
우리가 알고 있는 방식으로 하면 하나의 변수당 하나씩 지정을 해줬다
하지만 여기서 이 변수들의 합을 알려면?
뭔가 힘들어하는 손가락의 향기가 나온다.
하지만, 배열을 배운 상태라면..
몇줄 안에 반복문을 같이 사용하여 같은 결과가 나오게 할 수 있다.
우선 배열을 사용하기 위해서는 배열 변수를 선언해야 한다.
데이터 타입 뒤나 변수명 뒤에 '[]' 를 표시 하게 되면 배열이 선언 된다.
배열에 데이터를 넣고 싶으면 {} 사이에 데이터 타입에 맞게 값을 넣어주면 된다.
배열을 선언하는 동시에 값을 넣어야지 위 처럼 빨간 에러가 뜨지 않는다.
만약에 배열을 선언하고 값을 넣고 싶으면 밑에 처럼 하면 된다
배열안에 값을 빼고 싶으면 밑에 와 같이 하면 된다.
사람들은 줄을 설때 1번, 2번, 3번 이런식으로 세지만
컴퓨터는 0번 1번 2번 으로 번호를 매긴다.
넣은 순서대로 names[0] - 철수, names[1] - 영희, names[2] - 바둑이 순으로 나온다.
배열에서 값의 데이터는 가지고 있지 않지만 몇개 까지 들어갈 수 있는지 지정 할 수 있다.
5라고 지정하게 되면 4까지 생성이된다. (0 ~ 4 까지 5개 )
int 배열이면 0으로 초기값이 되어있고 String 배열이면 초기값은 null로 잡혀있다.
배열안에 몇개가 들어 있는지 확인하기 위해서는 배열 변수에 .length 을 추가하면 된다.
배열 안에 있는 price 값을 모두 더하고 싶으면 위에서 소개 했던 방식 대로 반복문을 방식을 사용하면 된다.
합계를 지정해주는 sum이라는 변수에 price[0] ~ price[ 9] 까지 i < price.length 라는 조건을 주어 다 더해주는 방식이다.
다차원 배열
일차원 배열이 한줄(선 형태) 이면 다차원 배열은 (면 형태) 이다.
다차원 배열을 선언 하려면
이런식으로 [][] 을 두번을 써주고 두개를 넣어 줘야 한다.
[ ] - 첫번째꺼는 행(column)의 갯수 ( 가로의 갯수 )
[ ] - 두번째꺼는 열(row)의 갯수 ( 세로의 갯수 )를 나타낸다.
또다른 선언 방식은 길이를 선언하고 나중에 넣는 방식인데 꼭 [][] 이있으면 첫번째 [ ] 에는 길이를 넣어줘야 한다.
[0] 은 가로의 갯수 즉, 행의 갯수이고 [1]은 세로의 갯수이다.
세번째 방식으로는 값을 넣어주는 방식이다.
example[0] = { 18, 20 } 이 들어가고 example[1] = { 20, 30} 이 들어 가게 된다.
값을 꺼내는 방식도 배열에서 몇번째를 꺼내는지 [][] 를 두번써줘야 되며
length 도 [] 몇번째 (가로인지 세로인지) 를 알려줘야 길이를 출력 할수 있게 된다.
여기서 잠깐,
new 를 사용할 경우 int(기본형) 에서는 비교를 하면 1 == 1 를 하면 참 값이 나오지만
String(참조) 로 비교를 하면 거짓이 나온다.
기본 타입인 ( byte, char, short, int, long, float, double, boolean ) 은 직접 값이 있어 비교해도 같은 값 이지만
String 같은 참조타입은 값이 번지에 있기 때문에 번지 값이 달라 거짓을 내놓는다.
번지를 제외하고 값만 비교 하고 싶은면?
이런식으로 뒤에 equals 를 붙여서 비교를 하면 된다.
그리고 배열을 복사할 떄 깊은 복사 , 얕은 복사 가 있다.
둘의 차이 점은 깊은 복사는 원본이 값이 바뀌거나 복사한 값이 변해도 값이 변하지 않지만
얕은 복사는 둘중 어느값이라도 변하면 그 값도 변한다.
배열.clone 이나 System.arraycopy 가 깊은 복사이다.
배열 = 배열 은 얕은 복사에 해당이 된다.
위에 예제에 copyexample 의 값을 변경하면 example 값도 같이 바뀌게 된다.
깊은 복사도 다차원 배열 을 전체를 복사하려고 하면 안되므로
반복문을 통해 하나하나씩 복사를 한다.
'프로그래밍 > 자바(java)' 카테고리의 다른 글
[자바/java] 클래스(class) 접근제한자, 오버라이딩, 상속 (0) | 2020.04.11 |
---|---|
[자바/java] 클래스(class) 필드, 생성자, 메소드,오버로딩 (0) | 2020.04.11 |
[자바/java] 반복문(for문, while문, do while문) (0) | 2020.04.11 |
[자바/java] 조건문 (if문, while문) (0) | 2020.04.10 |
[자바/java] 연산자 (논리 연산자, 산술 연산자, 삼항연산자) (0) | 2020.04.10 |