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 | 31 |
Tags
- 자바실행방법
- 자바기타제어자
- 자바접근지정자
- 클래스배열
- 자바클래스
- 기타제어자
- 누승재귀
- 변수의 초기화
- 자바상수
- 자바제어문
- 팩토리얼재귀
- 자바수우미양가
- 겟셋함수
- 자바함수
- 오버로딩
- 오라클
- 중첩for문
- 자바별찍기
- 효율적인연산
- read()함수
- 자바switch문
- 프로그래머스
- SQL
- 변수명명규칙
- 자바if문
- 연산자우선순위
- 반복문라벨
- 자바형식
- 자바연산자
- 자바자료형
Archives
- Today
- Total
h-i-s-t-o-r-y
[Java] 배열(Array) 본문
> 배열(Array) ?
1. 동일한 자료형 + 메모리 상에 연속적으로 놓이게 한 것
2. 선언 형식 : 자료형 [] 배열명 = new 자료형 [배열크기];
ex) 3명의 국어점수를 저장하고 싶다.
int[] kors = new int[3];
kors[0] = 97;
kors[1] = 65;
kors[2] = 80;
int len = kors.length; // 배열의 길이 = 3
for (int i = 0; i < len; i++) { // 배열 길이만큼 반복해라
System.out.println(kors[i]); // 배열 요소를 출력해라
}
> "배열 초기화"의 의미
// 1
String[] names = new String[3];
names[0] = "홍길동";
names[1] = "김길동";
names[2] = "이길동";
// 2
String[] names = new String[] {"홍길동", "김길동", "이길동"};
// 3
String[] names = {"홍길동", "김길동", "이길동"};
> (주의)
문자열 세 값을 배열에 초기화 -> names 배열 크기는 3..
// error: java.lang.ArrayIndexOutOfBoundsException: 3
names[3] = "박길동";
새로운 요소 할당하려 하면 배열에 방이 없다고 오류가 난다!
> 배열의 길이 변경하기 (방 늘리기)
package days11;
import java.io.IOException;
import java.util.Scanner;
public class Ex05 {
public static void main(String[] args) throws IOException {
// p.189 [배열의 길이 변경하기]
Scanner scanner = new Scanner(System.in);
int [] m = new int[3];
int idx = 0;
char con = 'y';
do {
System.out.printf("> [%d]번째 요소의 정수값 입력 ? ", idx);
// 방 다 찰때마다 3씩 늘리기
if (m.length == idx) {
int [] temp = new int [m.length+3];
/*
// 배열 복사하는 for문
for (int i = 0; i < m.length; i++) {
temp[i] = m[i];
}
*/
// *** 배열 복사 함수 System.arraycopy()
System.arraycopy(m, 0, temp, 0, m.length);
m = temp;
}
m[idx++] = scanner.nextInt();
System.out.print("\t> 계속 할거냐 ? ");
con = (char) System.in.read();
System.in.skip(System.in.available());
} while (Character.toUpperCase(con)=='Y');
System.out.println("=====");
for (int i = 0; i < m.length; i++) {
System.out.printf("> m[%d]=%d\n", i, m[i]);
}
}//main
}//class
> 다차원 배열
package days13;
import java.util.Arrays;
public class Ex02 {
public static void main(String[] args) {
// p.214 다차원 배열
// 1차원 배열 -열
// 2차원 배열 -행,열
// 3차원 배열 -면,행,열
// 4차원 배열 -권,면,행,열
// :
/*
int [] m = new int[8];
for (int i = 0; i < m.length; i++) {
System.out.printf("m[%d] = %d\t", i, m[i]);
}
*/
/*
// 2차원 배열 -행,열
// 2행 4열 2차원 배열 m이라고 부른다
int [][] m = new int[2][4];
// 4반 30명
int [] kors = new int[30];
int [] kors = new int[120]; //1차원
int [][] kors = new int[4][30]; //2차원
kors[0][0] ~ kors[3][29]
*/
// 3차원 배열 -면,행,열
// 2면 2행 2열 3차원 배열 m
int [][][] m = new int[2][2][2]; //int 기억공간 8개
}//main
}//class
package days13;
import java.util.Arrays;
public class Ex03 {
public static void main(String[] args) {
// 1차원 배열
/*
// 1차원 배열의 초기화
// int [] m = new int[8];
int [] m = new int[] {1,2,3,4,5};
// 1차원 배열의 배열크기 - 배열명.length
System.out.println(m.length);
// 1차원 배열의 윗첨자값(UpperBound) : 배열크기 -1
System.out.println(m.length - 1);
// 1차원 배열 출력
for (int i = 0; i < m.length; i++) {
System.out.printf("m[%d]=%d ", i, m[i]);
}
*/
// 2차원 배열
/*
// int [][] m = new int[4][2];
// 2차원 배열의 초기화
int [][] m = {{1,2}, {3,4}, {5,6}, {7,8}};
System.out.println(Arrays.deepToString(m));
// 2차원 배열의 크기
System.out.println(m.length); // 4 (행의 크기)
System.out.println(m[0].length); // 2 (0번째 행의 열 크기)
System.out.println(m[1].length); // 2 (1번째 행의 열 크기)
System.out.println(m[2].length); // 2 (2번째 행의 열 크기)
System.out.println(m[3].length); // 2 (3번째 행의 열 크기)
// ** 열은 행의 주소값을 참조 ?
// 2차원 배열 출력
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m[i].length; j++) {
System.out.printf("m[%d][%d]=%d ", i, j, m[i][j]);
}
System.out.println();
}
*/
// 3차원 배열
// int [][][] m = new int [2][3][4];
// 3차원 배열의 초기화
int [][][] m = { //2면 2행 4열
{//1면
{1,2,3,4},
{5,6,7,8}
},
{//2면
{9,10,11,12},
{13,14,15,16}
}
};
// 3차원 배열의 크기
System.out.println(m.length); // 2 (면의 크기)
System.out.println(m[0].length); // 3 (행의 크기)
System.out.println(m[0][0].length); // 4 (열의 크기)
// 3차원 배열 출력
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m[i].length; j++) {
for (int j2 = 0; j2 < m[i][j].length; j2++) {
System.out.printf("m[%d][%d][%d]=%d ",i,j,j2,m[i][j][j2]);
}
System.out.println();
}
System.out.println();
}
}//main
}//class
package days13;
public class Ex05 {
public static void main(String[] args) {
// p219 가변 배열
// 배열 크기 고정적이지 않고 유동적
// 30명 4반 학생의 국어점수
// 행:반(4) 열:학생수(30)
// int [][] kors = new int[4][30];
// 문제) 이런 경우에 '가변 배열'..
// 1반25 2반17 3반30 4반21
// int [] kors = new int[25+17+30+21]; //별로
// int [][] kors = new int[4][30]; //괜찮
int [][] kors = new int[4][];
kors[0] = new int[25];
kors[1] = new int[17];
kors[2] = new int[30];
kors[3] = new int[22];
for (int i = 0; i < kors.length; i++) {
for (int j = 0; j < kors[i].length; j++) {
System.out.printf("[ ]");
}
System.out.println();
}
}
}
'Java' 카테고리의 다른 글
[Java] 정규표현식 - String.matches(regex) / pattern, matcher (0) | 2021.07.13 |
---|---|
[Java] 함수(function) / 오버로딩(overloading) (0) | 2021.07.13 |
[Java] System.in.read() (0) | 2021.07.12 |
[Java] 별찍기 (0) | 2021.07.12 |
[Java] 구구단 (0) | 2021.07.12 |
Comments