day5 지금까지 배운 내용 정리 및 배열(선언, 초기화, 복사, 카피, 랜덤 초기화)
2023. 12. 14. 13:36ㆍ자바 기초 및 세팅
변수
- 변수를 선언할 수 있다.
연산자
- 연산자 종류를 알고 결과를 예측할 수 있다.
int score = 100;
score < 90 && score
조건문
- 조건문 종류를 알고, 조건문을 사용 할 수 있다.
~하면 ...한다.
반복문
- 규칙적인 작업을 반복적으로 할 때 반복문을 사용할 수 있다.
배열이란?
자료형이 같은 변수들을 모아 놓은 것.
사용하는 이유?
- 관리가 편하다. 변수 100개 관리하는 것보다 크기가 100인 배열 1개를 관리하는게 편하다.
- 반복문을 이용하여 코드를 효율적으로 작업할 수 있다.
- 연속된 공간에 할당하기 때문에 탐색이 빠르다.
배열선언과 초기화
배열 선언
- 자료형[] 배열명 = new 자료형[개수];
- 자료형 배열명[] = new 자료형[개수];
배열 초기화
- 다양한 방법이 있는데 잘 사용 안함.
- 배열을 생성하면 따로 초기화를 하지 않아도 자료형에 맞게 초기화 됨(멤버변수처럼)
배열 사용하기
배열명[번지]를 이용하여 변수처럼 사용
번지는 0번지부터 배열의크기 - 1번지까지 사용 가능
잘못된 번지를 입력하면 ArrayIndexOutOfBounds 예외 발생
배열의 길이
배열명.length로 배열의 크기를 알 수 있음.
배열의 크기는 생성된 배열의 전체 크기이지 유효한 값이 들어있는 개수가 아님.
배열 예제 1
package day05;
import java.util.Scanner;
public class ArrayEx1 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 배열을 안쓸때
int kor1, kor2, kor3, kor4, kor5;
kor1 = scan.nextInt();
kor2 = scan.nextInt();
kor3 = scan.nextInt();
kor4 = scan.nextInt();
kor5 = scan.nextInt();
// 아래 반복문은 변수명에 숫자가 들어가서 i로
// for (int i =0; i <=4; i++) {
// kori = scan.nextInt();
// }
/*
* 학생 5명의 국어 성적을 저장하기 위한 배열
* */
int[] korScores = new int[5];
// korScores[0] = scan.nextInt();
// korScores[1] = scan.nextInt();
// korScores[2] = scan.nextInt();
// korScores[3] = scan.nextInt();
// korScores[4] = scan.nextInt();
for (int i =0; i <=4; i++) {
System.out.println("학생" + (i + 1) + " 성적 : ");
korScores[i] = scan.nextInt();
}
for (int i =0; i <=4; i++) {
System.out.println("학생" + (i + 1) + " 성적 : " + korScores [i]);
korScores[i] = scan.nextInt();
}
}
}
배열의 길이
배열명.length로 배열의 크기를 알 수 있음.
배열의 크기는 생성된 배열의 전체 크기이지 유효한 값이 들어있는 개수가 아님.
배열 예제 2
package day05;
import java.util.Scanner;
public class ArrayScoreEx1 {
public static void main(String[] args) {
/*
* 학생 5명의 국어 성적을 입력 받고, 총점과 평균을 구하는 평균을 구하는 코드를 작성하시오
* */
Scanner scan = new Scanner(System.in);
int[] korScores = new int[5];
int sum = 0;
for (int i = 0; i < 5; i++) {
System.out.print("학생 " + (i+1) + "의 점수 입력 : ");
korScores[i] = scan.nextInt();
sum +=korScores[i];
}
double avg = (double)sum / korScores.length;
System.out.println("학생 5명의 총점 : " + sum + "평균 : " + avg);
}
}
배열 복사하기
1. 반복문을 이용하여 직접 복사
2. System.arraycopy(src, srcPos, dest, destPos, length)를 이용하여 복사
- 얕은 복사
배열 초기화 예제
package day05;
public class ArrayInitEx1 {
public static void main(String[] args) {
/*
*
* */
// arr1배열에는 0부터 4번까지 0으로 초기화가 됨
// char는 \0, 정수는 0, 실수는 0.0, boolean는 false
int arr1[] = new int[5];
//arr2는 0번지에1, 1번지에 2, 2번지에 3, ...4번지에 5가 저장
int arr2[] = new int[] {1, 2, 3, 4, 5};
// arr2와 같음
int arr3[] = {1, 2, 3, 4,5};
//arr3 = {1, 2, 3, 4, 5}// 에러가 발생
}
}
배열 카피예제
package day05;
import java.awt.SystemColor;
public class ArrayCopyEx1 {
public static void main(String[] args) {
// 배열 복사 예제
int arr1 [] = new int[] {1, 2, 3, 4, 5};
int arr2 [] = arr1;
int arr3 [] = new int [arr1.length];
int arr4 [] = new int [arr1.length];
// 반복문을 이용하여 arr1에 있는 값들을 arr3에 복사
for(int i = 0; i < arr1.length; i++) {
arr3[i] = arr1[i];
}
//System.arraycopy를 이용하여 arr1을 arr4에 전체 복사
System.arraycopy(arr1, 0, arr4, 0, arr1.length);
//arr2의 0번지 내용이 10으로 출력되는걸 확인
for(int i = 0; i < 5; i++) {
System.out.print("arr2확인 : "+arr2[i]+"\n");
}
//arr3의 내용을 확인
for(int i = 0; i < 5; i++) {
System.out.print("arr3확인 : " + arr3[i]);
}
System.out.println("\n arr4 확인 : ");
for(int i = 0; i < 5; i++) {
System.out.print( arr4[i] + " ");
}
int arr5[] = new int [arr1.length];
//arr1배얄에 1번지부터 2개를 복사해서 arr5배열에 0번지부터 덮어씀
System.arraycopy(arr1, 1, arr5, 0, 2);
System.out.println("\n arr5 확인 : ");
for(int i = 0; i < 5; i++) {
System.out.print( arr5[i] + " ");
}
}
}
배열 정렬 예제
package day05;
import java.util.Arrays;
public class ArraySortEx1 {
public static void main(String[] args) {
/*
* 배열 정렬 방법
* */
//정렬 안된 배열 생성
int arr[] = new int[] {1, 3, 5, 7, 2, 4, 6, 8};
/*버블 정렬
// 옆에 인접 한 값들을 비교하여 정렬하는 방식
// 1 3 5 7 2 4 6 8
* 1 3 5 2 4 6 7 8
* 1 3 2 4 5 6 7 [8]
* 1 2 3 4 5 6 [7 8]
* */
for(int i = 0; i < arr.length - 1; i++) {
for(int j = 0; j<arr.length - 1; j++) {
if(arr[j] > arr[j+1]) {
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
int arr2[] = {1, 3, 5, 7, 9, 2, 4, 6, 8};
// 오름차순으로 정렬
Arrays.sort(arr2);
for(int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i] + " ");
}
System.out.println();
}
}
'자바 기초 및 세팅' 카테고리의 다른 글
day06 : day02 ~ day05응용 예제 (2) | 2023.12.18 |
---|---|
day5 배열 예제 및 로또문제 (0) | 2023.12.14 |
day4 반복문, do-while (0) | 2023.12.14 |
day4 별찍기, (0) | 2023.12.13 |
Day04 이중 반복문, 공약수, 공배수, 최대 공약수, 최소 공배수 (0) | 2023.12.13 |