정적할당
import java.util.Arrays;
int[] arr = { 1, 2, 3, 4, 5 }; // 배열 초기화
// copyof :특정 길이 만큼 복사한 새 배열을 반환
int[] copyOfArr = Arrays.copyOf(arr, 5);
System.out.println(Arrays.toString(copyOfArr)); //[1, 2, 3, 4, 5]
-> 배열의 값을 문자열로 변환하여 출력할 수 있다.
// 배열의 선언
int[] arr1 = new int[10]; // 정수 10개를 저장하는 배열(10이 10개가 아님)
int[] arr2 = { 1, 2, 3, 4, 5 }; // 대괄호 : 개수, 중괄호 : 배열안의 값 // 초기값을 가지는 배열
copyOf(arr,copyArrayLength)
: 특정 길이만큼 복사한 새 배열을 반환copyOfRange(arr,sIdx,eIdx)
: 시작 인덱스부터 종료 인덱스 전까지의 부분을 지정하여 복사한 새 배열을 반환fill(arr,n)
: 배열의 모든 요소를 주어진 값으로 채움Arrays.fill(배열이름, 시작인덱스, 종료인덱스, 채워질 값)
sort(arr)
: 배열을 오름차순으로 정렬 (원본 배열도 변경된다)equals(arr1,arr2)
: 두 배열이 같은지 여부 확인(boolean)deepEquals(arr1,arr2)
: 단일 또는 다차원 배열인 두 배열이 같은지 비교(boolean)binarySearch(arr,idx)
: 특정값의 인덱스값을 이진탐색 알고리즘을 사용해서 찾기. 이때 해당위치가 반환됌 미리 정렬이 되어 있어야 이진탐색 알고리즘을 사용할 수 있다.
import java.util.Arrays;
public class ArraysMethod {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 }; // 배열 초기화
// 1. copyof :특정 길이 만큼 복사한 새 배열을 반환
int[] copyOfArr = Arrays.copyOf(arr, 5);
System.out.println(Arrays.toString(copyOfArr));
// 2. copyOfRange : 시작 인덱스부터 종료 인덱스 전까지의 부분을 복사한 새 배열을 반환
int[] copyOfRangeArr = Arrays.copyOfRange(arr, 1, 3); // [2,3]
System.out.println(Arrays.toString(copyOfRangeArr)); // [2, 3]
// 3. fill : 배열의 모든 요소를 주어진 값으로 채움
Arrays.fill(arr, 10); // 원본값이 달라짐
System.out.println(Arrays.toString(arr)); // [10, 10, 10, 10, 10]
// fill로 부분 요소 채움
int[] arr2 = new int[10]; //배열의 개수를 10개로 한정
arr2[0] = 1;
arr2[1] = 2;
arr2[2] = 3;
Arrays.fill(arr2, 3, arr2.length, 100); // (해당배열을, 3부터(시작),~까지, 이값으로 채운다)
System.out.println(Arrays.toString(arr2)); // [1, 2, 3, 100, 100, 100, 100, 100, 100, 100]
// sort : 배열을 오름차순으로 정렬
int[] arr3 = { 3, 7, 2, 8, 10 };
Arrays.sort(arr3);
System.out.println(Arrays.toString(arr3)); // [2, 3, 7, 8, 10]
// equals : 두 배열이 같은지 여부 확인
int[] arr4 = { 1, 2, 3, 4, 5 };
System.out.println(Arrays.equals(arr3, arr4)); // false
// deepEquals : 다차원 배열 비교
int[][] arrs1 = { { 1, 2 }, { 5, 6 } };
int[][] arrs2 = { { 5, 2 }, { 8, 9 } };
System.out.println(Arrays.deepEquals(arrs1, arrs2)); // false
// binarySearch : 특정값의 인덱스값 찾기, 항상 정렬이 되어 있어야함
int index = Arrays.binarySearch(arr3, 10); // (이 배열에, 이 값이 어디있는지? 찾아주는 메소)
System.out.println(index); // 4
}
}
동적할당
add(element)
: ArrayList 맨 뒤에 element 추가add(index,element)
: index 위치에 element 삽입addAll(ArrayList)
: ArrayList 뒤에 ArrayList 추가, 여러 요소 일괄적으로 추가size()
: ArrayList의 길이 리턴get(index)
: index에 해당하는 요소 리턴indexOf(params)
: params와 같은 첫 번째 요소의 index리턴, 없으면 -1리턴contains(params)
: ArrayList가 params를 포함하고 있는지 여부(boolean)remove(index)
: index의 요소 삭제isEmpty()
: 배열이 비어있는지 확인(boolean)set(index,element)
: 인덱스에 위치한 값을 교체clear()
: 모든 요소 삭제import java.util.ArrayList;
public class ArraysList {
public static void main(String[] args) {
// 동적 배열
ArrayList<String> list = new ArrayList<>();
// add : 요소 추가
list.add("Google");
list.add("Samsung");
list.add(1, "Amazon");
System.out.println(list); // [Google, Amazon, Samsung]
// addAll : 여러 요소 일괄적으로 추가
ArrayList<String> list2 = new ArrayList<>();
list2.add("Apple");
list2.add("Toss");
list.addAll(list2);
System.out.println(list); // [Google, Amazon, Samsung, Apple, Toss]
// size : 크기확인
System.out.println(list.size()); // 5
// contains(params) : ArrayList가 params를 포함하고 있는지 여부
System.out.println(list.contains("Hyundai")); // false
// get : 특정 요소에 접근
System.out.println(list.get(2)); // Samsung
// set(index,element) :인덱스에 위치한 값을 교체
list.set(2, "Hyundai");
System.out.println(list); // [Google, Amazon, Hyundai, Apple, Toss]
// indexOf : 요소의 인덱스값 찾기
System.out.println(list.indexOf("Samsung"));// 있으면 index값, 없으면 -1 //-1
// remove : 요소 삭제
list.remove("Apple");
System.out.println(list); // [Google, Amazon, Hyundai, Toss]
// isEmpty : ArrayList가비어있는지 확인
System.out.println(list.isEmpty()); // false
}
}
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayListPrac {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Scanner scan = new Scanner(System.in);
while (true) {
System.out.println("문자를 입력해주세요. : ");
String text = scan.nextLine();
if ("exit".equals(text)) {
break;
}
list.add(text);
}
for (String result : list) {
System.out.println("끝났습니다\n" + result);
}
scan.close();
}
}
컴파일 오류와 다르다!
ArithmeticException
: 숫자를 0으로 나누는 경우 ArrayIndexOutOfBoundsException
: 배열의 인덱스 범위를 벗어나는 경우InputMismatchException
: 정수를 입력받도록 작성한 코드에 문자열을 입력한 경우import java.util.InputMismatchException;
가 필요하다.NullPointerException
: 참조 변수가 null인 상태에서 필드나 메소드에 접근한 경우어느 언어든 중요한 개념인 배열과 예외처리에 대해 공부했다.
예제를 여러번 따라하면서 적응되도록 해봐야겠다.!