Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 리눅스계열
- jmx
- 유니캐스트
- name=springapplication
- 백준1946
- 포트포워딩
- 리눅스환경
- 포트포워딩 안될때
- 페이로드
- 백준
- 배열최소값최대값
- springboot
- wan
- 브로드캐스트
- 디비버
- 배열복사
- ubuntu
- javax.management.instancenotfoundexception: org.springframework.boot:type=admin
- dbeaver
- 도커
- 우분투
- 네트워크모델
- 배열빈도수
- docker
- instancenotfoundexception
- SpringApplication
- 오름차순
- Decapsulation
- 도커권한설정
- 모래시계출력
Archives
- Today
- Total
다잘하고싶어
자바 배열 본문
목차
자료구조
배열
선언
생성과 초기화
반복문
배열복사
최대값, 최소값
빈도수
다차원배열
자료구조 Data Structure
- 어떻게 자료들을 저장하고, 효율적으로 접근, 수정할 것인가?
- 대표적 예시 → 배열Array, 연결리스트List, 스택Stack, 큐Queue, 맵Map, 트리Tree, 그래프Graph
배열
배열이 왜 필요할까?
- 반복문 사용 시 유용
배열이란?
- 같은 종류의 데이터를 저장하기 위한 자료구조
- 크기 고정 ( 한 번 생성된 배열은 크기를 바꿀 수 없음)
- 배열을 객체로 취급( 참조형 )
- 배열의 요소를 참조하려면 배열이름과 인덱스(정수값, 0부터 시작)을 조합하여 사용
- 배열이름.length 메서드를 사용해서 길이 조회 가능
- 길이 변경 필요 시 새로운 배열을 생성 후 내용을 옮기기
⇒ 배열은 주소값을 참조한다.
배열의 선언
- 배열은 기본형과 참조형 모두 만들 수 있다.
형식
- 타입 [ ] 변수 (권장)
- 타입 변수 [ ]
생성과 초기화
형식
- 자료형 [ ] 배열이름 = new 자료형 [ 길이 ] ; ⇒ 배열 생성( 자료형의 초기값으로 초기화)
- 자료형 [ ] 배열이름 = new 자료형 [ ] {값1, 값2, 값3 …}; ⇒ 배열 생성 및 값 초기화
- 자료형 [ ] 배열이름 = {값1, 값2, 값3 …}; ⇒ 선언과 동시에 초기화
자료형 별 기본값
자료형 | 기본값 |
boolean | false |
char | “\u0000” (공백문자) |
byte, short, int | 0 |
long, float | 0L, 0.0f |
double | 0.0 |
참조형 변수 | null ( 아무것도 참조x) |
public static void main(String[] args) {
int [] arr3 = new int [3]; //int 형의 경우 0으로 초기화
int [] arr4 = new int [] {1,2,3,4,5}; //원하는 값으로 초기화 할 때, 나눠쓸 수 있음
int [] arr5 = {1,2,3,4,5}; //반드시 한 줄에 써줘야 함
}
배열을 활용한 반복문
- for - each
- for
int intArray [] = { 1,3,5,7,9};
//배열의 모든 요소가 필요할 때
for(int x : intArray){
System.out.println( x ) ;
}
//배열의 일부만 필요할 때
// 인덱스 활용 가능, 뒤에서부터도 가능
for(int i=0; i<intArray.length; i++){
int x = intArray[i];
System.out.println( x ) ;
}
Arrays.toString( 배열 이름)
⇒ 배열 형식으로 변수값을 출력해줌.
평균계산 예제
//평균 계산
int sum = 0 ;
for (int num : scores) {
sum += num;
}
System.out.println(sum / 5);
배열의 복사
→ Arrays.copyOf( 복사할 배열이름, 새로 생성할 배열의 길이)
public class Test04 {
public static void main(String[] args) {
int [] scores = new int [] { 29,45,61,87,65};
int [] newScores = new int [10];
for (int i = 0; i < scores.length; i++) {
newScores[i] = scores[i];
}
System.out.println(Arrays.toString(newScores));
}
}
=> [29, 45, 61, 87, 65, 0, 0, 0, 0, 0]
------------------------------------
public class Test04 {
public static void main(String[] args) {
int [] scores = new int [] { 29,45,61,87,65};
int [] newScores2 = Arrays.copyOf(scores, 10);
System.out.println(Arrays.toString(newScores2));
}
}
=> [29, 45, 61, 87, 65, 0, 0, 0, 0, 0]
최대값, 최소값 찾기
- 첫 번째 원소를 최소값 or 최대값으로 설정하고 하나씩 비교
- 임의의 큰수 또는 작은 수를 최대값, 최소값으로 설정하고 하나씩 비교
- 임의의 큰 수 ⇒ Integer.MAX_VALUE == 약 21억
- 임의의 작은 수 ⇒ Integer.MIN_VALUE == 약 - 21억
빈도수 구하기
- 각 배열의 인덱스에 해당하는 값의 개수 넣기
카운팅 배열
- 0부터 9까지의 수만 들어간다고 가정 → 카운팅 배열의 크기 10 설정
- 최대값보다 1 더 큰 크기로 배열 만들어줘야 함.
- 로직 : count[num] ⇒ count 의 인덱스에 있는 값 == num 의 개수
public class Test05 {
public static void main(String[] args) {
int [] intArr = { 3,3,1,5,5,8,4,9,9,7,5,6,4,3,5,2};
int [] count = new int [10];
(1)
for (int num : intArr) {
count[num]++;
}
System.out.println(Arrays.toString(count));
(2)
for (int i = 0; i < intArr.length; i++) {
count[intArr[i]]++;
}
System.out.println(Arrays.toString(count));
}
}
결과 : [0, 1, 1, 3, 2, 4, 1, 1, 1, 2]
결과 : [0, 1, 1, 3, 2, 4, 1, 1, 1, 2]
다차원배열
정의
- 2차원 이상의 배열 의미
- 배열의 요소로 또 다른 배열을 가짐
- 2차원 배열은 배열요소로 1차원 배열의 참조를 가짐
- 3차원 배열은 배열요소로 2차원 배열의 참조를 가짐
선언
- int [][] iArr ( 권장 )
- int iArr [][]
- int [] iArr []
생성
- 배열의 이름 = new 배열유형 [1차원 배열 개수][ 1차원 배열 크기];
- 배열의 이름 = new 배열유형 [1차원 배열 개수][ ];
ex. 2차원배열 int scores[][] → 1차원 배열의 주소값을 원소로 갖는 배열
public class Test06 {
public static void main(String[] args) {
int [][] Arr = new int [3][4];
for (int i = 0; i < Arr.length; i++) {
for (int j = 0; j < Arr[0].length; j++) {
System.out.printf("%4d", Arr[i][j]);
}System.out.println();
}
}
}
결과
0 0 0 0
0 0 0 0
0 0 0 0
- 서로 다른 배열크기를 가지는 다차원 배열
public class Test06 {
public static void main(String[] args) {
//서로다른 배열 크기를 가지는 다차원 배열
int [][] raggedArr = new int [3][];
raggedArr[0] = new int [3];
raggedArr[1] = new int [4];
raggedArr[2] = new int [5];
}
}
실습예제
- 순서대로 출력
public class Test07 {
public static void main(String[] args) {
int [][] arr = new int [4][4];
int cnt = 1;
for (int r = 0; r < arr.length; r++) {
for (int c = 0; c < arr[0].length; c++) {
arr[r][c] = cnt++;
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[0].length; j++) {
System.out.printf("%4d", arr[i][j]);
}System.out.println();
}
}
}
결과:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
'이론학습 > JAVA' 카테고리의 다른 글
클래스 다이어그램 아이콘 (0) | 2023.01.21 |
---|---|
자바 : JVM 메모리 구조 이해하기 (0) | 2023.01.19 |
자바 클래스와 객체(2) (0) | 2023.01.19 |
자바 클래스와 객체(1) (0) | 2023.01.18 |
자바기초 (0) | 2023.01.16 |