JAVA 프로그래밍에 여러 개의 변수르 같은 곳에 저장하고 싶을 때 기본적으로 배열이라는 변수에 저장을 한다.
배열[Array] - <사용시 import java.util.Arrays; 를 작성해야한다>
선언법
일반적인 선언 | 2번째 선언방식 |
int[] intArray; long[] longArray; double[] doubleArray; char[] charArray; String[] stringArray; |
int intArray[]; // 정수 배열 long longArray[]; double doubleArray[]; // 실수 배열 char charArray[]; // 문자 배열 String stringArray[]; // 문자열 배열 |
순회 - 배열안에 담긴 변수들을 하나씩 꺼내는 조회하는 것
얕은 복사 | 깊은 복사 |
실제 값이 아닌 주소 값만 복사 [비유적으로 pc와 핸드폰의 카톡에서 동시에 사용해도 계정은 하나인것과 같다] |
실제 값을 가진 배열의 기본형 값을 꺼내 복사 |
nt[] a = { 1, 2, 3, 4 }; int[] b = a; // 얕은 복사 b[0] = 3; // b 배열의 0번째 순번값을 3으로 수정했습니다. (1 -> 3) System.out.println(a[0]); // 출력 3 <- a 배열의 0번째 순번값도 3으로 조회됩니다. |
int[] a = { 1, 2, 3, 4 }; int[] b = new int[a.length]; for (int i = 0; i < a.length; i++) { b[i] = a[i]; // 깊은 복사 } |
// 깊은 복사 메서드 // 1. clone() 메서드 int[] a = { 1, 2, 3, 4 }; int[] b = a.clone(); // 가장 간단한 방법입니다. // 하지만, clone() 메서드는 2차원이상 배열에서는 얕은 복사로 동작합니다!! import java.util.Arrays; public class Main { public static void main(String[] args) { // 2. Arrays.copyOf() 메서드 int[] a = { 1, 2, 3, 4 }; int[] b = Arrays.copyOf(a, a.length); // 배열과 함께 length값도 같이 넣어줍니다. } } |
String 배열
- String 배열 선언과 생성
// String 배열을 아래와 같이 선언과 생성할 수 있습니다.
String[] stringArray = new String[3];
- String 배열의 초기화
// 선언 후 하나씩 초기화 할 수 있습니다.
String[] stringArray = new String[3];
stringArray[0] = "val1";
stringArray[1] = "val2";
stringArray[2] = "val3";
// 선언과 동시에 초기화 할 수 있습니다.
String[] stringArray1 = new String[]{"val1", "val2", "val3"};
String[] stringArray2 = {"val1", "val2", "val3"};
- String 기능 활용
메서드
|
응답값 타입
|
설명
|
length()
|
int
|
문자열의 길이를 반환한다.
|
charAt(int index)
|
char
|
문자열에서 해당 index의 문자를 반환한다.
|
substring(int from, int to)
|
String
|
문자열에서 해당 범위(from~to)에 있는 문자열을 반환한다. (to는 범위에 포함되지 않음)
|
equals(String str)
|
boolean
|
문자열의 내용이 같은지 확인한다. 같으면 결과는 true, 다르면 false가 된다.
|
toCharArray()
|
char[]
|
문자열을 문자배열(char[])로 변환해서 반환한다.
|
new String(char[] charArr)
|
String
|
문자배열(char[]) 을 받아서 String으로 복사해서 반환한다.
|
- ArrayList
ArrayList | 배열(Array)처럼 크기가 정해져 있지 않고 필요할 때마다 크기가 점점 더 늘어납니다. |
선언 | ArrayList<Integer> intList 형태로 선언합니다. |
생성 | new ArrayList<Integer>(); 형태로 생성합니다. |
초기화 | 사이즈를 지정하는 것이 없기 때문에 초기화가 필요 없습니다. |
값 추가 | intList.add({추가할 값}) 형태로 값을 추가합니다. |
값 수정 | intList.set({수정할 순번}, {수정할 값}) 형태로 값을 수정합니다. |
값 삭제 | intList.remove({삭제할 순번}) 형태로 값을 삭제합니다. |
전체 출력 | intList.toString() 형태로 전체 값을 대괄호[]로 묶어서 출력합니다. |
전체 제거 | intList.clear() 형태로 전체 값을 삭제합니다. |
- LinkedList
LinkedList | 기본적인 기능은 ArrayList 와 동일하지만 LinkedList는 값을 나누어 담기 때문에 모든 값을 조회하는 속도가 느립니다. 대신에, 값을 중간에 추가하거나 삭제할 때는 속도가 빠릅니다. |
선언 | LinkedList<Integer> linkedList 형태로 선언합니다. |
생성 | new LinkedList<Integer>(); 형태로 생성합니다. |
초기화 | 사이즈를 지정하는 것이 없기 때문에 초기화가 필요 없습니다. |
값 추가 | linkedList.add({추가할 값}) 형태로 값을 추가합니다. |
값 중간에 추가 | linkedList.add({추가할 순번}, {추가할 값}) 형태로 값을 중간에 추가합니다. |
값 수정 | linkedList.set({수정할 순번}, {수정할 값}) 형태로 값을 수정합니다. |
값 삭제 | linkedList.remove({삭제할 순번}) 형태로 값을 삭제합니다. |
전체 출력 | linkedList.toString() 형태로 전체 값을 대괄호[]로 묶어서 출력합니다. |
전체 제거 | linkedList.clear() 형태로 전체 값을 삭제합니다. |
- Stack
Stack | 나중에 들어간 것이 가장 먼저 나온다(Last-In-First-out) |
선언 | Stack<Integer> intStack 형태로 선언합니다. |
생성 | new Stack<Integer>(); 형태로 생성합니다. |
추가 | intStack.push({추가할 값}) 형태로 값을 추가합니다. |
조회 | intStack.peek() 형태로 맨 위값을 조회합니다. |
꺼내기 | intStack.pop() 형태로 맨 위값을 꺼냅니다. (꺼내고 나면 삭제됨) |
- Queue
Queue | First In First Out : 먼저 들어간 순서대로 값을 조회할 수 있다. |
선언 | Queue<Integer> intQueue 형태로 선언합니다. |
생성 | new LinkedList<Integer>(); 형태로 생성합니다. |
추가 | intQueue.add({추가할 값}) 형태로 값을 맨 위에 추가합니다. |
조회 | intQueue.peek() 형태로 맨 아래 값을 조회합니다. |
꺼내기 | intQueue.poll() 형태로 맨 아래 값을 꺼냅니다. (꺼내고 나면 삭제됨) |
- Set
Set | 순서가 보장되지 않는 대신 중복을 허용하지 않도록 유지할 수 있습니다 |
선언 | Set<Integer> intSet 형태로 선언합니다. |
생성 | new HashSet<Integer>(); 형태로 생성합니다. |
추가 | intSet.add({추가할 값}) 형태로 값을 맨 위에 추가합니다. |
조회 | intSet.remove({삭제할 값}) 형태로 삭제할 값을 직접 지정합니다. |
포함 확인 | intSet.contains({포함 확인 할 값}) 형태로 해당 값이 포함되어있는지 boolean 값으로 응답받습니다. |
- Set은 생성자가 없는 인터페이스라 바로 생성 불가
- 생성자가 존재하는 HashSet으로 바로 생성가능
- Map
Map | key-value 형태로 데이터를 저장하기 때문에 기존에 순번으로만 조회하던 방식에서, key 값을 기준으로 value를 조회할 수 있습니다. |
선언 | Map<String, Integer> intMap 형태로 Key타입과 Value타입을 지정해서 선언합니다. |
생성 | new HashMap<>(); 형태로 생성합니다. |
추가 | intMap.put({추가할 Key값},{추가할 Value값}) 형태로 Key에 Value값을 추가합니다. |
조회 | intMap.get({조회할 Key값}) 형태로 Key에 있는 Value값을 조회합니다. |
전체 key 조회 | intMap.keySet() 형태로 전체 key 값들을 조회합니다. |
전체 value 조회 | intMap.values() 형태로 전체 value 값들을 조회합니다. |
삭제 | intMap.remove({삭제할 Key값}) 형태로 Key에 있는 Value값을 삭제합니다. |
- 중복을 허용하지 않는다
🔎 length vs length() vs size() - 길이값 가져오기 1. length
|
'내일배움캠프 > TIL' 카테고리의 다른 글
[JAVA] 키오스크 트레블 슈팅 Lv6 (0) | 2025.01.20 |
---|---|
[JAVA] 키오스크 트레블 슈팅 Lv3~Lv4 (0) | 2025.01.20 |
[JAVA] 키오스크 트레블 슈팅 Lv1~Lv2 (0) | 2025.01.16 |
[JAVA]_클래스 기초 다시 익히기 (0) | 2025.01.14 |
[Java]_제네릭(Generic)이란?... (0) | 2025.01.10 |