변수는 하나의 값을 저장하는 공간이라고 했다.
하지만 하나 하나 저장해서 쓰기엔 값이 많을 땐 번거로움이 있다.
데이터 저장소는 발전한다.
배열
같은 타입의 데이터들을 모아서(묶음) 저장한다.
각 데이터마다 인덱스(번호)를 붙여서 관리하며, 인덱스는 0부터 시작한다.
타입[] 배열이름 = new 타입[개수];
타입 배열이름[] = new 타입[개수];
두가지 모두 사용 가능하다.
배열이름[0] = 10; -> 배열의 0번 인덱스에 10이라는 값을 저장한다.
* 타입[] 배열이름 = { 값1, 값2, 값3, ... }; -> 선언과 인덱스 저장을 한번에 할 수도 있다.
단, 이렇게 사용하려면 한번에 사용해야한다.
타입[] 배열이름;
배열이름 = { 값1, 값2, 값3, ... }; //error
학생 3명의 점수를 받아 총점을 구하는 메서드를 작성해보자.
배열을 사용하지 않는다면
public int sum ( int a, int b, int c ){
return a+b+c;
}
사용시 : 참조변수.sum(10,20,30);
배열을 사용한다면
1.
int[] point = new int[3]; -> 배열 객체를 생성, 값을 지정하지 않았기에 기본값으로 초기화된다.
point[0] = 10;
point[1] = 20;
point[2] = 30;
2.
int[] point = {10,20,30}
1 or 2 의 방법으로 배열을 만든 뒤
public int sum(int[] point){
for(int i = 0; i < point.length; i++){
sum += point[i];
}
}
* .length : 해당 값의 크기를 알려준다.
이렇게 보면 배열을 사용하지 않는게 더 간단하지않나 ? .. 라는 생각이 들 수 도있지만
학생이 100명이라면..? 1000명이라면 .. ?
배열 복사
System.arraycopy(배열1, 시작인덱스, 배열2, 시작인덱스, 복사할개수)
System.arraycopy(arr1, 0, arr2, 3, 5);
-> arr1배열의 0번 인덱스부터 복사해서
arr2배열의 3번 인덱스부터 5개 저장한다.
아래 console창에 보면 배열 순서대로 3번 인덱스부터 5개 값이 복사된걸 확인할 수 있다.
Arrays.copyOf() : 배열 전체 복사
Arrays.copyOfRange() : 배열의 일부를 복사해 새로운 배열을 만든다.
다차원 배열
2차원 이상의 배열을 말한다. 왠만하면 2차원까지만 사용한다고한다.
int[][] score = {{100,100,100},
{50,50,50},
{30,30,30},
{40,40,40}};
* Arrays.sort(배열이름);
배열의 값들을 오름차순으로 정렬해줌
* Arrays.toString(arr);
배열의 값들을 문자열로 바꿔줌
* 랜덤값(난수) 생성
(int)(Math.random()*범위)+시작값 -> 공식처럼 사용한다.
원리를 굳이 보자면..
Math.random() : 0.0 ~ 1.0 -> 실제는 0.0 ~ 0.999999...인 double타입이다.
Math.random() * 범위 : (0.0 ~ 1.0) * 범위
예를들어 범위를 10이라고하면
Math.random() * 10 : (0.0 ~ 1.0) * 10 => 0.0 ~ 10.0 -> 실제는 0.0 ~ 9.9999999...
int로 명시한다.
(int)Math.random() * 범위 : (0.0 ~ 1.0) * 범위
(int)Math.random() * 10 : (int)(0.0 ~ 1.0) * 10 -> (int)(0.0 ~ 9.9999999...) -> 0 ~ 9 와 같아진다.
(int)Math.random() * 범위 + 시작값 : (0.0 ~ 1.0) * 범위 + 시작값
(int)Math.random() * 10 + 1 -> (0 ~ 9) + 1 -> 1 ~ 10 사이의 랜덤 값을 가져온다.
'JAVA' 카테고리의 다른 글
Java final, 추상(abstract)메서드, interface (0) | 2021.12.06 |
---|---|
Java 상속, 오버라이딩, 업캐스팅, 다운캐스팅, Object클래스 (0) | 2021.12.02 |
Java 오버로딩, 접근제어자, 캡슐화, 싱글턴 (0) | 2021.11.30 |
Java 객체 지향 프로그래밍 / 변수, 메서드, 생성자의 선언과 사용 (0) | 2021.11.29 |
Java Scanner,출력문,조건문, 반복문 (0) | 2021.11.25 |